From 098d163a6e70689789700faf27f12999f32d2f82 Mon Sep 17 00:00:00 2001 From: Awni Hannun Date: Thu, 6 Jun 2024 20:28:06 -0700 Subject: [PATCH] docs update --- docs/build/html/.buildinfo | 2 +- docs/build/html/_sources/index.rst | 2 + docs/build/html/_sources/install.rst | 6 +- .../python/_autosummary/mlx.core.array.rst | 1 + .../_autosummary/mlx.core.block_sparse_mm.rst | 6 - .../mlx.core.distributed.Group.rst | 25 + .../mlx.core.distributed.all_gather.rst | 6 + .../mlx.core.distributed.all_sum.rst | 6 + .../mlx.core.distributed.init.rst | 6 + .../mlx.core.distributed.is_available.rst | 6 + .../python/_autosummary/mlx.core.view.rst | 6 + .../html/_sources/python/distributed.rst | 19 + .../python/nn/_autosummary/mlx.nn.GLU.rst | 16 + .../nn/_autosummary/mlx.nn.HardShrink.rst | 16 + .../nn/_autosummary/mlx.nn.HardTanh.rst | 16 + .../nn/_autosummary/mlx.nn.Hardswish.rst | 16 + .../nn/_autosummary/mlx.nn.LeakyReLU.rst | 16 + .../python/nn/_autosummary/mlx.nn.ReLU6.rst | 16 + .../python/nn/_autosummary/mlx.nn.Softmax.rst | 16 + .../python/nn/_autosummary/mlx.nn.Softmin.rst | 16 + .../nn/_autosummary/mlx.nn.Softplus.rst | 16 + .../nn/_autosummary/mlx.nn.Softsign.rst | 16 + .../python/nn/_autosummary/mlx.nn.Tanh.rst | 16 + .../mlx.nn.hard_shrink.rst | 11 + .../mlx.nn.hard_tanh.rst | 11 + .../_autosummary_functions/mlx.nn.softmin.rst | 11 + .../html/_sources/python/nn/functions.rst | 3 + docs/build/html/_sources/python/nn/layers.rst | 11 + docs/build/html/_sources/python/ops.rst | 1 + .../build/html/_sources/usage/distributed.rst | 166 + docs/build/html/_sources/usage/numpy.rst | 6 +- .../html/_static/documentation_options.js | 2 +- docs/build/html/allocator_8h.html | 124 + docs/build/html/allocator_8h_source.html | 191 + docs/build/html/annotated.html | 469 + docs/build/html/array_8h.html | 138 + docs/build/html/array_8h_source.html | 842 + docs/build/html/atomic_8h.html | 520 + docs/build/html/atomic_8h_source.html | 477 + .../html/backend_2accelerate_2utils_8h.html | 107 + .../backend_2accelerate_2utils_8h_source.html | 134 + docs/build/html/backend_2common_2ops_8h.html | 234 + .../html/backend_2common_2ops_8h_source.html | 1218 ++ .../build/html/backend_2common_2utils_8h.html | 121 + .../backend_2common_2utils_8h_source.html | 236 + .../html/backend_2metal_2allocator_8h.html | 161 + .../backend_2metal_2allocator_8h_source.html | 221 + .../build/html/backend_2metal_2device_8h.html | 135 + .../backend_2metal_2device_8h_source.html | 389 + .../html/backend_2metal_2jit_2fft_8h.html | 240 + .../backend_2metal_2jit_2fft_8h_source.html | 149 + .../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 | 276 + .../html/backend_2metal_2kernels_2fft_8h.html | 913 + ...ackend_2metal_2kernels_2fft_8h_source.html | 647 + ...nd_2metal_2kernels_2reduction_2ops_8h.html | 142 + ...al_2kernels_2reduction_2ops_8h_source.html | 379 + ..._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 | 884 + ...kend_2metal_2kernels_2utils_8h_source.html | 493 + docs/build/html/backend_2metal_2utils_8h.html | 102 + .../html/backend_2metal_2utils_8h_source.html | 257 + docs/build/html/bc_s.png | Bin 0 -> 676 bytes docs/build/html/bc_sd.png | Bin 0 -> 635 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 + .../html/class_m_p_s_1_1_kernel-members.html | 92 + docs/build/html/class_m_p_s_1_1_kernel.html | 144 + docs/build/html/class_m_p_s_1_1_kernel.png | Bin 0 -> 656 bytes .../html/class_m_p_s_1_1_matrix-members.html | 93 + docs/build/html/class_m_p_s_1_1_matrix.html | 183 + docs/build/html/class_m_p_s_1_1_matrix.png | Bin 0 -> 665 bytes ...s_m_p_s_1_1_matrix_descriptor-members.html | 93 + .../class_m_p_s_1_1_matrix_descriptor.html | 221 + .../class_m_p_s_1_1_matrix_descriptor.png | Bin 0 -> 813 bytes ...p_s_1_1_matrix_multiplication-members.html | 98 + ...class_m_p_s_1_1_matrix_multiplication.html | 318 + .../class_m_p_s_1_1_matrix_multiplication.png | Bin 0 -> 1041 bytes ..._matrix_vector_multiplication-members.html | 93 + ..._p_s_1_1_matrix_vector_multiplication.html | 213 + ...m_p_s_1_1_matrix_vector_multiplication.png | Bin 0 -> 1145 bytes .../html/class_m_p_s_1_1_vector-members.html | 93 + docs/build/html/class_m_p_s_1_1_vector.html | 183 + docs/build/html/class_m_p_s_1_1_vector.png | Bin 0 -> 658 bytes ...s_m_p_s_1_1_vector_descriptor-members.html | 92 + .../class_m_p_s_1_1_vector_descriptor.html | 178 + .../class_m_p_s_1_1_vector_descriptor.png | Bin 0 -> 794 bytes docs/build/html/classes.html | 152 + .../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 0 -> 872 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 0 -> 874 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 0 -> 905 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 0 -> 907 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 0 -> 897 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 0 -> 909 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 0 -> 895 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 0 -> 901 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 0 -> 895 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 0 -> 913 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 0 -> 901 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 0 -> 936 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 0 -> 932 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 0 -> 919 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 0 -> 917 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 0 -> 918 bytes ...lx_1_1core_1_1_bitwise_binary-members.html | 121 + .../classmlx_1_1core_1_1_bitwise_binary.html | 422 + .../classmlx_1_1core_1_1_bitwise_binary.png | Bin 0 -> 937 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 0 -> 966 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 0 -> 905 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 0 -> 864 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 0 -> 909 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 0 -> 546 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 0 -> 914 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 0 -> 929 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 0 -> 907 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 0 -> 892 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 0 -> 875 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 0 -> 888 bytes ...smlx_1_1core_1_1_custom_v_j_p-members.html | 107 + .../classmlx_1_1core_1_1_custom_v_j_p.html | 320 + .../classmlx_1_1core_1_1_custom_v_j_p.png | Bin 0 -> 575 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 0 -> 548 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 0 -> 536 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 0 -> 897 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 0 -> 893 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 0 -> 861 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 0 -> 880 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 0 -> 875 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 0 -> 883 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 0 -> 847 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 0 -> 866 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 0 -> 852 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 0 -> 893 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 0 -> 920 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 0 -> 922 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 0 -> 910 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 0 -> 945 bytes .../classmlx_1_1core_1_1_inverse-members.html | 115 + .../html/classmlx_1_1core_1_1_inverse.html | 323 + .../html/classmlx_1_1core_1_1_inverse.png | Bin 0 -> 884 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 0 -> 867 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 0 -> 926 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 0 -> 872 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 0 -> 866 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 0 -> 884 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 0 -> 943 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 0 -> 930 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 0 -> 918 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 0 -> 920 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 0 -> 885 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 0 -> 901 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 0 -> 892 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 0 -> 909 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 0 -> 929 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 0 -> 916 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 0 -> 991 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 0 -> 874 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 0 -> 888 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 0 -> 900 bytes ...lassmlx_1_1core_1_1_primitive-members.html | 106 + .../html/classmlx_1_1core_1_1_primitive.html | 632 + .../html/classmlx_1_1core_1_1_primitive.png | Bin 0 -> 4486 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 0 -> 520 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 0 -> 975 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 0 -> 920 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 0 -> 895 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 0 -> 917 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 0 -> 910 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 0 -> 881 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 0 -> 520 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 0 -> 884 bytes .../classmlx_1_1core_1_1_scatter-members.html | 121 + .../html/classmlx_1_1core_1_1_scatter.html | 444 + .../html/classmlx_1_1core_1_1_scatter.png | Bin 0 -> 901 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 0 -> 884 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 0 -> 906 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 0 -> 890 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 0 -> 864 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 0 -> 870 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 0 -> 884 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 0 -> 918 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 0 -> 894 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 0 -> 870 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 0 -> 527 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 0 -> 887 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 0 -> 906 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 0 -> 934 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 0 -> 903 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 0 -> 875 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 0 -> 879 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 0 -> 914 bytes ...x_1_1core_1_1_unary_primitive-members.html | 114 + .../classmlx_1_1core_1_1_unary_primitive.html | 535 + .../classmlx_1_1core_1_1_unary_primitive.png | Bin 0 -> 32689 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 0 -> 876 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 0 -> 882 bytes ...re_1_1allocator_1_1_allocator-members.html | 98 + ...lx_1_1core_1_1allocator_1_1_allocator.html | 338 + ...mlx_1_1core_1_1allocator_1_1_allocator.png | Bin 0 -> 1087 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 | 99 + ...ore_1_1allocator_1_1_common_allocator.html | 219 + ...core_1_1allocator_1_1_common_allocator.png | Bin 0 -> 724 bytes .../classmlx_1_1core_1_1array-members.html | 159 + .../build/html/classmlx_1_1core_1_1array.html | 2000 ++ ...1_1distributed_1_1_all_gather-members.html | 110 + ...1_1core_1_1distributed_1_1_all_gather.html | 353 + ..._1_1core_1_1distributed_1_1_all_gather.png | Bin 0 -> 1072 bytes ...1_1distributed_1_1_all_reduce-members.html | 116 + ...1_1core_1_1distributed_1_1_all_reduce.html | 405 + ..._1_1core_1_1distributed_1_1_all_reduce.png | Bin 0 -> 1062 bytes ...istributed_1_1_dist_primitive-members.html | 108 + ...ore_1_1distributed_1_1_dist_primitive.html | 239 + ...core_1_1distributed_1_1_dist_primitive.png | Bin 0 -> 1477 bytes ...lx_1_1core_1_1fast_1_1_custom-members.html | 107 + .../classmlx_1_1core_1_1fast_1_1_custom.html | 306 + .../classmlx_1_1core_1_1fast_1_1_custom.png | Bin 0 -> 2664 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 0 -> 951 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 0 -> 994 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 0 -> 927 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 0 -> 981 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 0 -> 863 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 0 -> 1075 bytes ...1_1core_1_1io_1_1_file_reader-members.html | 98 + ...lassmlx_1_1core_1_1io_1_1_file_reader.html | 346 + ...classmlx_1_1core_1_1io_1_1_file_reader.png | Bin 0 -> 642 bytes ...1_1core_1_1io_1_1_file_writer-members.html | 98 + ...lassmlx_1_1core_1_1io_1_1_file_writer.html | 346 + ...classmlx_1_1core_1_1io_1_1_file_writer.png | Bin 0 -> 612 bytes ...smlx_1_1core_1_1io_1_1_reader-members.html | 96 + .../classmlx_1_1core_1_1io_1_1_reader.html | 291 + .../classmlx_1_1core_1_1io_1_1_reader.png | Bin 0 -> 647 bytes ...smlx_1_1core_1_1io_1_1_writer-members.html | 96 + .../classmlx_1_1core_1_1io_1_1_writer.html | 291 + .../classmlx_1_1core_1_1io_1_1_writer.png | Bin 0 -> 619 bytes ...x_1_1core_1_1metal_1_1_device-members.html | 112 + .../classmlx_1_1core_1_1metal_1_1_device.html | 635 + ..._1_1metal_1_1_metal_allocator-members.html | 106 + ..._1_1core_1_1metal_1_1_metal_allocator.html | 388 + ...x_1_1core_1_1metal_1_1_metal_allocator.png | Bin 0 -> 680 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 0 -> 1040 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 0 -> 1037 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 0 -> 1032 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 0 -> 132 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 | 767 + 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_2reduce_8h.html | 136 + docs/build/html/common_2reduce_8h_source.html | 484 + docs/build/html/common_2slicing_8h.html | 108 + .../build/html/common_2slicing_8h_source.html | 117 + docs/build/html/common_2ternary_8h.html | 103 + .../build/html/common_2ternary_8h_source.html | 327 + docs/build/html/common_2unary_8h.html | 103 + docs/build/html/common_2unary_8h_source.html | 230 + 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 | 141 +- docs/build/html/defines_8h.html | 237 + docs/build/html/defines_8h_source.html | 113 + docs/build/html/dev/extensions.html | 34 +- docs/build/html/dev/metal_debugger.html | 34 +- docs/build/html/device_8h.html | 117 + docs/build/html/device_8h_source.html | 139 + .../dir_1683daa6c50d5a1449f58a10604f9f12.html | 93 + .../dir_1d446c9bd3c99228254c9484e0bc5c06.html | 97 + .../dir_2193406f5b2eae6fc53753d8a9a80df3.html | 95 + .../dir_23833761034051b43bb6c170b56e2cce.html | 97 + .../dir_4336740ec0075891704443b417fef6cb.html | 121 + .../dir_47795aa8999234f6f402f7e89d34d08e.html | 99 + .../dir_6379e541ea5051a09bc0e3fdd92fcd3b.html | 95 + .../dir_6768c99e6145fb9510ccdb40db8ede25.html | 106 + .../dir_70a37effa88bcbd6b791977fa1e64356.html | 154 + .../dir_76215a6c54e2b67053e723fc2395583c.html | 102 + .../dir_86b95e7b1d0d6e25466bb9213752d32f.html | 93 + .../dir_8c751ccfa9f494753d976761a9d60a84.html | 95 + .../dir_938ab0ecf10b8b860ff766c820f665fd.html | 148 + .../dir_9c555e3d0f5b8c3fb3a7397c81fd5bf9.html | 97 + .../dir_ad00dcd1517bfdbe01f68ec9b4eff877.html | 93 + .../dir_ba4426224ef60f409462a2a12fa18f06.html | 97 + .../dir_d0c977ea65824390717cdb7efc36c157.html | 126 + .../dir_df9494e83ef22ae6150a0e080d9709ed.html | 104 + .../dir_f149b24a1b5be11cd70151abe517e3f8.html | 119 + .../dir_f60cd69d27fd3faa641c79056fff0e2d.html | 101 + docs/build/html/distributed_2ops_8h.html | 111 + .../html/distributed_2ops_8h_source.html | 111 + .../html/distributed_2primitives_8h.html | 113 + .../distributed_2primitives_8h_source.html | 239 + docs/build/html/distributed_8h.html | 127 + docs/build/html/distributed_8h_source.html | 160 + 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 | 1301 ++ docs/build/html/dtype_8h.html | 181 + docs/build/html/dtype_8h_source.html | 282 + docs/build/html/dynsections.js | 194 + 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 | 34 +- docs/build/html/examples/llama-inference.html | 34 +- docs/build/html/examples/mlp.html | 34 +- docs/build/html/expm1f_8h.html | 139 + docs/build/html/expm1f_8h_source.html | 189 + docs/build/html/fast_8h.html | 116 + docs/build/html/fast_8h_source.html | 143 + docs/build/html/fast__primitives_8h.html | 120 + .../html/fast__primitives_8h_source.html | 396 + 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 | 131 + docs/build/html/functions_b.html | 119 + docs/build/html/functions_c.html | 123 + docs/build/html/functions_d.html | 112 + docs/build/html/functions_e.html | 106 + docs/build/html/functions_enum.html | 90 + docs/build/html/functions_eval.html | 146 + docs/build/html/functions_f.html | 102 + docs/build/html/functions_func.html | 86 + docs/build/html/functions_func_a.html | 118 + docs/build/html/functions_func_b.html | 94 + docs/build/html/functions_func_c.html | 115 + docs/build/html/functions_func_d.html | 104 + docs/build/html/functions_func_e.html | 102 + docs/build/html/functions_func_f.html | 92 + docs/build/html/functions_func_g.html | 106 + docs/build/html/functions_func_h.html | 85 + docs/build/html/functions_func_i.html | 101 + docs/build/html/functions_func_j.html | 85 + docs/build/html/functions_func_k.html | 85 + docs/build/html/functions_func_l.html | 108 + docs/build/html/functions_func_m.html | 99 + docs/build/html/functions_func_n.html | 96 + docs/build/html/functions_func_o.html | 106 + docs/build/html/functions_func_p.html | 99 + docs/build/html/functions_func_q.html | 87 + docs/build/html/functions_func_r.html | 110 + docs/build/html/functions_func_s.html | 151 + docs/build/html/functions_func_t.html | 98 + docs/build/html/functions_func_u.html | 87 + docs/build/html/functions_func_v.html | 90 + docs/build/html/functions_func_w.html | 89 + docs/build/html/functions_func_~.html | 98 + docs/build/html/functions_g.html | 114 + docs/build/html/functions_h.html | 85 + docs/build/html/functions_i.html | 115 + docs/build/html/functions_j.html | 88 + docs/build/html/functions_k.html | 89 + docs/build/html/functions_l.html | 120 + docs/build/html/functions_m.html | 112 + docs/build/html/functions_n.html | 105 + docs/build/html/functions_o.html | 115 + docs/build/html/functions_p.html | 102 + docs/build/html/functions_q.html | 89 + docs/build/html/functions_r.html | 122 + docs/build/html/functions_rela.html | 85 + docs/build/html/functions_s.html | 172 + docs/build/html/functions_t.html | 124 + docs/build/html/functions_type.html | 96 + docs/build/html/functions_u.html | 88 + docs/build/html/functions_v.html | 96 + docs/build/html/functions_vars.html | 91 + docs/build/html/functions_vars_b.html | 108 + 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 | 92 + docs/build/html/functions_vars_i.html | 97 + 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 | 93 + docs/build/html/functions_vars_o.html | 89 + docs/build/html/functions_vars_p.html | 86 + docs/build/html/functions_vars_q.html | 86 + docs/build/html/functions_vars_r.html | 93 + docs/build/html/functions_vars_s.html | 106 + docs/build/html/functions_vars_t.html | 107 + 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 | 98 + docs/build/html/gather_8h.html | 163 + docs/build/html/gather_8h_source.html | 144 + 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/genindex.html | 130 +- docs/build/html/gguf_8h.html | 112 + docs/build/html/gguf_8h_source.html | 119 + docs/build/html/globals.html | 89 + docs/build/html/globals_a.html | 92 + docs/build/html/globals_b.html | 114 + docs/build/html/globals_c.html | 110 + docs/build/html/globals_d.html | 91 + docs/build/html/globals_defs.html | 197 + docs/build/html/globals_e.html | 97 + docs/build/html/globals_f.html | 92 + docs/build/html/globals_func.html | 85 + docs/build/html/globals_func_a.html | 87 + docs/build/html/globals_func_b.html | 98 + docs/build/html/globals_func_c.html | 103 + docs/build/html/globals_func_e.html | 96 + docs/build/html/globals_func_f.html | 87 + docs/build/html/globals_func_g.html | 91 + docs/build/html/globals_func_i.html | 87 + docs/build/html/globals_func_l.html | 87 + docs/build/html/globals_func_m.html | 98 + docs/build/html/globals_func_o.html | 100 + docs/build/html/globals_func_p.html | 87 + docs/build/html/globals_func_r.html | 102 + docs/build/html/globals_func_s.html | 91 + docs/build/html/globals_func_t.html | 91 + docs/build/html/globals_func_u.html | 86 + docs/build/html/globals_func_w.html | 86 + docs/build/html/globals_g.html | 93 + docs/build/html/globals_h.html | 92 + docs/build/html/globals_i.html | 95 + docs/build/html/globals_l.html | 87 + docs/build/html/globals_m.html | 107 + docs/build/html/globals_n.html | 86 + docs/build/html/globals_o.html | 101 + docs/build/html/globals_p.html | 107 + docs/build/html/globals_r.html | 130 + docs/build/html/globals_s.html | 105 + docs/build/html/globals_t.html | 92 + docs/build/html/globals_type.html | 86 + docs/build/html/globals_u.html | 90 + docs/build/html/globals_vars.html | 226 + 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 | 9493 +++++++++ docs/build/html/half__types_8h.html | 197 + docs/build/html/half__types_8h_source.html | 158 + docs/build/html/hierarchy.html | 464 + docs/build/html/includes_8h.html | 155 + docs/build/html/includes_8h_source.html | 153 + docs/build/html/index.html | 36 +- docs/build/html/install.html | 40 +- docs/build/html/io_8h.html | 144 + docs/build/html/io_8h_source.html | 161 + docs/build/html/jit_2indexing_8h.html | 144 + docs/build/html/jit_2indexing_8h_source.html | 175 + 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_2sort_8h.html | 144 + docs/build/html/jit_2sort_8h_source.html | 175 + 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_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 | 293 + docs/build/html/kernels_2sort_8h.html | 502 + docs/build/html/kernels_2sort_8h_source.html | 831 + ...2steel_2conv_2kernels_2steel__conv_8h.html | 158 + ...2conv_2kernels_2steel__conv_8h_source.html | 281 + .../html/kernels_2steel_2gemm_2gemm_8h.html | 112 + .../kernels_2steel_2gemm_2gemm_8h_source.html | 413 + docs/build/html/kernels_8h.html | 143 + docs/build/html/kernels_8h_source.html | 286 + docs/build/html/lapack__helper_8h.html | 116 + docs/build/html/lapack__helper_8h_source.html | 115 + docs/build/html/linalg_8h.html | 131 + docs/build/html/linalg_8h_source.html | 172 + docs/build/html/load_8h.html | 116 + docs/build/html/load_8h_source.html | 282 + 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 | 115 + docs/build/html/matmul_8h_source.html | 154 + docs/build/html/menu.js | 134 + docs/build/html/menudata.js | 268 + docs/build/html/metal_2binary_8h.html | 112 + docs/build/html/metal_2binary_8h_source.html | 132 + docs/build/html/metal_2copy_8h.html | 116 + docs/build/html/metal_2copy_8h_source.html | 140 + docs/build/html/metal_2jit_2arange_8h.html | 127 + .../html/metal_2jit_2arange_8h_source.html | 102 + docs/build/html/metal_2jit_2binary_8h.html | 120 + .../html/metal_2jit_2binary_8h_source.html | 180 + .../html/metal_2jit_2binary__two_8h.html | 120 + .../metal_2jit_2binary__two_8h_source.html | 191 + docs/build/html/metal_2jit_2copy_8h.html | 120 + .../html/metal_2jit_2copy_8h_source.html | 193 + docs/build/html/metal_2jit_2reduce_8h.html | 175 + .../html/metal_2jit_2reduce_8h_source.html | 263 + docs/build/html/metal_2jit_2ternary_8h.html | 120 + .../html/metal_2jit_2ternary_8h_source.html | 173 + docs/build/html/metal_2jit_2unary_8h.html | 134 + .../html/metal_2jit_2unary_8h_source.html | 109 + .../build/html/metal_2kernels_2arange_8h.html | 132 + .../metal_2kernels_2arange_8h_source.html | 104 + .../build/html/metal_2kernels_2binary_8h.html | 505 + .../metal_2kernels_2binary_8h_source.html | 236 + .../html/metal_2kernels_2binary__two_8h.html | 550 + ...metal_2kernels_2binary__two_8h_source.html | 263 + docs/build/html/metal_2kernels_2copy_8h.html | 593 + .../html/metal_2kernels_2copy_8h_source.html | 276 + .../build/html/metal_2kernels_2reduce_8h.html | 92 + .../metal_2kernels_2reduce_8h_source.html | 99 + .../html/metal_2kernels_2ternary_8h.html | 452 + .../metal_2kernels_2ternary_8h_source.html | 216 + docs/build/html/metal_2kernels_2unary_8h.html | 173 + .../html/metal_2kernels_2unary_8h_source.html | 120 + docs/build/html/metal_2reduce_8h.html | 112 + docs/build/html/metal_2reduce_8h_source.html | 145 + 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 | 104 + docs/build/html/mlx_8h_source.html | 126 + docs/build/html/mma_8h.html | 110 + docs/build/html/mma_8h_source.html | 512 + docs/build/html/mps_2gemm_8h.html | 235 + docs/build/html/mps_2gemm_8h_source.html | 572 + docs/build/html/namespace_m_p_s.html | 160 + docs/build/html/namespace_m_t_l.html | 91 + .../html/namespace_m_t_l_1_1_private.html | 97 + ...namespace_m_t_l_1_1_private_1_1_class.html | 227 + ...espace_m_t_l_1_1_private_1_1_selector.html | 439 + docs/build/html/namespacemembers.html | 86 + docs/build/html/namespacemembers_a.html | 124 + docs/build/html/namespacemembers_b.html | 103 + docs/build/html/namespacemembers_c.html | 134 + docs/build/html/namespacemembers_d.html | 107 + docs/build/html/namespacemembers_e.html | 99 + docs/build/html/namespacemembers_enum.html | 86 + docs/build/html/namespacemembers_eval.html | 93 + docs/build/html/namespacemembers_f.html | 111 + docs/build/html/namespacemembers_func.html | 86 + docs/build/html/namespacemembers_func_a.html | 123 + docs/build/html/namespacemembers_func_b.html | 99 + docs/build/html/namespacemembers_func_c.html | 122 + docs/build/html/namespacemembers_func_d.html | 100 + docs/build/html/namespacemembers_func_e.html | 98 + docs/build/html/namespacemembers_func_f.html | 106 + docs/build/html/namespacemembers_func_g.html | 123 + docs/build/html/namespacemembers_func_i.html | 105 + docs/build/html/namespacemembers_func_j.html | 85 + docs/build/html/namespacemembers_func_k.html | 86 + docs/build/html/namespacemembers_func_l.html | 102 + docs/build/html/namespacemembers_func_m.html | 102 + docs/build/html/namespacemembers_func_n.html | 96 + docs/build/html/namespacemembers_func_o.html | 112 + docs/build/html/namespacemembers_func_p.html | 100 + docs/build/html/namespacemembers_func_q.html | 87 + docs/build/html/namespacemembers_func_r.html | 110 + docs/build/html/namespacemembers_func_s.html | 154 + docs/build/html/namespacemembers_func_t.html | 108 + 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 | 130 + docs/build/html/namespacemembers_i.html | 113 + docs/build/html/namespacemembers_j.html | 85 + docs/build/html/namespacemembers_k.html | 86 + docs/build/html/namespacemembers_l.html | 102 + docs/build/html/namespacemembers_m.html | 104 + docs/build/html/namespacemembers_n.html | 98 + docs/build/html/namespacemembers_o.html | 112 + docs/build/html/namespacemembers_p.html | 100 + docs/build/html/namespacemembers_q.html | 87 + docs/build/html/namespacemembers_r.html | 111 + docs/build/html/namespacemembers_s.html | 160 + docs/build/html/namespacemembers_t.html | 108 + docs/build/html/namespacemembers_type.html | 98 + docs/build/html/namespacemembers_u.html | 95 + docs/build/html/namespacemembers_v.html | 93 + docs/build/html/namespacemembers_vars.html | 156 + 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 | 17631 ++++++++++++++++ .../namespacemlx_1_1core_1_1allocator.html | 180 + .../html/namespacemlx_1_1core_1_1detail.html | 439 + .../namespacemlx_1_1core_1_1distributed.html | 201 + ...emlx_1_1core_1_1distributed_1_1detail.html | 169 + .../html/namespacemlx_1_1core_1_1fast.html | 277 + .../html/namespacemlx_1_1core_1_1fft.html | 1082 + .../html/namespacemlx_1_1core_1_1io.html | 101 + .../html/namespacemlx_1_1core_1_1linalg.html | 442 + .../html/namespacemlx_1_1core_1_1metal.html | 975 + .../html/namespacemlx_1_1core_1_1random.html | 1149 + .../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 | 376 + docs/build/html/nav_f.png | Bin 0 -> 153 bytes docs/build/html/nav_fd.png | Bin 0 -> 169 bytes docs/build/html/nav_g.png | Bin 0 -> 95 bytes docs/build/html/nav_h.png | Bin 0 -> 98 bytes docs/build/html/nav_hd.png | Bin 0 -> 114 bytes docs/build/html/objects.inv | Bin 24081 -> 24872 bytes docs/build/html/open.png | Bin 0 -> 123 bytes docs/build/html/ops_8h.html | 894 + docs/build/html/ops_8h_source.html | 1473 ++ 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 | 423 + docs/build/html/primitives_8h_source.html | 2943 +++ .../python/_autosummary/mlx.core.Device.html | 34 +- .../python/_autosummary/mlx.core.Dtype.html | 34 +- .../_autosummary/mlx.core.DtypeCategory.html | 34 +- .../python/_autosummary/mlx.core.Stream.html | 34 +- .../python/_autosummary/mlx.core.abs.html | 34 +- .../python/_autosummary/mlx.core.add.html | 34 +- .../python/_autosummary/mlx.core.addmm.html | 34 +- .../python/_autosummary/mlx.core.all.html | 34 +- .../_autosummary/mlx.core.allclose.html | 34 +- .../python/_autosummary/mlx.core.any.html | 34 +- .../python/_autosummary/mlx.core.arange.html | 34 +- .../python/_autosummary/mlx.core.arccos.html | 34 +- .../python/_autosummary/mlx.core.arccosh.html | 34 +- .../python/_autosummary/mlx.core.arcsin.html | 34 +- .../python/_autosummary/mlx.core.arcsinh.html | 34 +- .../python/_autosummary/mlx.core.arctan.html | 34 +- .../python/_autosummary/mlx.core.arctan2.html | 34 +- .../python/_autosummary/mlx.core.arctanh.html | 34 +- .../python/_autosummary/mlx.core.argmax.html | 34 +- .../python/_autosummary/mlx.core.argmin.html | 34 +- .../_autosummary/mlx.core.argpartition.html | 34 +- .../python/_autosummary/mlx.core.argsort.html | 34 +- .../python/_autosummary/mlx.core.array.T.html | 34 +- .../_autosummary/mlx.core.array.abs.html | 34 +- .../_autosummary/mlx.core.array.all.html | 34 +- .../_autosummary/mlx.core.array.any.html | 34 +- .../_autosummary/mlx.core.array.argmax.html | 34 +- .../_autosummary/mlx.core.array.argmin.html | 34 +- .../_autosummary/mlx.core.array.astype.html | 34 +- .../_autosummary/mlx.core.array.at.html | 34 +- .../_autosummary/mlx.core.array.cos.html | 34 +- .../_autosummary/mlx.core.array.cummax.html | 34 +- .../_autosummary/mlx.core.array.cummin.html | 34 +- .../_autosummary/mlx.core.array.cumprod.html | 34 +- .../_autosummary/mlx.core.array.cumsum.html | 34 +- .../_autosummary/mlx.core.array.diag.html | 34 +- .../_autosummary/mlx.core.array.diagonal.html | 34 +- .../_autosummary/mlx.core.array.dtype.html | 34 +- .../_autosummary/mlx.core.array.exp.html | 34 +- .../_autosummary/mlx.core.array.flatten.html | 34 +- .../python/_autosummary/mlx.core.array.html | 37 +- .../_autosummary/mlx.core.array.item.html | 34 +- .../_autosummary/mlx.core.array.itemsize.html | 34 +- .../_autosummary/mlx.core.array.log.html | 34 +- .../_autosummary/mlx.core.array.log10.html | 34 +- .../_autosummary/mlx.core.array.log1p.html | 34 +- .../_autosummary/mlx.core.array.log2.html | 34 +- .../mlx.core.array.logsumexp.html | 34 +- .../_autosummary/mlx.core.array.max.html | 34 +- .../_autosummary/mlx.core.array.mean.html | 34 +- .../_autosummary/mlx.core.array.min.html | 34 +- .../_autosummary/mlx.core.array.moveaxis.html | 34 +- .../_autosummary/mlx.core.array.nbytes.html | 34 +- .../_autosummary/mlx.core.array.ndim.html | 34 +- .../_autosummary/mlx.core.array.prod.html | 34 +- .../mlx.core.array.reciprocal.html | 34 +- .../_autosummary/mlx.core.array.reshape.html | 34 +- .../_autosummary/mlx.core.array.round.html | 34 +- .../_autosummary/mlx.core.array.rsqrt.html | 34 +- .../_autosummary/mlx.core.array.shape.html | 34 +- .../_autosummary/mlx.core.array.sin.html | 34 +- .../_autosummary/mlx.core.array.size.html | 34 +- .../_autosummary/mlx.core.array.split.html | 34 +- .../_autosummary/mlx.core.array.sqrt.html | 34 +- .../_autosummary/mlx.core.array.square.html | 34 +- .../_autosummary/mlx.core.array.squeeze.html | 34 +- .../_autosummary/mlx.core.array.sum.html | 34 +- .../_autosummary/mlx.core.array.swapaxes.html | 34 +- .../_autosummary/mlx.core.array.tolist.html | 34 +- .../mlx.core.array.transpose.html | 34 +- .../_autosummary/mlx.core.array.var.html | 34 +- .../_autosummary/mlx.core.array_equal.html | 34 +- .../_autosummary/mlx.core.as_strided.html | 34 +- .../_autosummary/mlx.core.atleast_1d.html | 34 +- .../_autosummary/mlx.core.atleast_2d.html | 34 +- .../_autosummary/mlx.core.atleast_3d.html | 34 +- .../_autosummary/mlx.core.bitwise_and.html | 34 +- .../_autosummary/mlx.core.bitwise_or.html | 34 +- .../_autosummary/mlx.core.bitwise_xor.html | 34 +- .../mlx.core.block_masked_mm.html | 34 +- .../_autosummary/mlx.core.broadcast_to.html | 34 +- .../python/_autosummary/mlx.core.ceil.html | 34 +- .../python/_autosummary/mlx.core.clip.html | 34 +- .../python/_autosummary/mlx.core.compile.html | 34 +- .../_autosummary/mlx.core.concatenate.html | 34 +- .../python/_autosummary/mlx.core.conj.html | 34 +- .../_autosummary/mlx.core.conjugate.html | 34 +- .../python/_autosummary/mlx.core.conv1d.html | 35 +- .../python/_autosummary/mlx.core.conv2d.html | 35 +- .../_autosummary/mlx.core.conv_general.html | 41 +- .../_autosummary/mlx.core.convolve.html | 34 +- .../python/_autosummary/mlx.core.cos.html | 34 +- .../python/_autosummary/mlx.core.cosh.html | 34 +- .../python/_autosummary/mlx.core.cummax.html | 34 +- .../python/_autosummary/mlx.core.cummin.html | 34 +- .../python/_autosummary/mlx.core.cumprod.html | 34 +- .../python/_autosummary/mlx.core.cumsum.html | 34 +- .../_autosummary/mlx.core.default_device.html | 34 +- .../_autosummary/mlx.core.default_stream.html | 34 +- .../python/_autosummary/mlx.core.degrees.html | 34 +- .../_autosummary/mlx.core.dequantize.html | 34 +- .../python/_autosummary/mlx.core.diag.html | 34 +- .../_autosummary/mlx.core.diagonal.html | 34 +- .../mlx.core.disable_compile.html | 34 +- .../mlx.core.distributed.Group.html | 975 + .../mlx.core.distributed.all_gather.html | 964 + .../mlx.core.distributed.all_sum.html | 963 + .../mlx.core.distributed.init.html | 959 + ...=> mlx.core.distributed.is_available.html} | 77 +- .../python/_autosummary/mlx.core.divide.html | 34 +- .../python/_autosummary/mlx.core.divmod.html | 34 +- .../_autosummary/mlx.core.enable_compile.html | 34 +- .../python/_autosummary/mlx.core.equal.html | 34 +- .../python/_autosummary/mlx.core.erf.html | 34 +- .../python/_autosummary/mlx.core.erfinv.html | 34 +- .../python/_autosummary/mlx.core.eval.html | 34 +- .../python/_autosummary/mlx.core.exp.html | 34 +- .../_autosummary/mlx.core.expand_dims.html | 34 +- .../python/_autosummary/mlx.core.expm1.html | 34 +- .../python/_autosummary/mlx.core.eye.html | 34 +- .../mlx.core.fast.layer_norm.html | 34 +- .../_autosummary/mlx.core.fast.rms_norm.html | 34 +- .../_autosummary/mlx.core.fast.rope.html | 34 +- ...ore.fast.scaled_dot_product_attention.html | 34 +- .../python/_autosummary/mlx.core.fft.fft.html | 34 +- .../_autosummary/mlx.core.fft.fft2.html | 34 +- .../_autosummary/mlx.core.fft.fftn.html | 34 +- .../_autosummary/mlx.core.fft.ifft.html | 34 +- .../_autosummary/mlx.core.fft.ifft2.html | 34 +- .../_autosummary/mlx.core.fft.ifftn.html | 34 +- .../_autosummary/mlx.core.fft.irfft.html | 34 +- .../_autosummary/mlx.core.fft.irfft2.html | 34 +- .../_autosummary/mlx.core.fft.irfftn.html | 34 +- .../_autosummary/mlx.core.fft.rfft.html | 34 +- .../_autosummary/mlx.core.fft.rfft2.html | 34 +- .../_autosummary/mlx.core.fft.rfftn.html | 34 +- .../python/_autosummary/mlx.core.flatten.html | 34 +- .../python/_autosummary/mlx.core.floor.html | 34 +- .../_autosummary/mlx.core.floor_divide.html | 34 +- .../python/_autosummary/mlx.core.full.html | 34 +- .../_autosummary/mlx.core.gather_mm.html | 34 +- .../_autosummary/mlx.core.gather_qmm.html | 34 +- .../python/_autosummary/mlx.core.grad.html | 34 +- .../python/_autosummary/mlx.core.greater.html | 34 +- .../_autosummary/mlx.core.greater_equal.html | 34 +- .../_autosummary/mlx.core.identity.html | 34 +- .../python/_autosummary/mlx.core.inner.html | 34 +- .../python/_autosummary/mlx.core.isclose.html | 34 +- .../python/_autosummary/mlx.core.isinf.html | 34 +- .../python/_autosummary/mlx.core.isnan.html | 34 +- .../_autosummary/mlx.core.isneginf.html | 34 +- .../_autosummary/mlx.core.isposinf.html | 34 +- .../_autosummary/mlx.core.issubdtype.html | 34 +- .../python/_autosummary/mlx.core.jvp.html | 34 +- .../_autosummary/mlx.core.left_shift.html | 34 +- .../python/_autosummary/mlx.core.less.html | 34 +- .../_autosummary/mlx.core.less_equal.html | 34 +- .../mlx.core.linalg.cholesky.html | 34 +- .../_autosummary/mlx.core.linalg.inv.html | 34 +- .../_autosummary/mlx.core.linalg.norm.html | 34 +- .../_autosummary/mlx.core.linalg.qr.html | 34 +- .../_autosummary/mlx.core.linalg.svd.html | 34 +- .../_autosummary/mlx.core.linspace.html | 34 +- .../python/_autosummary/mlx.core.load.html | 34 +- .../python/_autosummary/mlx.core.log.html | 34 +- .../python/_autosummary/mlx.core.log10.html | 34 +- .../python/_autosummary/mlx.core.log1p.html | 34 +- .../python/_autosummary/mlx.core.log2.html | 34 +- .../_autosummary/mlx.core.logaddexp.html | 34 +- .../_autosummary/mlx.core.logical_and.html | 34 +- .../_autosummary/mlx.core.logical_not.html | 34 +- .../_autosummary/mlx.core.logical_or.html | 34 +- .../_autosummary/mlx.core.logsumexp.html | 34 +- .../python/_autosummary/mlx.core.matmul.html | 34 +- .../python/_autosummary/mlx.core.max.html | 34 +- .../python/_autosummary/mlx.core.maximum.html | 34 +- .../python/_autosummary/mlx.core.mean.html | 34 +- .../_autosummary/mlx.core.meshgrid.html | 34 +- .../mlx.core.metal.clear_cache.html | 34 +- .../mlx.core.metal.device_info.html | 34 +- .../mlx.core.metal.get_active_memory.html | 34 +- .../mlx.core.metal.get_cache_memory.html | 34 +- .../mlx.core.metal.get_peak_memory.html | 34 +- .../mlx.core.metal.is_available.html | 34 +- .../mlx.core.metal.reset_peak_memory.html | 34 +- .../mlx.core.metal.set_cache_limit.html | 34 +- .../mlx.core.metal.set_memory_limit.html | 34 +- .../mlx.core.metal.start_capture.html | 34 +- .../mlx.core.metal.stop_capture.html | 34 +- .../python/_autosummary/mlx.core.min.html | 34 +- .../python/_autosummary/mlx.core.minimum.html | 34 +- .../_autosummary/mlx.core.moveaxis.html | 34 +- .../_autosummary/mlx.core.multiply.html | 34 +- .../_autosummary/mlx.core.negative.html | 34 +- .../_autosummary/mlx.core.new_stream.html | 34 +- .../_autosummary/mlx.core.not_equal.html | 34 +- .../python/_autosummary/mlx.core.ones.html | 34 +- .../_autosummary/mlx.core.ones_like.html | 34 +- .../python/_autosummary/mlx.core.outer.html | 34 +- .../python/_autosummary/mlx.core.pad.html | 34 +- .../_autosummary/mlx.core.partition.html | 34 +- .../python/_autosummary/mlx.core.power.html | 34 +- .../python/_autosummary/mlx.core.prod.html | 34 +- .../_autosummary/mlx.core.quantize.html | 34 +- .../mlx.core.quantized_matmul.html | 34 +- .../python/_autosummary/mlx.core.radians.html | 34 +- .../mlx.core.random.bernoulli.html | 34 +- .../mlx.core.random.categorical.html | 34 +- .../_autosummary/mlx.core.random.gumbel.html | 34 +- .../_autosummary/mlx.core.random.key.html | 34 +- .../mlx.core.random.multivariate_normal.html | 34 +- .../_autosummary/mlx.core.random.normal.html | 34 +- .../_autosummary/mlx.core.random.randint.html | 34 +- .../_autosummary/mlx.core.random.seed.html | 34 +- .../_autosummary/mlx.core.random.split.html | 34 +- .../mlx.core.random.truncated_normal.html | 34 +- .../_autosummary/mlx.core.random.uniform.html | 34 +- .../_autosummary/mlx.core.reciprocal.html | 34 +- .../_autosummary/mlx.core.remainder.html | 34 +- .../python/_autosummary/mlx.core.repeat.html | 34 +- .../python/_autosummary/mlx.core.reshape.html | 34 +- .../_autosummary/mlx.core.right_shift.html | 34 +- .../python/_autosummary/mlx.core.round.html | 34 +- .../python/_autosummary/mlx.core.rsqrt.html | 34 +- .../python/_autosummary/mlx.core.save.html | 34 +- .../_autosummary/mlx.core.save_gguf.html | 34 +- .../mlx.core.save_safetensors.html | 34 +- .../python/_autosummary/mlx.core.savez.html | 34 +- .../mlx.core.savez_compressed.html | 34 +- .../mlx.core.set_default_device.html | 34 +- .../mlx.core.set_default_stream.html | 34 +- .../python/_autosummary/mlx.core.sigmoid.html | 34 +- .../python/_autosummary/mlx.core.sign.html | 34 +- .../python/_autosummary/mlx.core.sin.html | 34 +- .../python/_autosummary/mlx.core.sinh.html | 34 +- .../python/_autosummary/mlx.core.softmax.html | 34 +- .../python/_autosummary/mlx.core.sort.html | 34 +- .../python/_autosummary/mlx.core.split.html | 34 +- .../python/_autosummary/mlx.core.sqrt.html | 34 +- .../python/_autosummary/mlx.core.square.html | 34 +- .../python/_autosummary/mlx.core.squeeze.html | 34 +- .../python/_autosummary/mlx.core.stack.html | 34 +- .../python/_autosummary/mlx.core.std.html | 34 +- .../_autosummary/mlx.core.stop_gradient.html | 34 +- .../_autosummary/mlx.core.subtract.html | 34 +- .../python/_autosummary/mlx.core.sum.html | 34 +- .../_autosummary/mlx.core.swapaxes.html | 34 +- .../_autosummary/mlx.core.synchronize.html | 34 +- .../python/_autosummary/mlx.core.take.html | 34 +- .../mlx.core.take_along_axis.html | 34 +- .../python/_autosummary/mlx.core.tan.html | 34 +- .../python/_autosummary/mlx.core.tanh.html | 34 +- .../_autosummary/mlx.core.tensordot.html | 34 +- .../python/_autosummary/mlx.core.tile.html | 34 +- .../python/_autosummary/mlx.core.topk.html | 34 +- .../python/_autosummary/mlx.core.trace.html | 34 +- .../_autosummary/mlx.core.transpose.html | 34 +- .../python/_autosummary/mlx.core.tri.html | 34 +- .../python/_autosummary/mlx.core.tril.html | 34 +- .../python/_autosummary/mlx.core.triu.html | 34 +- .../_autosummary/mlx.core.value_and_grad.html | 34 +- .../python/_autosummary/mlx.core.var.html | 40 +- .../python/_autosummary/mlx.core.view.html | 965 + .../python/_autosummary/mlx.core.vjp.html | 34 +- .../python/_autosummary/mlx.core.vmap.html | 34 +- .../python/_autosummary/mlx.core.where.html | 40 +- .../python/_autosummary/mlx.core.zeros.html | 34 +- .../_autosummary/mlx.core.zeros_like.html | 34 +- .../python/_autosummary/mlx.nn.quantize.html | 34 +- .../_autosummary/mlx.nn.value_and_grad.html | 34 +- .../mlx.optimizers.clip_grad_norm.html | 40 +- .../_autosummary/mlx.utils.tree_flatten.html | 34 +- .../_autosummary/mlx.utils.tree_map.html | 34 +- .../mlx.utils.tree_map_with_path.html | 34 +- .../_autosummary/mlx.utils.tree_reduce.html | 34 +- .../mlx.utils.tree_unflatten.html | 34 +- .../python/_autosummary/stream_class.html | 34 +- docs/build/html/python/array.html | 34 +- docs/build/html/python/data_types.html | 34 +- .../html/python/devices_and_streams.html | 34 +- docs/build/html/python/distributed.html | 938 + docs/build/html/python/fast.html | 34 +- docs/build/html/python/fft.html | 34 +- docs/build/html/python/linalg.html | 34 +- docs/build/html/python/metal.html | 34 +- docs/build/html/python/nn.html | 90 +- .../python/nn/_autosummary/mlx.nn.ALiBi.html | 34 +- .../nn/_autosummary/mlx.nn.AvgPool1d.html | 34 +- .../nn/_autosummary/mlx.nn.AvgPool2d.html | 34 +- .../nn/_autosummary/mlx.nn.BatchNorm.html | 34 +- .../python/nn/_autosummary/mlx.nn.Conv1d.html | 34 +- .../python/nn/_autosummary/mlx.nn.Conv2d.html | 34 +- .../python/nn/_autosummary/mlx.nn.Conv3d.html | 34 +- .../nn/_autosummary/mlx.nn.Dropout.html | 34 +- .../nn/_autosummary/mlx.nn.Dropout2d.html | 34 +- .../nn/_autosummary/mlx.nn.Dropout3d.html | 34 +- .../nn/_autosummary/mlx.nn.Embedding.html | 34 +- .../python/nn/_autosummary/mlx.nn.GELU.html | 40 +- .../python/nn/_autosummary/mlx.nn.GLU.html | 961 + .../python/nn/_autosummary/mlx.nn.GRU.html | 40 +- .../nn/_autosummary/mlx.nn.GroupNorm.html | 40 +- .../nn/_autosummary/mlx.nn.HardShrink.html | 958 + .../nn/_autosummary/mlx.nn.HardTanh.html | 952 + .../nn/_autosummary/mlx.nn.Hardswish.html | 952 + .../nn/_autosummary/mlx.nn.InstanceNorm.html | 40 +- .../python/nn/_autosummary/mlx.nn.LSTM.html | 34 +- .../nn/_autosummary/mlx.nn.LayerNorm.html | 40 +- .../nn/_autosummary/mlx.nn.LeakyReLU.html | 957 + .../python/nn/_autosummary/mlx.nn.Linear.html | 40 +- .../nn/_autosummary/mlx.nn.MaxPool1d.html | 34 +- .../nn/_autosummary/mlx.nn.MaxPool2d.html | 34 +- .../python/nn/_autosummary/mlx.nn.Mish.html | 34 +- .../nn/_autosummary/mlx.nn.Module.apply.html | 34 +- .../mlx.nn.Module.apply_to_modules.html | 34 +- .../_autosummary/mlx.nn.Module.children.html | 34 +- .../nn/_autosummary/mlx.nn.Module.eval.html | 34 +- .../mlx.nn.Module.filter_and_map.html | 34 +- .../nn/_autosummary/mlx.nn.Module.freeze.html | 34 +- .../mlx.nn.Module.leaf_modules.html | 34 +- .../mlx.nn.Module.load_weights.html | 34 +- .../_autosummary/mlx.nn.Module.modules.html | 34 +- .../mlx.nn.Module.named_modules.html | 34 +- .../mlx.nn.Module.parameters.html | 34 +- .../mlx.nn.Module.save_weights.html | 34 +- .../_autosummary/mlx.nn.Module.set_dtype.html | 34 +- .../nn/_autosummary/mlx.nn.Module.state.html | 34 +- .../nn/_autosummary/mlx.nn.Module.train.html | 34 +- .../mlx.nn.Module.trainable_parameters.html | 34 +- .../_autosummary/mlx.nn.Module.training.html | 34 +- .../_autosummary/mlx.nn.Module.unfreeze.html | 34 +- .../nn/_autosummary/mlx.nn.Module.update.html | 34 +- .../mlx.nn.Module.update_modules.html | 34 +- .../mlx.nn.MultiHeadAttention.html | 34 +- .../python/nn/_autosummary/mlx.nn.PReLU.html | 34 +- .../mlx.nn.QuantizedEmbedding.html | 34 +- .../_autosummary/mlx.nn.QuantizedLinear.html | 34 +- .../nn/_autosummary/mlx.nn.RMSNorm.html | 34 +- .../python/nn/_autosummary/mlx.nn.RNN.html | 40 +- .../python/nn/_autosummary/mlx.nn.ReLU.html | 40 +- .../python/nn/_autosummary/mlx.nn.ReLU6.html | 952 + .../python/nn/_autosummary/mlx.nn.RoPE.html | 34 +- .../python/nn/_autosummary/mlx.nn.SELU.html | 34 +- .../nn/_autosummary/mlx.nn.Sequential.html | 34 +- .../python/nn/_autosummary/mlx.nn.SiLU.html | 34 +- .../mlx.nn.SinusoidalPositionalEncoding.html | 42 +- .../nn/_autosummary/mlx.nn.Softmax.html | 952 + .../nn/_autosummary/mlx.nn.Softmin.html | 952 + .../nn/_autosummary/mlx.nn.Softplus.html | 952 + .../nn/_autosummary/mlx.nn.Softshrink.html | 46 +- .../nn/_autosummary/mlx.nn.Softsign.html | 952 + .../python/nn/_autosummary/mlx.nn.Step.html | 46 +- .../python/nn/_autosummary/mlx.nn.Tanh.html | 952 + .../nn/_autosummary/mlx.nn.Transformer.html | 40 +- .../nn/_autosummary/mlx.nn.Upsample.html | 34 +- .../nn/_autosummary/mlx.nn.init.constant.html | 34 +- .../mlx.nn.init.glorot_normal.html | 34 +- .../mlx.nn.init.glorot_uniform.html | 34 +- .../_autosummary/mlx.nn.init.he_normal.html | 34 +- .../_autosummary/mlx.nn.init.he_uniform.html | 34 +- .../nn/_autosummary/mlx.nn.init.identity.html | 34 +- .../nn/_autosummary/mlx.nn.init.normal.html | 34 +- .../nn/_autosummary/mlx.nn.init.uniform.html | 34 +- .../nn/_autosummary_functions/mlx.nn.elu.html | 34 +- .../_autosummary_functions/mlx.nn.gelu.html | 34 +- .../mlx.nn.gelu_approx.html | 34 +- .../mlx.nn.gelu_fast_approx.html | 34 +- .../nn/_autosummary_functions/mlx.nn.glu.html | 40 +- .../mlx.nn.hard_shrink.html | 953 + .../mlx.nn.hard_tanh.html | 948 + .../mlx.nn.hardswish.html | 40 +- .../mlx.nn.leaky_relu.html | 34 +- .../mlx.nn.log_sigmoid.html | 34 +- .../mlx.nn.log_softmax.html | 34 +- .../mlx.nn.losses.binary_cross_entropy.html | 34 +- .../mlx.nn.losses.cosine_similarity_loss.html | 34 +- .../mlx.nn.losses.cross_entropy.html | 34 +- .../mlx.nn.losses.gaussian_nll_loss.html | 34 +- .../mlx.nn.losses.hinge_loss.html | 34 +- .../mlx.nn.losses.huber_loss.html | 34 +- .../mlx.nn.losses.kl_div_loss.html | 34 +- .../mlx.nn.losses.l1_loss.html | 34 +- .../mlx.nn.losses.log_cosh_loss.html | 34 +- .../mlx.nn.losses.margin_ranking_loss.html | 34 +- .../mlx.nn.losses.mse_loss.html | 34 +- .../mlx.nn.losses.nll_loss.html | 34 +- .../mlx.nn.losses.smooth_l1_loss.html | 34 +- .../mlx.nn.losses.triplet_loss.html | 34 +- .../_autosummary_functions/mlx.nn.mish.html | 34 +- .../_autosummary_functions/mlx.nn.prelu.html | 34 +- .../_autosummary_functions/mlx.nn.relu.html | 34 +- .../_autosummary_functions/mlx.nn.relu6.html | 34 +- .../_autosummary_functions/mlx.nn.selu.html | 34 +- .../mlx.nn.sigmoid.html | 34 +- .../_autosummary_functions/mlx.nn.silu.html | 34 +- .../mlx.nn.softmax.html | 40 +- .../mlx.nn.softmin.html | 948 + .../mlx.nn.softplus.html | 40 +- .../mlx.nn.softshrink.html | 34 +- .../_autosummary_functions/mlx.nn.step.html | 34 +- .../_autosummary_functions/mlx.nn.tanh.html | 34 +- docs/build/html/python/nn/functions.html | 51 +- docs/build/html/python/nn/init.html | 34 +- docs/build/html/python/nn/layers.html | 99 +- docs/build/html/python/nn/losses.html | 34 +- docs/build/html/python/nn/module.html | 34 +- docs/build/html/python/ops.html | 43 +- docs/build/html/python/optimizers.html | 34 +- .../_autosummary/mlx.optimizers.AdaDelta.html | 34 +- .../mlx.optimizers.Adafactor.html | 34 +- .../_autosummary/mlx.optimizers.Adagrad.html | 34 +- .../_autosummary/mlx.optimizers.Adam.html | 34 +- .../_autosummary/mlx.optimizers.AdamW.html | 34 +- .../_autosummary/mlx.optimizers.Adamax.html | 34 +- .../_autosummary/mlx.optimizers.Lion.html | 34 +- ....optimizers.Optimizer.apply_gradients.html | 34 +- .../mlx.optimizers.Optimizer.init.html | 34 +- .../mlx.optimizers.Optimizer.state.html | 34 +- .../mlx.optimizers.Optimizer.update.html | 34 +- .../_autosummary/mlx.optimizers.RMSprop.html | 34 +- .../_autosummary/mlx.optimizers.SGD.html | 34 +- .../mlx.optimizers.cosine_decay.html | 34 +- .../mlx.optimizers.exponential_decay.html | 34 +- .../mlx.optimizers.join_schedules.html | 34 +- .../mlx.optimizers.linear_schedule.html | 34 +- .../mlx.optimizers.step_decay.html | 34 +- .../python/optimizers/common_optimizers.html | 34 +- .../html/python/optimizers/optimizer.html | 34 +- .../html/python/optimizers/schedulers.html | 34 +- docs/build/html/python/random.html | 34 +- docs/build/html/python/transforms.html | 34 +- docs/build/html/python/tree_utils.html | 40 +- docs/build/html/radix_8h.html | 427 + docs/build/html/radix_8h_source.html | 464 + docs/build/html/random_8h.html | 186 + docs/build/html/random_8h_source.html | 356 + docs/build/html/readwrite_8h.html | 120 + docs/build/html/readwrite_8h_source.html | 810 + docs/build/html/reduce__all_8h.html | 259 + docs/build/html/reduce__all_8h_source.html | 237 + docs/build/html/reduce__col_8h.html | 395 + docs/build/html/reduce__col_8h_source.html | 267 + docs/build/html/reduce__init_8h.html | 122 + docs/build/html/reduce__init_8h_source.html | 103 + docs/build/html/reduce__row_8h.html | 471 + docs/build/html/reduce__row_8h_source.html | 396 + 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 | 224 + docs/build/html/scatter_8h_source.html | 170 + docs/build/html/scheduler_8h.html | 135 + docs/build/html/scheduler_8h_source.html | 360 + docs/build/html/search.html | 34 +- docs/build/html/search/all_0.js | 14 + docs/build/html/search/all_1.js | 107 + docs/build/html/search/all_10.js | 70 + docs/build/html/search/all_11.js | 11 + docs/build/html/search/all_12.js | 125 + docs/build/html/search/all_13.js | 197 + docs/build/html/search/all_14.js | 83 + docs/build/html/search/all_15.js | 28 + docs/build/html/search/all_16.js | 27 + 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 | 17 + docs/build/html/search/all_2.js | 96 + docs/build/html/search/all_3.js | 142 + docs/build/html/search/all_4.js | 63 + docs/build/html/search/all_5.js | 56 + docs/build/html/search/all_6.js | 58 + docs/build/html/search/all_7.js | 95 + docs/build/html/search/all_8.js | 13 + docs/build/html/search/all_9.js | 77 + docs/build/html/search/all_a.js | 7 + docs/build/html/search/all_b.js | 14 + docs/build/html/search/all_c.js | 80 + docs/build/html/search/all_d.js | 109 + docs/build/html/search/all_e.js | 39 + docs/build/html/search/all_f.js | 58 + docs/build/html/search/classes_0.js | 7 + docs/build/html/search/classes_1.js | 34 + docs/build/html/search/classes_10.js | 19 + docs/build/html/search/classes_11.js | 29 + docs/build/html/search/classes_12.js | 16 + docs/build/html/search/classes_13.js | 6 + docs/build/html/search/classes_14.js | 8 + docs/build/html/search/classes_15.js | 4 + docs/build/html/search/classes_2.js | 16 + docs/build/html/search/classes_3.js | 45 + docs/build/html/search/classes_4.js | 10 + docs/build/html/search/classes_5.js | 13 + docs/build/html/search/classes_6.js | 11 + docs/build/html/search/classes_7.js | 13 + docs/build/html/search/classes_8.js | 8 + docs/build/html/search/classes_9.js | 7 + docs/build/html/search/classes_a.js | 33 + docs/build/html/search/classes_b.js | 21 + docs/build/html/search/classes_c.js | 10 + docs/build/html/search/classes_d.js | 4 + docs/build/html/search/classes_e.js | 11 + docs/build/html/search/classes_f.js | 5 + docs/build/html/search/close.svg | 18 + docs/build/html/search/defines_0.js | 7 + 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 | 8 + docs/build/html/search/defines_5.js | 4 + docs/build/html/search/defines_6.js | 10 + docs/build/html/search/defines_7.js | 8 + 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 | 5 + 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 | 9 + 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 | 8 + docs/build/html/search/files_11.js | 6 + docs/build/html/search/files_2.js | 10 + docs/build/html/search/files_3.js | 7 + docs/build/html/search/files_4.js | 6 + docs/build/html/search/files_5.js | 7 + docs/build/html/search/files_6.js | 7 + docs/build/html/search/files_7.js | 4 + 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 | 12 + docs/build/html/search/files_f.js | 17 + docs/build/html/search/functions_0.js | 8 + docs/build/html/search/functions_1.js | 78 + docs/build/html/search/functions_10.js | 36 + docs/build/html/search/functions_11.js | 9 + docs/build/html/search/functions_12.js | 72 + docs/build/html/search/functions_13.js | 139 + docs/build/html/search/functions_14.js | 48 + docs/build/html/search/functions_15.js | 14 + docs/build/html/search/functions_16.js | 14 + docs/build/html/search/functions_17.js | 11 + docs/build/html/search/functions_18.js | 5 + docs/build/html/search/functions_19.js | 17 + docs/build/html/search/functions_2.js | 41 + docs/build/html/search/functions_3.js | 90 + docs/build/html/search/functions_4.js | 37 + docs/build/html/search/functions_5.js | 42 + docs/build/html/search/functions_6.js | 34 + docs/build/html/search/functions_7.js | 67 + docs/build/html/search/functions_8.js | 4 + docs/build/html/search/functions_9.js | 42 + docs/build/html/search/functions_a.js | 4 + docs/build/html/search/functions_b.js | 6 + docs/build/html/search/functions_c.js | 44 + docs/build/html/search/functions_d.js | 47 + docs/build/html/search/functions_e.js | 23 + 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 | 25 + 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 | 6 + 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 | 6 + 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 | 5 + docs/build/html/search/typedefs_d.js | 7 + docs/build/html/search/variables_0.js | 14 + docs/build/html/search/variables_1.js | 34 + docs/build/html/search/variables_10.js | 5 + docs/build/html/search/variables_11.js | 38 + docs/build/html/search/variables_12.js | 38 + docs/build/html/search/variables_13.js | 27 + docs/build/html/search/variables_14.js | 11 + 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 | 21 + docs/build/html/search/variables_3.js | 12 + docs/build/html/search/variables_4.js | 7 + docs/build/html/search/variables_5.js | 19 + docs/build/html/search/variables_6.js | 16 + docs/build/html/search/variables_7.js | 4 + docs/build/html/search/variables_8.js | 27 + 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 | 17 + docs/build/html/search/variables_d.js | 15 + docs/build/html/search/variables_e.js | 9 + docs/build/html/search/variables_f.js | 6 + docs/build/html/searchindex.js | 2 +- docs/build/html/splitbar.png | Bin 0 -> 314 bytes docs/build/html/splitbard.png | Bin 0 -> 282 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 | 837 + 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 | 91 + docs/build/html/struct___no_mask.html | 225 + 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-members.html | 92 + docs/build/html/struct_and.html | 303 + 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 + 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 | 264 + ...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 + .../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 | 90 + docs/build/html/struct_max.html | 233 + docs/build/html/struct_maximum-members.html | 89 + docs/build/html/struct_maximum.html | 198 + docs/build/html/struct_min-members.html | 90 + docs/build/html/struct_min.html | 233 + 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-members.html | 92 + docs/build/html/struct_or.html | 303 + docs/build/html/struct_power-members.html | 89 + docs/build/html/struct_power.html | 198 + docs/build/html/struct_prod-members.html | 90 + docs/build/html/struct_prod.html | 233 + .../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 | 88 + docs/build/html/struct_scale_op.html | 148 + 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 | 88 + docs/build/html/struct_sign.html | 156 + 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-members.html | 90 + docs/build/html/struct_sum.html | 233 + 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 | 97 + docs/build/html/structcomplex64__t.html | 405 + ...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 0 -> 833 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 + .../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 + .../structmlx_1_1core_1_1_stream-members.html | 93 + .../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 0 -> 614 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 0 -> 618 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 + ...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 | 95 + .../structmlx_1_1core_1_1detail_1_1_sign.html | 238 + ...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_1metal_1_1_command_encoder-members.html | 100 + ..._1_1core_1_1metal_1_1_command_encoder.html | 387 + ...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 0 -> 853 bytes docs/build/html/sync_on.png | Bin 0 -> 845 bytes docs/build/html/tab_a.png | Bin 0 -> 142 bytes docs/build/html/tab_ad.png | Bin 0 -> 135 bytes docs/build/html/tab_b.png | Bin 0 -> 169 bytes docs/build/html/tab_bd.png | Bin 0 -> 173 bytes docs/build/html/tab_h.png | Bin 0 -> 177 bytes docs/build/html/tab_hd.png | Bin 0 -> 180 bytes docs/build/html/tab_s.png | Bin 0 -> 184 bytes docs/build/html/tab_sd.png | Bin 0 -> 188 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/threefry_8h.html | 110 + docs/build/html/threefry_8h_source.html | 111 + docs/build/html/topics.html | 88 + docs/build/html/transforms_8h.html | 172 + docs/build/html/transforms_8h_source.html | 248 + docs/build/html/transforms__impl_8h.html | 123 + .../html/transforms__impl_8h_source.html | 158 + 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 | 807 + .../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 | 34 +- docs/build/html/usage/distributed.html | 1089 + .../build/html/usage/function_transforms.html | 34 +- docs/build/html/usage/indexing.html | 34 +- docs/build/html/usage/lazy_evaluation.html | 34 +- docs/build/html/usage/numpy.html | 48 +- docs/build/html/usage/quick_start.html | 34 +- docs/build/html/usage/saving_and_loading.html | 34 +- docs/build/html/usage/unified_memory.html | 34 +- docs/build/html/usage/using_streams.html | 40 +- docs/build/html/utils_8h.html | 172 + docs/build/html/utils_8h_source.html | 276 + 2046 files changed, 323202 insertions(+), 2319 deletions(-) delete mode 100644 docs/build/html/_sources/python/_autosummary/mlx.core.block_sparse_mm.rst create mode 100644 docs/build/html/_sources/python/_autosummary/mlx.core.distributed.Group.rst create mode 100644 docs/build/html/_sources/python/_autosummary/mlx.core.distributed.all_gather.rst create mode 100644 docs/build/html/_sources/python/_autosummary/mlx.core.distributed.all_sum.rst create mode 100644 docs/build/html/_sources/python/_autosummary/mlx.core.distributed.init.rst create mode 100644 docs/build/html/_sources/python/_autosummary/mlx.core.distributed.is_available.rst create mode 100644 docs/build/html/_sources/python/_autosummary/mlx.core.view.rst create mode 100644 docs/build/html/_sources/python/distributed.rst create mode 100644 docs/build/html/_sources/python/nn/_autosummary/mlx.nn.GLU.rst create mode 100644 docs/build/html/_sources/python/nn/_autosummary/mlx.nn.HardShrink.rst create mode 100644 docs/build/html/_sources/python/nn/_autosummary/mlx.nn.HardTanh.rst create mode 100644 docs/build/html/_sources/python/nn/_autosummary/mlx.nn.Hardswish.rst create mode 100644 docs/build/html/_sources/python/nn/_autosummary/mlx.nn.LeakyReLU.rst create mode 100644 docs/build/html/_sources/python/nn/_autosummary/mlx.nn.ReLU6.rst create mode 100644 docs/build/html/_sources/python/nn/_autosummary/mlx.nn.Softmax.rst create mode 100644 docs/build/html/_sources/python/nn/_autosummary/mlx.nn.Softmin.rst create mode 100644 docs/build/html/_sources/python/nn/_autosummary/mlx.nn.Softplus.rst create mode 100644 docs/build/html/_sources/python/nn/_autosummary/mlx.nn.Softsign.rst create mode 100644 docs/build/html/_sources/python/nn/_autosummary/mlx.nn.Tanh.rst create mode 100644 docs/build/html/_sources/python/nn/_autosummary_functions/mlx.nn.hard_shrink.rst create mode 100644 docs/build/html/_sources/python/nn/_autosummary_functions/mlx.nn.hard_tanh.rst create mode 100644 docs/build/html/_sources/python/nn/_autosummary_functions/mlx.nn.softmin.rst create mode 100644 docs/build/html/_sources/usage/distributed.rst create mode 100644 docs/build/html/allocator_8h.html create mode 100644 docs/build/html/allocator_8h_source.html create mode 100644 docs/build/html/annotated.html create mode 100644 docs/build/html/array_8h.html create mode 100644 docs/build/html/array_8h_source.html create mode 100644 docs/build/html/atomic_8h.html create mode 100644 docs/build/html/atomic_8h_source.html create mode 100644 docs/build/html/backend_2accelerate_2utils_8h.html create mode 100644 docs/build/html/backend_2accelerate_2utils_8h_source.html create mode 100644 docs/build/html/backend_2common_2ops_8h.html create mode 100644 docs/build/html/backend_2common_2ops_8h_source.html create mode 100644 docs/build/html/backend_2common_2utils_8h.html create mode 100644 docs/build/html/backend_2common_2utils_8h_source.html create mode 100644 docs/build/html/backend_2metal_2allocator_8h.html create mode 100644 docs/build/html/backend_2metal_2allocator_8h_source.html create mode 100644 docs/build/html/backend_2metal_2device_8h.html create mode 100644 docs/build/html/backend_2metal_2device_8h_source.html create mode 100644 docs/build/html/backend_2metal_2jit_2fft_8h.html create mode 100644 docs/build/html/backend_2metal_2jit_2fft_8h_source.html create mode 100644 docs/build/html/backend_2metal_2kernels_2bf16_8h.html create mode 100644 docs/build/html/backend_2metal_2kernels_2bf16_8h_source.html create mode 100644 docs/build/html/backend_2metal_2kernels_2complex_8h.html create mode 100644 docs/build/html/backend_2metal_2kernels_2complex_8h_source.html create mode 100644 docs/build/html/backend_2metal_2kernels_2fft_8h.html create mode 100644 docs/build/html/backend_2metal_2kernels_2fft_8h_source.html create mode 100644 docs/build/html/backend_2metal_2kernels_2reduction_2ops_8h.html create mode 100644 docs/build/html/backend_2metal_2kernels_2reduction_2ops_8h_source.html create mode 100644 docs/build/html/backend_2metal_2kernels_2steel_2gemm_2transforms_8h.html create mode 100644 docs/build/html/backend_2metal_2kernels_2steel_2gemm_2transforms_8h_source.html create mode 100644 docs/build/html/backend_2metal_2kernels_2steel_2utils_8h.html create mode 100644 docs/build/html/backend_2metal_2kernels_2steel_2utils_8h_source.html create mode 100644 docs/build/html/backend_2metal_2kernels_2utils_8h.html create mode 100644 docs/build/html/backend_2metal_2kernels_2utils_8h_source.html create mode 100644 docs/build/html/backend_2metal_2utils_8h.html create mode 100644 docs/build/html/backend_2metal_2utils_8h_source.html create mode 100644 docs/build/html/bc_s.png create mode 100644 docs/build/html/bc_sd.png create mode 100644 docs/build/html/bf16__math_8h.html create mode 100644 docs/build/html/bf16__math_8h_source.html create mode 100644 docs/build/html/binary__ops_8h.html create mode 100644 docs/build/html/binary__ops_8h_source.html create mode 100644 docs/build/html/class_m_p_s_1_1_kernel-members.html create mode 100644 docs/build/html/class_m_p_s_1_1_kernel.html create mode 100644 docs/build/html/class_m_p_s_1_1_kernel.png create mode 100644 docs/build/html/class_m_p_s_1_1_matrix-members.html create mode 100644 docs/build/html/class_m_p_s_1_1_matrix.html create mode 100644 docs/build/html/class_m_p_s_1_1_matrix.png create mode 100644 docs/build/html/class_m_p_s_1_1_matrix_descriptor-members.html create mode 100644 docs/build/html/class_m_p_s_1_1_matrix_descriptor.html create mode 100644 docs/build/html/class_m_p_s_1_1_matrix_descriptor.png create mode 100644 docs/build/html/class_m_p_s_1_1_matrix_multiplication-members.html create mode 100644 docs/build/html/class_m_p_s_1_1_matrix_multiplication.html create mode 100644 docs/build/html/class_m_p_s_1_1_matrix_multiplication.png create mode 100644 docs/build/html/class_m_p_s_1_1_matrix_vector_multiplication-members.html create mode 100644 docs/build/html/class_m_p_s_1_1_matrix_vector_multiplication.html create mode 100644 docs/build/html/class_m_p_s_1_1_matrix_vector_multiplication.png create mode 100644 docs/build/html/class_m_p_s_1_1_vector-members.html create mode 100644 docs/build/html/class_m_p_s_1_1_vector.html create mode 100644 docs/build/html/class_m_p_s_1_1_vector.png create mode 100644 docs/build/html/class_m_p_s_1_1_vector_descriptor-members.html create mode 100644 docs/build/html/class_m_p_s_1_1_vector_descriptor.html create mode 100644 docs/build/html/class_m_p_s_1_1_vector_descriptor.png create mode 100644 docs/build/html/classes.html create mode 100644 docs/build/html/classmlx_1_1core_1_1_abs-members.html create mode 100644 docs/build/html/classmlx_1_1core_1_1_abs.html create mode 100644 docs/build/html/classmlx_1_1core_1_1_abs.png create mode 100644 docs/build/html/classmlx_1_1core_1_1_add-members.html create mode 100644 docs/build/html/classmlx_1_1core_1_1_add.html create mode 100644 docs/build/html/classmlx_1_1core_1_1_add.png create mode 100644 docs/build/html/classmlx_1_1core_1_1_add_m_m-members.html create mode 100644 docs/build/html/classmlx_1_1core_1_1_add_m_m.html create mode 100644 docs/build/html/classmlx_1_1core_1_1_add_m_m.png create mode 100644 docs/build/html/classmlx_1_1core_1_1_arange-members.html create mode 100644 docs/build/html/classmlx_1_1core_1_1_arange.html create mode 100644 docs/build/html/classmlx_1_1core_1_1_arange.png create mode 100644 docs/build/html/classmlx_1_1core_1_1_arc_cos-members.html create mode 100644 docs/build/html/classmlx_1_1core_1_1_arc_cos.html create mode 100644 docs/build/html/classmlx_1_1core_1_1_arc_cos.png create mode 100644 docs/build/html/classmlx_1_1core_1_1_arc_cosh-members.html create mode 100644 docs/build/html/classmlx_1_1core_1_1_arc_cosh.html create mode 100644 docs/build/html/classmlx_1_1core_1_1_arc_cosh.png create mode 100644 docs/build/html/classmlx_1_1core_1_1_arc_sin-members.html create mode 100644 docs/build/html/classmlx_1_1core_1_1_arc_sin.html create mode 100644 docs/build/html/classmlx_1_1core_1_1_arc_sin.png create mode 100644 docs/build/html/classmlx_1_1core_1_1_arc_sinh-members.html create mode 100644 docs/build/html/classmlx_1_1core_1_1_arc_sinh.html create mode 100644 docs/build/html/classmlx_1_1core_1_1_arc_sinh.png create mode 100644 docs/build/html/classmlx_1_1core_1_1_arc_tan-members.html create mode 100644 docs/build/html/classmlx_1_1core_1_1_arc_tan.html create mode 100644 docs/build/html/classmlx_1_1core_1_1_arc_tan.png create mode 100644 docs/build/html/classmlx_1_1core_1_1_arc_tan2-members.html create mode 100644 docs/build/html/classmlx_1_1core_1_1_arc_tan2.html create mode 100644 docs/build/html/classmlx_1_1core_1_1_arc_tan2.png create mode 100644 docs/build/html/classmlx_1_1core_1_1_arc_tanh-members.html create mode 100644 docs/build/html/classmlx_1_1core_1_1_arc_tanh.html create mode 100644 docs/build/html/classmlx_1_1core_1_1_arc_tanh.png create mode 100644 docs/build/html/classmlx_1_1core_1_1_arg_partition-members.html create mode 100644 docs/build/html/classmlx_1_1core_1_1_arg_partition.html create mode 100644 docs/build/html/classmlx_1_1core_1_1_arg_partition.png create mode 100644 docs/build/html/classmlx_1_1core_1_1_arg_reduce-members.html create mode 100644 docs/build/html/classmlx_1_1core_1_1_arg_reduce.html create mode 100644 docs/build/html/classmlx_1_1core_1_1_arg_reduce.png create mode 100644 docs/build/html/classmlx_1_1core_1_1_arg_sort-members.html create mode 100644 docs/build/html/classmlx_1_1core_1_1_arg_sort.html create mode 100644 docs/build/html/classmlx_1_1core_1_1_arg_sort.png create mode 100644 docs/build/html/classmlx_1_1core_1_1_as_strided-members.html create mode 100644 docs/build/html/classmlx_1_1core_1_1_as_strided.html create mode 100644 docs/build/html/classmlx_1_1core_1_1_as_strided.png create mode 100644 docs/build/html/classmlx_1_1core_1_1_as_type-members.html create mode 100644 docs/build/html/classmlx_1_1core_1_1_as_type.html create mode 100644 docs/build/html/classmlx_1_1core_1_1_as_type.png create mode 100644 docs/build/html/classmlx_1_1core_1_1_bitwise_binary-members.html create mode 100644 docs/build/html/classmlx_1_1core_1_1_bitwise_binary.html create mode 100644 docs/build/html/classmlx_1_1core_1_1_bitwise_binary.png create mode 100644 docs/build/html/classmlx_1_1core_1_1_block_masked_m_m-members.html create mode 100644 docs/build/html/classmlx_1_1core_1_1_block_masked_m_m.html create mode 100644 docs/build/html/classmlx_1_1core_1_1_block_masked_m_m.png create mode 100644 docs/build/html/classmlx_1_1core_1_1_broadcast-members.html create mode 100644 docs/build/html/classmlx_1_1core_1_1_broadcast.html create mode 100644 docs/build/html/classmlx_1_1core_1_1_broadcast.png create mode 100644 docs/build/html/classmlx_1_1core_1_1_ceil-members.html create mode 100644 docs/build/html/classmlx_1_1core_1_1_ceil.html create mode 100644 docs/build/html/classmlx_1_1core_1_1_ceil.png create mode 100644 docs/build/html/classmlx_1_1core_1_1_cholesky-members.html create mode 100644 docs/build/html/classmlx_1_1core_1_1_cholesky.html create mode 100644 docs/build/html/classmlx_1_1core_1_1_cholesky.png create mode 100644 docs/build/html/classmlx_1_1core_1_1_compiled-members.html create mode 100644 docs/build/html/classmlx_1_1core_1_1_compiled.html create mode 100644 docs/build/html/classmlx_1_1core_1_1_compiled.png create mode 100644 docs/build/html/classmlx_1_1core_1_1_concatenate-members.html create mode 100644 docs/build/html/classmlx_1_1core_1_1_concatenate.html create mode 100644 docs/build/html/classmlx_1_1core_1_1_concatenate.png create mode 100644 docs/build/html/classmlx_1_1core_1_1_conjugate-members.html create mode 100644 docs/build/html/classmlx_1_1core_1_1_conjugate.html create mode 100644 docs/build/html/classmlx_1_1core_1_1_conjugate.png create mode 100644 docs/build/html/classmlx_1_1core_1_1_convolution-members.html create mode 100644 docs/build/html/classmlx_1_1core_1_1_convolution.html create mode 100644 docs/build/html/classmlx_1_1core_1_1_convolution.png create mode 100644 docs/build/html/classmlx_1_1core_1_1_copy-members.html create mode 100644 docs/build/html/classmlx_1_1core_1_1_copy.html create mode 100644 docs/build/html/classmlx_1_1core_1_1_copy.png create mode 100644 docs/build/html/classmlx_1_1core_1_1_cos-members.html create mode 100644 docs/build/html/classmlx_1_1core_1_1_cos.html create mode 100644 docs/build/html/classmlx_1_1core_1_1_cos.png create mode 100644 docs/build/html/classmlx_1_1core_1_1_cosh-members.html create mode 100644 docs/build/html/classmlx_1_1core_1_1_cosh.html create mode 100644 docs/build/html/classmlx_1_1core_1_1_cosh.png create mode 100644 docs/build/html/classmlx_1_1core_1_1_custom_v_j_p-members.html create mode 100644 docs/build/html/classmlx_1_1core_1_1_custom_v_j_p.html create mode 100644 docs/build/html/classmlx_1_1core_1_1_custom_v_j_p.png create mode 100644 docs/build/html/classmlx_1_1core_1_1_depends-members.html create mode 100644 docs/build/html/classmlx_1_1core_1_1_depends.html create mode 100644 docs/build/html/classmlx_1_1core_1_1_depends.png create mode 100644 docs/build/html/classmlx_1_1core_1_1_div_mod-members.html create mode 100644 docs/build/html/classmlx_1_1core_1_1_div_mod.html create mode 100644 docs/build/html/classmlx_1_1core_1_1_div_mod.png create mode 100644 docs/build/html/classmlx_1_1core_1_1_divide-members.html create mode 100644 docs/build/html/classmlx_1_1core_1_1_divide.html create mode 100644 docs/build/html/classmlx_1_1core_1_1_divide.png create mode 100644 docs/build/html/classmlx_1_1core_1_1_equal-members.html create mode 100644 docs/build/html/classmlx_1_1core_1_1_equal.html create mode 100644 docs/build/html/classmlx_1_1core_1_1_equal.png create mode 100644 docs/build/html/classmlx_1_1core_1_1_erf-members.html create mode 100644 docs/build/html/classmlx_1_1core_1_1_erf.html create mode 100644 docs/build/html/classmlx_1_1core_1_1_erf.png create mode 100644 docs/build/html/classmlx_1_1core_1_1_erf_inv-members.html create mode 100644 docs/build/html/classmlx_1_1core_1_1_erf_inv.html create mode 100644 docs/build/html/classmlx_1_1core_1_1_erf_inv.png create mode 100644 docs/build/html/classmlx_1_1core_1_1_event-members.html create mode 100644 docs/build/html/classmlx_1_1core_1_1_event.html create mode 100644 docs/build/html/classmlx_1_1core_1_1_exp-members.html create mode 100644 docs/build/html/classmlx_1_1core_1_1_exp.html create mode 100644 docs/build/html/classmlx_1_1core_1_1_exp.png create mode 100644 docs/build/html/classmlx_1_1core_1_1_expm1-members.html create mode 100644 docs/build/html/classmlx_1_1core_1_1_expm1.html create mode 100644 docs/build/html/classmlx_1_1core_1_1_expm1.png create mode 100644 docs/build/html/classmlx_1_1core_1_1_f_f_t-members.html create mode 100644 docs/build/html/classmlx_1_1core_1_1_f_f_t.html create mode 100644 docs/build/html/classmlx_1_1core_1_1_f_f_t.png create mode 100644 docs/build/html/classmlx_1_1core_1_1_floor-members.html create mode 100644 docs/build/html/classmlx_1_1core_1_1_floor.html create mode 100644 docs/build/html/classmlx_1_1core_1_1_floor.png create mode 100644 docs/build/html/classmlx_1_1core_1_1_full-members.html create mode 100644 docs/build/html/classmlx_1_1core_1_1_full.html create mode 100644 docs/build/html/classmlx_1_1core_1_1_full.png create mode 100644 docs/build/html/classmlx_1_1core_1_1_gather-members.html create mode 100644 docs/build/html/classmlx_1_1core_1_1_gather.html create mode 100644 docs/build/html/classmlx_1_1core_1_1_gather.png create mode 100644 docs/build/html/classmlx_1_1core_1_1_gather_m_m-members.html create mode 100644 docs/build/html/classmlx_1_1core_1_1_gather_m_m.html create mode 100644 docs/build/html/classmlx_1_1core_1_1_gather_m_m.png create mode 100644 docs/build/html/classmlx_1_1core_1_1_gather_q_m_m-members.html create mode 100644 docs/build/html/classmlx_1_1core_1_1_gather_q_m_m.html create mode 100644 docs/build/html/classmlx_1_1core_1_1_gather_q_m_m.png create mode 100644 docs/build/html/classmlx_1_1core_1_1_greater-members.html create mode 100644 docs/build/html/classmlx_1_1core_1_1_greater.html create mode 100644 docs/build/html/classmlx_1_1core_1_1_greater.png create mode 100644 docs/build/html/classmlx_1_1core_1_1_greater_equal-members.html create mode 100644 docs/build/html/classmlx_1_1core_1_1_greater_equal.html create mode 100644 docs/build/html/classmlx_1_1core_1_1_greater_equal.png create mode 100644 docs/build/html/classmlx_1_1core_1_1_inverse-members.html create mode 100644 docs/build/html/classmlx_1_1core_1_1_inverse.html create mode 100644 docs/build/html/classmlx_1_1core_1_1_inverse.png create mode 100644 docs/build/html/classmlx_1_1core_1_1_less-members.html create mode 100644 docs/build/html/classmlx_1_1core_1_1_less.html create mode 100644 docs/build/html/classmlx_1_1core_1_1_less.png create mode 100644 docs/build/html/classmlx_1_1core_1_1_less_equal-members.html create mode 100644 docs/build/html/classmlx_1_1core_1_1_less_equal.html create mode 100644 docs/build/html/classmlx_1_1core_1_1_less_equal.png create mode 100644 docs/build/html/classmlx_1_1core_1_1_load-members.html create mode 100644 docs/build/html/classmlx_1_1core_1_1_load.html create mode 100644 docs/build/html/classmlx_1_1core_1_1_load.png create mode 100644 docs/build/html/classmlx_1_1core_1_1_log-members.html create mode 100644 docs/build/html/classmlx_1_1core_1_1_log.html create mode 100644 docs/build/html/classmlx_1_1core_1_1_log.png create mode 100644 docs/build/html/classmlx_1_1core_1_1_log1p-members.html create mode 100644 docs/build/html/classmlx_1_1core_1_1_log1p.html create mode 100644 docs/build/html/classmlx_1_1core_1_1_log1p.png create mode 100644 docs/build/html/classmlx_1_1core_1_1_log_add_exp-members.html create mode 100644 docs/build/html/classmlx_1_1core_1_1_log_add_exp.html create mode 100644 docs/build/html/classmlx_1_1core_1_1_log_add_exp.png create mode 100644 docs/build/html/classmlx_1_1core_1_1_logical_and-members.html create mode 100644 docs/build/html/classmlx_1_1core_1_1_logical_and.html create mode 100644 docs/build/html/classmlx_1_1core_1_1_logical_and.png create mode 100644 docs/build/html/classmlx_1_1core_1_1_logical_not-members.html create mode 100644 docs/build/html/classmlx_1_1core_1_1_logical_not.html create mode 100644 docs/build/html/classmlx_1_1core_1_1_logical_not.png create mode 100644 docs/build/html/classmlx_1_1core_1_1_logical_or-members.html create mode 100644 docs/build/html/classmlx_1_1core_1_1_logical_or.html create mode 100644 docs/build/html/classmlx_1_1core_1_1_logical_or.png create mode 100644 docs/build/html/classmlx_1_1core_1_1_matmul-members.html create mode 100644 docs/build/html/classmlx_1_1core_1_1_matmul.html create mode 100644 docs/build/html/classmlx_1_1core_1_1_matmul.png create mode 100644 docs/build/html/classmlx_1_1core_1_1_maximum-members.html create mode 100644 docs/build/html/classmlx_1_1core_1_1_maximum.html create mode 100644 docs/build/html/classmlx_1_1core_1_1_maximum.png create mode 100644 docs/build/html/classmlx_1_1core_1_1_minimum-members.html create mode 100644 docs/build/html/classmlx_1_1core_1_1_minimum.html create mode 100644 docs/build/html/classmlx_1_1core_1_1_minimum.png create mode 100644 docs/build/html/classmlx_1_1core_1_1_multiply-members.html create mode 100644 docs/build/html/classmlx_1_1core_1_1_multiply.html create mode 100644 docs/build/html/classmlx_1_1core_1_1_multiply.png create mode 100644 docs/build/html/classmlx_1_1core_1_1_negative-members.html create mode 100644 docs/build/html/classmlx_1_1core_1_1_negative.html create mode 100644 docs/build/html/classmlx_1_1core_1_1_negative.png create mode 100644 docs/build/html/classmlx_1_1core_1_1_not_equal-members.html create mode 100644 docs/build/html/classmlx_1_1core_1_1_not_equal.html create mode 100644 docs/build/html/classmlx_1_1core_1_1_not_equal.png create mode 100644 docs/build/html/classmlx_1_1core_1_1_number_of_elements-members.html create mode 100644 docs/build/html/classmlx_1_1core_1_1_number_of_elements.html create mode 100644 docs/build/html/classmlx_1_1core_1_1_number_of_elements.png create mode 100644 docs/build/html/classmlx_1_1core_1_1_pad-members.html create mode 100644 docs/build/html/classmlx_1_1core_1_1_pad.html create mode 100644 docs/build/html/classmlx_1_1core_1_1_pad.png create mode 100644 docs/build/html/classmlx_1_1core_1_1_partition-members.html create mode 100644 docs/build/html/classmlx_1_1core_1_1_partition.html create mode 100644 docs/build/html/classmlx_1_1core_1_1_partition.png create mode 100644 docs/build/html/classmlx_1_1core_1_1_power-members.html create mode 100644 docs/build/html/classmlx_1_1core_1_1_power.html create mode 100644 docs/build/html/classmlx_1_1core_1_1_power.png create mode 100644 docs/build/html/classmlx_1_1core_1_1_primitive-members.html create mode 100644 docs/build/html/classmlx_1_1core_1_1_primitive.html create mode 100644 docs/build/html/classmlx_1_1core_1_1_primitive.png create mode 100644 docs/build/html/classmlx_1_1core_1_1_q_r_f-members.html create mode 100644 docs/build/html/classmlx_1_1core_1_1_q_r_f.html create mode 100644 docs/build/html/classmlx_1_1core_1_1_q_r_f.png create mode 100644 docs/build/html/classmlx_1_1core_1_1_quantized_matmul-members.html create mode 100644 docs/build/html/classmlx_1_1core_1_1_quantized_matmul.html create mode 100644 docs/build/html/classmlx_1_1core_1_1_quantized_matmul.png create mode 100644 docs/build/html/classmlx_1_1core_1_1_random_bits-members.html create mode 100644 docs/build/html/classmlx_1_1core_1_1_random_bits.html create mode 100644 docs/build/html/classmlx_1_1core_1_1_random_bits.png create mode 100644 docs/build/html/classmlx_1_1core_1_1_reduce-members.html create mode 100644 docs/build/html/classmlx_1_1core_1_1_reduce.html create mode 100644 docs/build/html/classmlx_1_1core_1_1_reduce.png create mode 100644 docs/build/html/classmlx_1_1core_1_1_remainder-members.html create mode 100644 docs/build/html/classmlx_1_1core_1_1_remainder.html create mode 100644 docs/build/html/classmlx_1_1core_1_1_remainder.png create mode 100644 docs/build/html/classmlx_1_1core_1_1_reshape-members.html create mode 100644 docs/build/html/classmlx_1_1core_1_1_reshape.html create mode 100644 docs/build/html/classmlx_1_1core_1_1_reshape.png create mode 100644 docs/build/html/classmlx_1_1core_1_1_round-members.html create mode 100644 docs/build/html/classmlx_1_1core_1_1_round.html create mode 100644 docs/build/html/classmlx_1_1core_1_1_round.png create mode 100644 docs/build/html/classmlx_1_1core_1_1_s_v_d-members.html create mode 100644 docs/build/html/classmlx_1_1core_1_1_s_v_d.html create mode 100644 docs/build/html/classmlx_1_1core_1_1_s_v_d.png create mode 100644 docs/build/html/classmlx_1_1core_1_1_scan-members.html create mode 100644 docs/build/html/classmlx_1_1core_1_1_scan.html create mode 100644 docs/build/html/classmlx_1_1core_1_1_scan.png create mode 100644 docs/build/html/classmlx_1_1core_1_1_scatter-members.html create mode 100644 docs/build/html/classmlx_1_1core_1_1_scatter.html create mode 100644 docs/build/html/classmlx_1_1core_1_1_scatter.png create mode 100644 docs/build/html/classmlx_1_1core_1_1_select-members.html create mode 100644 docs/build/html/classmlx_1_1core_1_1_select.html create mode 100644 docs/build/html/classmlx_1_1core_1_1_select.png create mode 100644 docs/build/html/classmlx_1_1core_1_1_sigmoid-members.html create mode 100644 docs/build/html/classmlx_1_1core_1_1_sigmoid.html create mode 100644 docs/build/html/classmlx_1_1core_1_1_sigmoid.png create mode 100644 docs/build/html/classmlx_1_1core_1_1_sign-members.html create mode 100644 docs/build/html/classmlx_1_1core_1_1_sign.html create mode 100644 docs/build/html/classmlx_1_1core_1_1_sign.png create mode 100644 docs/build/html/classmlx_1_1core_1_1_sin-members.html create mode 100644 docs/build/html/classmlx_1_1core_1_1_sin.html create mode 100644 docs/build/html/classmlx_1_1core_1_1_sin.png create mode 100644 docs/build/html/classmlx_1_1core_1_1_sinh-members.html create mode 100644 docs/build/html/classmlx_1_1core_1_1_sinh.html create mode 100644 docs/build/html/classmlx_1_1core_1_1_sinh.png create mode 100644 docs/build/html/classmlx_1_1core_1_1_slice-members.html create mode 100644 docs/build/html/classmlx_1_1core_1_1_slice.html create mode 100644 docs/build/html/classmlx_1_1core_1_1_slice.png create mode 100644 docs/build/html/classmlx_1_1core_1_1_slice_update-members.html create mode 100644 docs/build/html/classmlx_1_1core_1_1_slice_update.html create mode 100644 docs/build/html/classmlx_1_1core_1_1_slice_update.png create mode 100644 docs/build/html/classmlx_1_1core_1_1_softmax-members.html create mode 100644 docs/build/html/classmlx_1_1core_1_1_softmax.html create mode 100644 docs/build/html/classmlx_1_1core_1_1_softmax.png create mode 100644 docs/build/html/classmlx_1_1core_1_1_sort-members.html create mode 100644 docs/build/html/classmlx_1_1core_1_1_sort.html create mode 100644 docs/build/html/classmlx_1_1core_1_1_sort.png create mode 100644 docs/build/html/classmlx_1_1core_1_1_split-members.html create mode 100644 docs/build/html/classmlx_1_1core_1_1_split.html create mode 100644 docs/build/html/classmlx_1_1core_1_1_split.png create mode 100644 docs/build/html/classmlx_1_1core_1_1_sqrt-members.html create mode 100644 docs/build/html/classmlx_1_1core_1_1_sqrt.html create mode 100644 docs/build/html/classmlx_1_1core_1_1_sqrt.png create mode 100644 docs/build/html/classmlx_1_1core_1_1_square-members.html create mode 100644 docs/build/html/classmlx_1_1core_1_1_square.html create mode 100644 docs/build/html/classmlx_1_1core_1_1_square.png create mode 100644 docs/build/html/classmlx_1_1core_1_1_stop_gradient-members.html create mode 100644 docs/build/html/classmlx_1_1core_1_1_stop_gradient.html create mode 100644 docs/build/html/classmlx_1_1core_1_1_stop_gradient.png create mode 100644 docs/build/html/classmlx_1_1core_1_1_subtract-members.html create mode 100644 docs/build/html/classmlx_1_1core_1_1_subtract.html create mode 100644 docs/build/html/classmlx_1_1core_1_1_subtract.png create mode 100644 docs/build/html/classmlx_1_1core_1_1_tan-members.html create mode 100644 docs/build/html/classmlx_1_1core_1_1_tan.html create mode 100644 docs/build/html/classmlx_1_1core_1_1_tan.png create mode 100644 docs/build/html/classmlx_1_1core_1_1_tanh-members.html create mode 100644 docs/build/html/classmlx_1_1core_1_1_tanh.html create mode 100644 docs/build/html/classmlx_1_1core_1_1_tanh.png create mode 100644 docs/build/html/classmlx_1_1core_1_1_transpose-members.html create mode 100644 docs/build/html/classmlx_1_1core_1_1_transpose.html create mode 100644 docs/build/html/classmlx_1_1core_1_1_transpose.png create mode 100644 docs/build/html/classmlx_1_1core_1_1_unary_primitive-members.html create mode 100644 docs/build/html/classmlx_1_1core_1_1_unary_primitive.html create mode 100644 docs/build/html/classmlx_1_1core_1_1_unary_primitive.png create mode 100644 docs/build/html/classmlx_1_1core_1_1_uniform-members.html create mode 100644 docs/build/html/classmlx_1_1core_1_1_uniform.html create mode 100644 docs/build/html/classmlx_1_1core_1_1_uniform.png create mode 100644 docs/build/html/classmlx_1_1core_1_1_view-members.html create mode 100644 docs/build/html/classmlx_1_1core_1_1_view.html create mode 100644 docs/build/html/classmlx_1_1core_1_1_view.png create mode 100644 docs/build/html/classmlx_1_1core_1_1allocator_1_1_allocator-members.html create mode 100644 docs/build/html/classmlx_1_1core_1_1allocator_1_1_allocator.html create mode 100644 docs/build/html/classmlx_1_1core_1_1allocator_1_1_allocator.png create mode 100644 docs/build/html/classmlx_1_1core_1_1allocator_1_1_buffer-members.html create mode 100644 docs/build/html/classmlx_1_1core_1_1allocator_1_1_buffer.html create mode 100644 docs/build/html/classmlx_1_1core_1_1allocator_1_1_common_allocator-members.html create mode 100644 docs/build/html/classmlx_1_1core_1_1allocator_1_1_common_allocator.html create mode 100644 docs/build/html/classmlx_1_1core_1_1allocator_1_1_common_allocator.png create mode 100644 docs/build/html/classmlx_1_1core_1_1array-members.html create mode 100644 docs/build/html/classmlx_1_1core_1_1array.html create mode 100644 docs/build/html/classmlx_1_1core_1_1distributed_1_1_all_gather-members.html create mode 100644 docs/build/html/classmlx_1_1core_1_1distributed_1_1_all_gather.html create mode 100644 docs/build/html/classmlx_1_1core_1_1distributed_1_1_all_gather.png create mode 100644 docs/build/html/classmlx_1_1core_1_1distributed_1_1_all_reduce-members.html create mode 100644 docs/build/html/classmlx_1_1core_1_1distributed_1_1_all_reduce.html create mode 100644 docs/build/html/classmlx_1_1core_1_1distributed_1_1_all_reduce.png create mode 100644 docs/build/html/classmlx_1_1core_1_1distributed_1_1_dist_primitive-members.html create mode 100644 docs/build/html/classmlx_1_1core_1_1distributed_1_1_dist_primitive.html create mode 100644 docs/build/html/classmlx_1_1core_1_1distributed_1_1_dist_primitive.png create mode 100644 docs/build/html/classmlx_1_1core_1_1fast_1_1_custom-members.html create mode 100644 docs/build/html/classmlx_1_1core_1_1fast_1_1_custom.html create mode 100644 docs/build/html/classmlx_1_1core_1_1fast_1_1_custom.png create mode 100644 docs/build/html/classmlx_1_1core_1_1fast_1_1_layer_norm-members.html create mode 100644 docs/build/html/classmlx_1_1core_1_1fast_1_1_layer_norm.html create mode 100644 docs/build/html/classmlx_1_1core_1_1fast_1_1_layer_norm.png create mode 100644 docs/build/html/classmlx_1_1core_1_1fast_1_1_layer_norm_v_j_p-members.html create mode 100644 docs/build/html/classmlx_1_1core_1_1fast_1_1_layer_norm_v_j_p.html create mode 100644 docs/build/html/classmlx_1_1core_1_1fast_1_1_layer_norm_v_j_p.png create mode 100644 docs/build/html/classmlx_1_1core_1_1fast_1_1_r_m_s_norm-members.html create mode 100644 docs/build/html/classmlx_1_1core_1_1fast_1_1_r_m_s_norm.html create mode 100644 docs/build/html/classmlx_1_1core_1_1fast_1_1_r_m_s_norm.png create mode 100644 docs/build/html/classmlx_1_1core_1_1fast_1_1_r_m_s_norm_v_j_p-members.html create mode 100644 docs/build/html/classmlx_1_1core_1_1fast_1_1_r_m_s_norm_v_j_p.html create mode 100644 docs/build/html/classmlx_1_1core_1_1fast_1_1_r_m_s_norm_v_j_p.png create mode 100644 docs/build/html/classmlx_1_1core_1_1fast_1_1_ro_p_e-members.html create mode 100644 docs/build/html/classmlx_1_1core_1_1fast_1_1_ro_p_e.html create mode 100644 docs/build/html/classmlx_1_1core_1_1fast_1_1_ro_p_e.png create mode 100644 docs/build/html/classmlx_1_1core_1_1fast_1_1_scaled_dot_product_attention-members.html create mode 100644 docs/build/html/classmlx_1_1core_1_1fast_1_1_scaled_dot_product_attention.html create mode 100644 docs/build/html/classmlx_1_1core_1_1fast_1_1_scaled_dot_product_attention.png create mode 100644 docs/build/html/classmlx_1_1core_1_1io_1_1_file_reader-members.html create mode 100644 docs/build/html/classmlx_1_1core_1_1io_1_1_file_reader.html create mode 100644 docs/build/html/classmlx_1_1core_1_1io_1_1_file_reader.png create mode 100644 docs/build/html/classmlx_1_1core_1_1io_1_1_file_writer-members.html create mode 100644 docs/build/html/classmlx_1_1core_1_1io_1_1_file_writer.html create mode 100644 docs/build/html/classmlx_1_1core_1_1io_1_1_file_writer.png create mode 100644 docs/build/html/classmlx_1_1core_1_1io_1_1_reader-members.html create mode 100644 docs/build/html/classmlx_1_1core_1_1io_1_1_reader.html create mode 100644 docs/build/html/classmlx_1_1core_1_1io_1_1_reader.png create mode 100644 docs/build/html/classmlx_1_1core_1_1io_1_1_writer-members.html create mode 100644 docs/build/html/classmlx_1_1core_1_1io_1_1_writer.html create mode 100644 docs/build/html/classmlx_1_1core_1_1io_1_1_writer.png create mode 100644 docs/build/html/classmlx_1_1core_1_1metal_1_1_device-members.html create mode 100644 docs/build/html/classmlx_1_1core_1_1metal_1_1_device.html create mode 100644 docs/build/html/classmlx_1_1core_1_1metal_1_1_metal_allocator-members.html create mode 100644 docs/build/html/classmlx_1_1core_1_1metal_1_1_metal_allocator.html create mode 100644 docs/build/html/classmlx_1_1core_1_1metal_1_1_metal_allocator.png create mode 100644 docs/build/html/classmlx_1_1core_1_1random_1_1_key_sequence-members.html create mode 100644 docs/build/html/classmlx_1_1core_1_1random_1_1_key_sequence.html create mode 100644 docs/build/html/classmlx_1_1core_1_1scheduler_1_1_scheduler-members.html create mode 100644 docs/build/html/classmlx_1_1core_1_1scheduler_1_1_scheduler.html create mode 100644 docs/build/html/classpocketfft_1_1detail_1_1_t__dcst23-members.html create mode 100644 docs/build/html/classpocketfft_1_1detail_1_1_t__dcst23.html create mode 100644 docs/build/html/classpocketfft_1_1detail_1_1_t__dcst4-members.html create mode 100644 docs/build/html/classpocketfft_1_1detail_1_1_t__dcst4.html create mode 100644 docs/build/html/classpocketfft_1_1detail_1_1_t__dct1-members.html create mode 100644 docs/build/html/classpocketfft_1_1detail_1_1_t__dct1.html create mode 100644 docs/build/html/classpocketfft_1_1detail_1_1_t__dst1-members.html create mode 100644 docs/build/html/classpocketfft_1_1detail_1_1_t__dst1.html create mode 100644 docs/build/html/classpocketfft_1_1detail_1_1arr-members.html create mode 100644 docs/build/html/classpocketfft_1_1detail_1_1arr.html create mode 100644 docs/build/html/classpocketfft_1_1detail_1_1arr__info-members.html create mode 100644 docs/build/html/classpocketfft_1_1detail_1_1arr__info.html create mode 100644 docs/build/html/classpocketfft_1_1detail_1_1arr__info.png create mode 100644 docs/build/html/classpocketfft_1_1detail_1_1cfftp-members.html create mode 100644 docs/build/html/classpocketfft_1_1detail_1_1cfftp.html create mode 100644 docs/build/html/classpocketfft_1_1detail_1_1cndarr-members.html create mode 100644 docs/build/html/classpocketfft_1_1detail_1_1cndarr.html create mode 100644 docs/build/html/classpocketfft_1_1detail_1_1cndarr.png create mode 100644 docs/build/html/classpocketfft_1_1detail_1_1fftblue-members.html create mode 100644 docs/build/html/classpocketfft_1_1detail_1_1fftblue.html create mode 100644 docs/build/html/classpocketfft_1_1detail_1_1multi__iter-members.html create mode 100644 docs/build/html/classpocketfft_1_1detail_1_1multi__iter.html create mode 100644 docs/build/html/classpocketfft_1_1detail_1_1ndarr-members.html create mode 100644 docs/build/html/classpocketfft_1_1detail_1_1ndarr.html create mode 100644 docs/build/html/classpocketfft_1_1detail_1_1ndarr.png create mode 100644 docs/build/html/classpocketfft_1_1detail_1_1pocketfft__c-members.html create mode 100644 docs/build/html/classpocketfft_1_1detail_1_1pocketfft__c.html create mode 100644 docs/build/html/classpocketfft_1_1detail_1_1pocketfft__r-members.html create mode 100644 docs/build/html/classpocketfft_1_1detail_1_1pocketfft__r.html create mode 100644 docs/build/html/classpocketfft_1_1detail_1_1rev__iter-members.html create mode 100644 docs/build/html/classpocketfft_1_1detail_1_1rev__iter.html create mode 100644 docs/build/html/classpocketfft_1_1detail_1_1rfftp-members.html create mode 100644 docs/build/html/classpocketfft_1_1detail_1_1rfftp.html create mode 100644 docs/build/html/classpocketfft_1_1detail_1_1simple__iter-members.html create mode 100644 docs/build/html/classpocketfft_1_1detail_1_1simple__iter.html create mode 100644 docs/build/html/classpocketfft_1_1detail_1_1sincos__2pibyn-members.html create mode 100644 docs/build/html/classpocketfft_1_1detail_1_1sincos__2pibyn.html create mode 100644 docs/build/html/classpocketfft_1_1detail_1_1threading_1_1concurrent__queue-members.html create mode 100644 docs/build/html/classpocketfft_1_1detail_1_1threading_1_1concurrent__queue.html create mode 100644 docs/build/html/classpocketfft_1_1detail_1_1threading_1_1latch-members.html create mode 100644 docs/build/html/classpocketfft_1_1detail_1_1threading_1_1latch.html create mode 100644 docs/build/html/classpocketfft_1_1detail_1_1threading_1_1thread__pool-members.html create mode 100644 docs/build/html/classpocketfft_1_1detail_1_1threading_1_1thread__pool.html create mode 100644 docs/build/html/clipboard.js create mode 100644 docs/build/html/closed.png create mode 100644 docs/build/html/common_2arange_8h.html create mode 100644 docs/build/html/common_2arange_8h_source.html create mode 100644 docs/build/html/common_2binary_8h.html create mode 100644 docs/build/html/common_2binary_8h_source.html create mode 100644 docs/build/html/common_2binary__two_8h.html create mode 100644 docs/build/html/common_2binary__two_8h_source.html create mode 100644 docs/build/html/common_2copy_8h.html create mode 100644 docs/build/html/common_2copy_8h_source.html create mode 100644 docs/build/html/common_2reduce_8h.html create mode 100644 docs/build/html/common_2reduce_8h_source.html create mode 100644 docs/build/html/common_2slicing_8h.html create mode 100644 docs/build/html/common_2slicing_8h_source.html create mode 100644 docs/build/html/common_2ternary_8h.html create mode 100644 docs/build/html/common_2ternary_8h_source.html create mode 100644 docs/build/html/common_2unary_8h.html create mode 100644 docs/build/html/common_2unary_8h_source.html create mode 100644 docs/build/html/compile_8h.html create mode 100644 docs/build/html/compile_8h_source.html create mode 100644 docs/build/html/compile__impl_8h.html create mode 100644 docs/build/html/compile__impl_8h_source.html create mode 100644 docs/build/html/compiled_8h.html create mode 100644 docs/build/html/compiled_8h_source.html create mode 100644 docs/build/html/compiled__preamble_8h.html create mode 100644 docs/build/html/compiled__preamble_8h_source.html create mode 100644 docs/build/html/conv_2loader_8h.html create mode 100644 docs/build/html/conv_2loader_8h_source.html create mode 100644 docs/build/html/conv_2params_8h.html create mode 100644 docs/build/html/conv_2params_8h_source.html create mode 100644 docs/build/html/conv_8h.html create mode 100644 docs/build/html/conv_8h_source.html create mode 100644 docs/build/html/cookie.js create mode 100644 docs/build/html/defines_8h.html create mode 100644 docs/build/html/defines_8h_source.html create mode 100644 docs/build/html/device_8h.html create mode 100644 docs/build/html/device_8h_source.html create mode 100644 docs/build/html/dir_1683daa6c50d5a1449f58a10604f9f12.html create mode 100644 docs/build/html/dir_1d446c9bd3c99228254c9484e0bc5c06.html create mode 100644 docs/build/html/dir_2193406f5b2eae6fc53753d8a9a80df3.html create mode 100644 docs/build/html/dir_23833761034051b43bb6c170b56e2cce.html create mode 100644 docs/build/html/dir_4336740ec0075891704443b417fef6cb.html create mode 100644 docs/build/html/dir_47795aa8999234f6f402f7e89d34d08e.html create mode 100644 docs/build/html/dir_6379e541ea5051a09bc0e3fdd92fcd3b.html create mode 100644 docs/build/html/dir_6768c99e6145fb9510ccdb40db8ede25.html create mode 100644 docs/build/html/dir_70a37effa88bcbd6b791977fa1e64356.html create mode 100644 docs/build/html/dir_76215a6c54e2b67053e723fc2395583c.html create mode 100644 docs/build/html/dir_86b95e7b1d0d6e25466bb9213752d32f.html create mode 100644 docs/build/html/dir_8c751ccfa9f494753d976761a9d60a84.html create mode 100644 docs/build/html/dir_938ab0ecf10b8b860ff766c820f665fd.html create mode 100644 docs/build/html/dir_9c555e3d0f5b8c3fb3a7397c81fd5bf9.html create mode 100644 docs/build/html/dir_ad00dcd1517bfdbe01f68ec9b4eff877.html create mode 100644 docs/build/html/dir_ba4426224ef60f409462a2a12fa18f06.html create mode 100644 docs/build/html/dir_d0c977ea65824390717cdb7efc36c157.html create mode 100644 docs/build/html/dir_df9494e83ef22ae6150a0e080d9709ed.html create mode 100644 docs/build/html/dir_f149b24a1b5be11cd70151abe517e3f8.html create mode 100644 docs/build/html/dir_f60cd69d27fd3faa641c79056fff0e2d.html create mode 100644 docs/build/html/distributed_2ops_8h.html create mode 100644 docs/build/html/distributed_2ops_8h_source.html create mode 100644 docs/build/html/distributed_2primitives_8h.html create mode 100644 docs/build/html/distributed_2primitives_8h_source.html create mode 100644 docs/build/html/distributed_8h.html create mode 100644 docs/build/html/distributed_8h_source.html create mode 100644 docs/build/html/doc.svg create mode 100644 docs/build/html/docd.svg create mode 100644 docs/build/html/doxygen.css create mode 100644 docs/build/html/doxygen.svg create mode 100644 docs/build/html/doxygen_crawl.html create mode 100644 docs/build/html/dtype_8h.html create mode 100644 docs/build/html/dtype_8h_source.html create mode 100644 docs/build/html/dynsections.js create mode 100644 docs/build/html/erf_8h.html create mode 100644 docs/build/html/erf_8h_source.html create mode 100644 docs/build/html/event_8h.html create mode 100644 docs/build/html/event_8h_source.html create mode 100644 docs/build/html/expm1f_8h.html create mode 100644 docs/build/html/expm1f_8h_source.html create mode 100644 docs/build/html/fast_8h.html create mode 100644 docs/build/html/fast_8h_source.html create mode 100644 docs/build/html/fast__primitives_8h.html create mode 100644 docs/build/html/fast__primitives_8h_source.html create mode 100644 docs/build/html/fft_8h.html create mode 100644 docs/build/html/fft_8h_source.html create mode 100644 docs/build/html/files.html create mode 100644 docs/build/html/folderclosed.svg create mode 100644 docs/build/html/folderclosedd.svg create mode 100644 docs/build/html/folderopen.svg create mode 100644 docs/build/html/folderopend.svg create mode 100644 docs/build/html/fp16_8h.html create mode 100644 docs/build/html/fp16_8h_source.html create mode 100644 docs/build/html/functions.html create mode 100644 docs/build/html/functions_a.html create mode 100644 docs/build/html/functions_b.html create mode 100644 docs/build/html/functions_c.html create mode 100644 docs/build/html/functions_d.html create mode 100644 docs/build/html/functions_e.html create mode 100644 docs/build/html/functions_enum.html create mode 100644 docs/build/html/functions_eval.html create mode 100644 docs/build/html/functions_f.html create mode 100644 docs/build/html/functions_func.html create mode 100644 docs/build/html/functions_func_a.html create mode 100644 docs/build/html/functions_func_b.html create mode 100644 docs/build/html/functions_func_c.html create mode 100644 docs/build/html/functions_func_d.html create mode 100644 docs/build/html/functions_func_e.html create mode 100644 docs/build/html/functions_func_f.html create mode 100644 docs/build/html/functions_func_g.html create mode 100644 docs/build/html/functions_func_h.html create mode 100644 docs/build/html/functions_func_i.html create mode 100644 docs/build/html/functions_func_j.html create mode 100644 docs/build/html/functions_func_k.html create mode 100644 docs/build/html/functions_func_l.html create mode 100644 docs/build/html/functions_func_m.html create mode 100644 docs/build/html/functions_func_n.html create mode 100644 docs/build/html/functions_func_o.html create mode 100644 docs/build/html/functions_func_p.html create mode 100644 docs/build/html/functions_func_q.html create mode 100644 docs/build/html/functions_func_r.html create mode 100644 docs/build/html/functions_func_s.html create mode 100644 docs/build/html/functions_func_t.html create mode 100644 docs/build/html/functions_func_u.html create mode 100644 docs/build/html/functions_func_v.html create mode 100644 docs/build/html/functions_func_w.html create mode 100644 docs/build/html/functions_func_~.html create mode 100644 docs/build/html/functions_g.html create mode 100644 docs/build/html/functions_h.html create mode 100644 docs/build/html/functions_i.html create mode 100644 docs/build/html/functions_j.html create mode 100644 docs/build/html/functions_k.html create mode 100644 docs/build/html/functions_l.html create mode 100644 docs/build/html/functions_m.html create mode 100644 docs/build/html/functions_n.html create mode 100644 docs/build/html/functions_o.html create mode 100644 docs/build/html/functions_p.html create mode 100644 docs/build/html/functions_q.html create mode 100644 docs/build/html/functions_r.html create mode 100644 docs/build/html/functions_rela.html create mode 100644 docs/build/html/functions_s.html create mode 100644 docs/build/html/functions_t.html create mode 100644 docs/build/html/functions_type.html create mode 100644 docs/build/html/functions_u.html create mode 100644 docs/build/html/functions_v.html create mode 100644 docs/build/html/functions_vars.html create mode 100644 docs/build/html/functions_vars_b.html create mode 100644 docs/build/html/functions_vars_c.html create mode 100644 docs/build/html/functions_vars_d.html create mode 100644 docs/build/html/functions_vars_e.html create mode 100644 docs/build/html/functions_vars_f.html create mode 100644 docs/build/html/functions_vars_g.html create mode 100644 docs/build/html/functions_vars_i.html create mode 100644 docs/build/html/functions_vars_j.html create mode 100644 docs/build/html/functions_vars_k.html create mode 100644 docs/build/html/functions_vars_l.html create mode 100644 docs/build/html/functions_vars_m.html create mode 100644 docs/build/html/functions_vars_n.html create mode 100644 docs/build/html/functions_vars_o.html create mode 100644 docs/build/html/functions_vars_p.html create mode 100644 docs/build/html/functions_vars_q.html create mode 100644 docs/build/html/functions_vars_r.html create mode 100644 docs/build/html/functions_vars_s.html create mode 100644 docs/build/html/functions_vars_t.html create mode 100644 docs/build/html/functions_vars_v.html create mode 100644 docs/build/html/functions_vars_w.html create mode 100644 docs/build/html/functions_vars_x.html create mode 100644 docs/build/html/functions_w.html create mode 100644 docs/build/html/functions_x.html create mode 100644 docs/build/html/functions_~.html create mode 100644 docs/build/html/gather_8h.html create mode 100644 docs/build/html/gather_8h_source.html create mode 100644 docs/build/html/gemm_2loader_8h.html create mode 100644 docs/build/html/gemm_2loader_8h_source.html create mode 100644 docs/build/html/gemm_2params_8h.html create mode 100644 docs/build/html/gemm_2params_8h_source.html create mode 100644 docs/build/html/gguf_8h.html create mode 100644 docs/build/html/gguf_8h_source.html create mode 100644 docs/build/html/globals.html create mode 100644 docs/build/html/globals_a.html create mode 100644 docs/build/html/globals_b.html create mode 100644 docs/build/html/globals_c.html create mode 100644 docs/build/html/globals_d.html create mode 100644 docs/build/html/globals_defs.html create mode 100644 docs/build/html/globals_e.html create mode 100644 docs/build/html/globals_f.html create mode 100644 docs/build/html/globals_func.html create mode 100644 docs/build/html/globals_func_a.html create mode 100644 docs/build/html/globals_func_b.html create mode 100644 docs/build/html/globals_func_c.html create mode 100644 docs/build/html/globals_func_e.html create mode 100644 docs/build/html/globals_func_f.html create mode 100644 docs/build/html/globals_func_g.html create mode 100644 docs/build/html/globals_func_i.html create mode 100644 docs/build/html/globals_func_l.html create mode 100644 docs/build/html/globals_func_m.html create mode 100644 docs/build/html/globals_func_o.html create mode 100644 docs/build/html/globals_func_p.html create mode 100644 docs/build/html/globals_func_r.html create mode 100644 docs/build/html/globals_func_s.html create mode 100644 docs/build/html/globals_func_t.html create mode 100644 docs/build/html/globals_func_u.html create mode 100644 docs/build/html/globals_func_w.html create mode 100644 docs/build/html/globals_g.html create mode 100644 docs/build/html/globals_h.html create mode 100644 docs/build/html/globals_i.html create mode 100644 docs/build/html/globals_l.html create mode 100644 docs/build/html/globals_m.html create mode 100644 docs/build/html/globals_n.html create mode 100644 docs/build/html/globals_o.html create mode 100644 docs/build/html/globals_p.html create mode 100644 docs/build/html/globals_r.html create mode 100644 docs/build/html/globals_s.html create mode 100644 docs/build/html/globals_t.html create mode 100644 docs/build/html/globals_type.html create mode 100644 docs/build/html/globals_u.html create mode 100644 docs/build/html/globals_vars.html create mode 100644 docs/build/html/globals_w.html create mode 100644 docs/build/html/globals_z.html create mode 100644 docs/build/html/graph__utils_8h.html create mode 100644 docs/build/html/graph__utils_8h_source.html create mode 100644 docs/build/html/group__ops.html create mode 100644 docs/build/html/half__types_8h.html create mode 100644 docs/build/html/half__types_8h_source.html create mode 100644 docs/build/html/hierarchy.html create mode 100644 docs/build/html/includes_8h.html create mode 100644 docs/build/html/includes_8h_source.html create mode 100644 docs/build/html/io_8h.html create mode 100644 docs/build/html/io_8h_source.html create mode 100644 docs/build/html/jit_2indexing_8h.html create mode 100644 docs/build/html/jit_2indexing_8h_source.html create mode 100644 docs/build/html/jit_2scan_8h.html create mode 100644 docs/build/html/jit_2scan_8h_source.html create mode 100644 docs/build/html/jit_2softmax_8h.html create mode 100644 docs/build/html/jit_2softmax_8h_source.html create mode 100644 docs/build/html/jit_2sort_8h.html create mode 100644 docs/build/html/jit_2sort_8h_source.html create mode 100644 docs/build/html/jit_2steel__conv_8h.html create mode 100644 docs/build/html/jit_2steel__conv_8h_source.html create mode 100644 docs/build/html/jquery.js create mode 100644 docs/build/html/kernels_2indexing_8h.html create mode 100644 docs/build/html/kernels_2indexing_8h_source.html create mode 100644 docs/build/html/kernels_2scan_8h.html create mode 100644 docs/build/html/kernels_2scan_8h_source.html create mode 100644 docs/build/html/kernels_2softmax_8h.html create mode 100644 docs/build/html/kernels_2softmax_8h_source.html create mode 100644 docs/build/html/kernels_2sort_8h.html create mode 100644 docs/build/html/kernels_2sort_8h_source.html create mode 100644 docs/build/html/kernels_2steel_2conv_2kernels_2steel__conv_8h.html create mode 100644 docs/build/html/kernels_2steel_2conv_2kernels_2steel__conv_8h_source.html create mode 100644 docs/build/html/kernels_2steel_2gemm_2gemm_8h.html create mode 100644 docs/build/html/kernels_2steel_2gemm_2gemm_8h_source.html create mode 100644 docs/build/html/kernels_8h.html create mode 100644 docs/build/html/kernels_8h_source.html create mode 100644 docs/build/html/lapack__helper_8h.html create mode 100644 docs/build/html/lapack__helper_8h_source.html create mode 100644 docs/build/html/linalg_8h.html create mode 100644 docs/build/html/linalg_8h_source.html create mode 100644 docs/build/html/load_8h.html create mode 100644 docs/build/html/load_8h_source.html create mode 100644 docs/build/html/loader__channel__l_8h.html create mode 100644 docs/build/html/loader__channel__l_8h_source.html create mode 100644 docs/build/html/loader__channel__n_8h.html create mode 100644 docs/build/html/loader__channel__n_8h_source.html create mode 100644 docs/build/html/loader__general_8h.html create mode 100644 docs/build/html/loader__general_8h_source.html create mode 100644 docs/build/html/matmul_8h.html create mode 100644 docs/build/html/matmul_8h_source.html create mode 100644 docs/build/html/menu.js create mode 100644 docs/build/html/menudata.js create mode 100644 docs/build/html/metal_2binary_8h.html create mode 100644 docs/build/html/metal_2binary_8h_source.html create mode 100644 docs/build/html/metal_2copy_8h.html create mode 100644 docs/build/html/metal_2copy_8h_source.html create mode 100644 docs/build/html/metal_2jit_2arange_8h.html create mode 100644 docs/build/html/metal_2jit_2arange_8h_source.html create mode 100644 docs/build/html/metal_2jit_2binary_8h.html create mode 100644 docs/build/html/metal_2jit_2binary_8h_source.html create mode 100644 docs/build/html/metal_2jit_2binary__two_8h.html create mode 100644 docs/build/html/metal_2jit_2binary__two_8h_source.html create mode 100644 docs/build/html/metal_2jit_2copy_8h.html create mode 100644 docs/build/html/metal_2jit_2copy_8h_source.html create mode 100644 docs/build/html/metal_2jit_2reduce_8h.html create mode 100644 docs/build/html/metal_2jit_2reduce_8h_source.html create mode 100644 docs/build/html/metal_2jit_2ternary_8h.html create mode 100644 docs/build/html/metal_2jit_2ternary_8h_source.html create mode 100644 docs/build/html/metal_2jit_2unary_8h.html create mode 100644 docs/build/html/metal_2jit_2unary_8h_source.html create mode 100644 docs/build/html/metal_2kernels_2arange_8h.html create mode 100644 docs/build/html/metal_2kernels_2arange_8h_source.html create mode 100644 docs/build/html/metal_2kernels_2binary_8h.html create mode 100644 docs/build/html/metal_2kernels_2binary_8h_source.html create mode 100644 docs/build/html/metal_2kernels_2binary__two_8h.html create mode 100644 docs/build/html/metal_2kernels_2binary__two_8h_source.html create mode 100644 docs/build/html/metal_2kernels_2copy_8h.html create mode 100644 docs/build/html/metal_2kernels_2copy_8h_source.html create mode 100644 docs/build/html/metal_2kernels_2reduce_8h.html create mode 100644 docs/build/html/metal_2kernels_2reduce_8h_source.html create mode 100644 docs/build/html/metal_2kernels_2ternary_8h.html create mode 100644 docs/build/html/metal_2kernels_2ternary_8h_source.html create mode 100644 docs/build/html/metal_2kernels_2unary_8h.html create mode 100644 docs/build/html/metal_2kernels_2unary_8h_source.html create mode 100644 docs/build/html/metal_2reduce_8h.html create mode 100644 docs/build/html/metal_2reduce_8h_source.html create mode 100644 docs/build/html/metal_2slicing_8h.html create mode 100644 docs/build/html/metal_2slicing_8h_source.html create mode 100644 docs/build/html/metal_2ternary_8h.html create mode 100644 docs/build/html/metal_2ternary_8h_source.html create mode 100644 docs/build/html/metal_2unary_8h.html create mode 100644 docs/build/html/metal_2unary_8h_source.html create mode 100644 docs/build/html/metal_8h.html create mode 100644 docs/build/html/metal_8h_source.html create mode 100644 docs/build/html/metal__impl_8h.html create mode 100644 docs/build/html/metal__impl_8h_source.html create mode 100644 docs/build/html/minus.svg create mode 100644 docs/build/html/minusd.svg create mode 100644 docs/build/html/mlx_8h.html create mode 100644 docs/build/html/mlx_8h_source.html create mode 100644 docs/build/html/mma_8h.html create mode 100644 docs/build/html/mma_8h_source.html create mode 100644 docs/build/html/mps_2gemm_8h.html create mode 100644 docs/build/html/mps_2gemm_8h_source.html create mode 100644 docs/build/html/namespace_m_p_s.html create mode 100644 docs/build/html/namespace_m_t_l.html create mode 100644 docs/build/html/namespace_m_t_l_1_1_private.html create mode 100644 docs/build/html/namespace_m_t_l_1_1_private_1_1_class.html create mode 100644 docs/build/html/namespace_m_t_l_1_1_private_1_1_selector.html create mode 100644 docs/build/html/namespacemembers.html create mode 100644 docs/build/html/namespacemembers_a.html create mode 100644 docs/build/html/namespacemembers_b.html create mode 100644 docs/build/html/namespacemembers_c.html create mode 100644 docs/build/html/namespacemembers_d.html create mode 100644 docs/build/html/namespacemembers_e.html create mode 100644 docs/build/html/namespacemembers_enum.html create mode 100644 docs/build/html/namespacemembers_eval.html create mode 100644 docs/build/html/namespacemembers_f.html create mode 100644 docs/build/html/namespacemembers_func.html create mode 100644 docs/build/html/namespacemembers_func_a.html create mode 100644 docs/build/html/namespacemembers_func_b.html create mode 100644 docs/build/html/namespacemembers_func_c.html create mode 100644 docs/build/html/namespacemembers_func_d.html create mode 100644 docs/build/html/namespacemembers_func_e.html create mode 100644 docs/build/html/namespacemembers_func_f.html create mode 100644 docs/build/html/namespacemembers_func_g.html create mode 100644 docs/build/html/namespacemembers_func_i.html create mode 100644 docs/build/html/namespacemembers_func_j.html create mode 100644 docs/build/html/namespacemembers_func_k.html create mode 100644 docs/build/html/namespacemembers_func_l.html create mode 100644 docs/build/html/namespacemembers_func_m.html create mode 100644 docs/build/html/namespacemembers_func_n.html create mode 100644 docs/build/html/namespacemembers_func_o.html create mode 100644 docs/build/html/namespacemembers_func_p.html create mode 100644 docs/build/html/namespacemembers_func_q.html create mode 100644 docs/build/html/namespacemembers_func_r.html create mode 100644 docs/build/html/namespacemembers_func_s.html create mode 100644 docs/build/html/namespacemembers_func_t.html create mode 100644 docs/build/html/namespacemembers_func_u.html create mode 100644 docs/build/html/namespacemembers_func_v.html create mode 100644 docs/build/html/namespacemembers_func_w.html create mode 100644 docs/build/html/namespacemembers_func_z.html create mode 100644 docs/build/html/namespacemembers_g.html create mode 100644 docs/build/html/namespacemembers_i.html create mode 100644 docs/build/html/namespacemembers_j.html create mode 100644 docs/build/html/namespacemembers_k.html create mode 100644 docs/build/html/namespacemembers_l.html create mode 100644 docs/build/html/namespacemembers_m.html create mode 100644 docs/build/html/namespacemembers_n.html create mode 100644 docs/build/html/namespacemembers_o.html create mode 100644 docs/build/html/namespacemembers_p.html create mode 100644 docs/build/html/namespacemembers_q.html create mode 100644 docs/build/html/namespacemembers_r.html create mode 100644 docs/build/html/namespacemembers_s.html create mode 100644 docs/build/html/namespacemembers_t.html create mode 100644 docs/build/html/namespacemembers_type.html create mode 100644 docs/build/html/namespacemembers_u.html create mode 100644 docs/build/html/namespacemembers_v.html create mode 100644 docs/build/html/namespacemembers_vars.html create mode 100644 docs/build/html/namespacemembers_w.html create mode 100644 docs/build/html/namespacemembers_z.html create mode 100644 docs/build/html/namespacemetal.html create mode 100644 docs/build/html/namespacemetal_1_1fast.html create mode 100644 docs/build/html/namespacemetal_1_1precise.html create mode 100644 docs/build/html/namespacemlx.html create mode 100644 docs/build/html/namespacemlx_1_1core.html create mode 100644 docs/build/html/namespacemlx_1_1core_1_1allocator.html create mode 100644 docs/build/html/namespacemlx_1_1core_1_1detail.html create mode 100644 docs/build/html/namespacemlx_1_1core_1_1distributed.html create mode 100644 docs/build/html/namespacemlx_1_1core_1_1distributed_1_1detail.html create mode 100644 docs/build/html/namespacemlx_1_1core_1_1fast.html create mode 100644 docs/build/html/namespacemlx_1_1core_1_1fft.html create mode 100644 docs/build/html/namespacemlx_1_1core_1_1io.html create mode 100644 docs/build/html/namespacemlx_1_1core_1_1linalg.html create mode 100644 docs/build/html/namespacemlx_1_1core_1_1metal.html create mode 100644 docs/build/html/namespacemlx_1_1core_1_1random.html create mode 100644 docs/build/html/namespacemlx_1_1core_1_1scheduler.html create mode 100644 docs/build/html/namespacemlx_1_1steel.html create mode 100644 docs/build/html/namespacepocketfft.html create mode 100644 docs/build/html/namespacepocketfft_1_1detail.html create mode 100644 docs/build/html/namespacepocketfft_1_1detail_1_1threading.html create mode 100644 docs/build/html/namespaces.html create mode 100644 docs/build/html/nav_f.png create mode 100644 docs/build/html/nav_fd.png create mode 100644 docs/build/html/nav_g.png create mode 100644 docs/build/html/nav_h.png create mode 100644 docs/build/html/nav_hd.png create mode 100644 docs/build/html/open.png create mode 100644 docs/build/html/ops_8h.html create mode 100644 docs/build/html/ops_8h_source.html create mode 100644 docs/build/html/plus.svg create mode 100644 docs/build/html/plusd.svg create mode 100644 docs/build/html/pocketfft_8h.html create mode 100644 docs/build/html/pocketfft_8h_source.html create mode 100644 docs/build/html/primitives_8h.html create mode 100644 docs/build/html/primitives_8h_source.html create mode 100644 docs/build/html/python/_autosummary/mlx.core.distributed.Group.html create mode 100644 docs/build/html/python/_autosummary/mlx.core.distributed.all_gather.html create mode 100644 docs/build/html/python/_autosummary/mlx.core.distributed.all_sum.html create mode 100644 docs/build/html/python/_autosummary/mlx.core.distributed.init.html rename docs/build/html/python/_autosummary/{mlx.core.block_sparse_mm.html => mlx.core.distributed.is_available.html} (92%) create mode 100644 docs/build/html/python/_autosummary/mlx.core.view.html create mode 100644 docs/build/html/python/distributed.html create mode 100644 docs/build/html/python/nn/_autosummary/mlx.nn.GLU.html create mode 100644 docs/build/html/python/nn/_autosummary/mlx.nn.HardShrink.html create mode 100644 docs/build/html/python/nn/_autosummary/mlx.nn.HardTanh.html create mode 100644 docs/build/html/python/nn/_autosummary/mlx.nn.Hardswish.html create mode 100644 docs/build/html/python/nn/_autosummary/mlx.nn.LeakyReLU.html create mode 100644 docs/build/html/python/nn/_autosummary/mlx.nn.ReLU6.html create mode 100644 docs/build/html/python/nn/_autosummary/mlx.nn.Softmax.html create mode 100644 docs/build/html/python/nn/_autosummary/mlx.nn.Softmin.html create mode 100644 docs/build/html/python/nn/_autosummary/mlx.nn.Softplus.html create mode 100644 docs/build/html/python/nn/_autosummary/mlx.nn.Softsign.html create mode 100644 docs/build/html/python/nn/_autosummary/mlx.nn.Tanh.html create mode 100644 docs/build/html/python/nn/_autosummary_functions/mlx.nn.hard_shrink.html create mode 100644 docs/build/html/python/nn/_autosummary_functions/mlx.nn.hard_tanh.html create mode 100644 docs/build/html/python/nn/_autosummary_functions/mlx.nn.softmin.html create mode 100644 docs/build/html/radix_8h.html create mode 100644 docs/build/html/radix_8h_source.html create mode 100644 docs/build/html/random_8h.html create mode 100644 docs/build/html/random_8h_source.html create mode 100644 docs/build/html/readwrite_8h.html create mode 100644 docs/build/html/readwrite_8h_source.html create mode 100644 docs/build/html/reduce__all_8h.html create mode 100644 docs/build/html/reduce__all_8h_source.html create mode 100644 docs/build/html/reduce__col_8h.html create mode 100644 docs/build/html/reduce__col_8h_source.html create mode 100644 docs/build/html/reduce__init_8h.html create mode 100644 docs/build/html/reduce__init_8h_source.html create mode 100644 docs/build/html/reduce__row_8h.html create mode 100644 docs/build/html/reduce__row_8h_source.html create mode 100644 docs/build/html/reduce__utils_8h.html create mode 100644 docs/build/html/reduce__utils_8h_source.html create mode 100644 docs/build/html/scaled__dot__product__attention__params_8h.html create mode 100644 docs/build/html/scaled__dot__product__attention__params_8h_source.html create mode 100644 docs/build/html/scatter_8h.html create mode 100644 docs/build/html/scatter_8h_source.html create mode 100644 docs/build/html/scheduler_8h.html create mode 100644 docs/build/html/scheduler_8h_source.html create mode 100644 docs/build/html/search/all_0.js create mode 100644 docs/build/html/search/all_1.js create mode 100644 docs/build/html/search/all_10.js create mode 100644 docs/build/html/search/all_11.js create mode 100644 docs/build/html/search/all_12.js create mode 100644 docs/build/html/search/all_13.js create mode 100644 docs/build/html/search/all_14.js create mode 100644 docs/build/html/search/all_15.js create mode 100644 docs/build/html/search/all_16.js create mode 100644 docs/build/html/search/all_17.js create mode 100644 docs/build/html/search/all_18.js create mode 100644 docs/build/html/search/all_19.js create mode 100644 docs/build/html/search/all_1a.js create mode 100644 docs/build/html/search/all_2.js create mode 100644 docs/build/html/search/all_3.js create mode 100644 docs/build/html/search/all_4.js create mode 100644 docs/build/html/search/all_5.js create mode 100644 docs/build/html/search/all_6.js create mode 100644 docs/build/html/search/all_7.js create mode 100644 docs/build/html/search/all_8.js create mode 100644 docs/build/html/search/all_9.js create mode 100644 docs/build/html/search/all_a.js create mode 100644 docs/build/html/search/all_b.js create mode 100644 docs/build/html/search/all_c.js create mode 100644 docs/build/html/search/all_d.js create mode 100644 docs/build/html/search/all_e.js create mode 100644 docs/build/html/search/all_f.js create mode 100644 docs/build/html/search/classes_0.js create mode 100644 docs/build/html/search/classes_1.js create mode 100644 docs/build/html/search/classes_10.js create mode 100644 docs/build/html/search/classes_11.js create mode 100644 docs/build/html/search/classes_12.js create mode 100644 docs/build/html/search/classes_13.js create mode 100644 docs/build/html/search/classes_14.js create mode 100644 docs/build/html/search/classes_15.js create mode 100644 docs/build/html/search/classes_2.js create mode 100644 docs/build/html/search/classes_3.js create mode 100644 docs/build/html/search/classes_4.js create mode 100644 docs/build/html/search/classes_5.js create mode 100644 docs/build/html/search/classes_6.js create mode 100644 docs/build/html/search/classes_7.js create mode 100644 docs/build/html/search/classes_8.js create mode 100644 docs/build/html/search/classes_9.js create mode 100644 docs/build/html/search/classes_a.js create mode 100644 docs/build/html/search/classes_b.js create mode 100644 docs/build/html/search/classes_c.js create mode 100644 docs/build/html/search/classes_d.js create mode 100644 docs/build/html/search/classes_e.js create mode 100644 docs/build/html/search/classes_f.js create mode 100644 docs/build/html/search/close.svg create mode 100644 docs/build/html/search/defines_0.js create mode 100644 docs/build/html/search/defines_1.js create mode 100644 docs/build/html/search/defines_2.js create mode 100644 docs/build/html/search/defines_3.js create mode 100644 docs/build/html/search/defines_4.js create mode 100644 docs/build/html/search/defines_5.js create mode 100644 docs/build/html/search/defines_6.js create mode 100644 docs/build/html/search/defines_7.js create mode 100644 docs/build/html/search/defines_8.js create mode 100644 docs/build/html/search/defines_9.js create mode 100644 docs/build/html/search/defines_a.js create mode 100644 docs/build/html/search/defines_b.js create mode 100644 docs/build/html/search/defines_c.js create mode 100644 docs/build/html/search/enums_0.js create mode 100644 docs/build/html/search/enums_1.js create mode 100644 docs/build/html/search/enums_2.js create mode 100644 docs/build/html/search/enums_3.js create mode 100644 docs/build/html/search/enums_4.js create mode 100644 docs/build/html/search/enums_5.js create mode 100644 docs/build/html/search/enums_6.js create mode 100644 docs/build/html/search/enums_7.js create mode 100644 docs/build/html/search/enumvalues_0.js create mode 100644 docs/build/html/search/enumvalues_1.js create mode 100644 docs/build/html/search/enumvalues_10.js create mode 100644 docs/build/html/search/enumvalues_11.js create mode 100644 docs/build/html/search/enumvalues_12.js create mode 100644 docs/build/html/search/enumvalues_2.js create mode 100644 docs/build/html/search/enumvalues_3.js create mode 100644 docs/build/html/search/enumvalues_4.js create mode 100644 docs/build/html/search/enumvalues_5.js create mode 100644 docs/build/html/search/enumvalues_6.js create mode 100644 docs/build/html/search/enumvalues_7.js create mode 100644 docs/build/html/search/enumvalues_8.js create mode 100644 docs/build/html/search/enumvalues_9.js create mode 100644 docs/build/html/search/enumvalues_a.js create mode 100644 docs/build/html/search/enumvalues_b.js create mode 100644 docs/build/html/search/enumvalues_c.js create mode 100644 docs/build/html/search/enumvalues_d.js create mode 100644 docs/build/html/search/enumvalues_e.js create mode 100644 docs/build/html/search/enumvalues_f.js create mode 100644 docs/build/html/search/files_0.js create mode 100644 docs/build/html/search/files_1.js create mode 100644 docs/build/html/search/files_10.js create mode 100644 docs/build/html/search/files_11.js create mode 100644 docs/build/html/search/files_2.js create mode 100644 docs/build/html/search/files_3.js create mode 100644 docs/build/html/search/files_4.js create mode 100644 docs/build/html/search/files_5.js create mode 100644 docs/build/html/search/files_6.js create mode 100644 docs/build/html/search/files_7.js create mode 100644 docs/build/html/search/files_8.js create mode 100644 docs/build/html/search/files_9.js create mode 100644 docs/build/html/search/files_a.js create mode 100644 docs/build/html/search/files_b.js create mode 100644 docs/build/html/search/files_c.js create mode 100644 docs/build/html/search/files_d.js create mode 100644 docs/build/html/search/files_e.js create mode 100644 docs/build/html/search/files_f.js create mode 100644 docs/build/html/search/functions_0.js create mode 100644 docs/build/html/search/functions_1.js create mode 100644 docs/build/html/search/functions_10.js create mode 100644 docs/build/html/search/functions_11.js create mode 100644 docs/build/html/search/functions_12.js create mode 100644 docs/build/html/search/functions_13.js create mode 100644 docs/build/html/search/functions_14.js create mode 100644 docs/build/html/search/functions_15.js create mode 100644 docs/build/html/search/functions_16.js create mode 100644 docs/build/html/search/functions_17.js create mode 100644 docs/build/html/search/functions_18.js create mode 100644 docs/build/html/search/functions_19.js create mode 100644 docs/build/html/search/functions_2.js create mode 100644 docs/build/html/search/functions_3.js create mode 100644 docs/build/html/search/functions_4.js create mode 100644 docs/build/html/search/functions_5.js create mode 100644 docs/build/html/search/functions_6.js create mode 100644 docs/build/html/search/functions_7.js create mode 100644 docs/build/html/search/functions_8.js create mode 100644 docs/build/html/search/functions_9.js create mode 100644 docs/build/html/search/functions_a.js create mode 100644 docs/build/html/search/functions_b.js create mode 100644 docs/build/html/search/functions_c.js create mode 100644 docs/build/html/search/functions_d.js create mode 100644 docs/build/html/search/functions_e.js create mode 100644 docs/build/html/search/functions_f.js create mode 100644 docs/build/html/search/groups_0.js create mode 100644 docs/build/html/search/groups_1.js create mode 100644 docs/build/html/search/groups_2.js create mode 100644 docs/build/html/search/mag.svg create mode 100644 docs/build/html/search/mag_d.svg create mode 100644 docs/build/html/search/mag_sel.svg create mode 100644 docs/build/html/search/mag_seld.svg create mode 100644 docs/build/html/search/namespaces_0.js create mode 100644 docs/build/html/search/namespaces_1.js create mode 100644 docs/build/html/search/related_0.js create mode 100644 docs/build/html/search/related_1.js create mode 100644 docs/build/html/search/search.css create mode 100644 docs/build/html/search/search.js create mode 100644 docs/build/html/search/searchdata.js create mode 100644 docs/build/html/search/typedefs_0.js create mode 100644 docs/build/html/search/typedefs_1.js create mode 100644 docs/build/html/search/typedefs_2.js create mode 100644 docs/build/html/search/typedefs_3.js create mode 100644 docs/build/html/search/typedefs_4.js create mode 100644 docs/build/html/search/typedefs_5.js create mode 100644 docs/build/html/search/typedefs_6.js create mode 100644 docs/build/html/search/typedefs_7.js create mode 100644 docs/build/html/search/typedefs_8.js create mode 100644 docs/build/html/search/typedefs_9.js create mode 100644 docs/build/html/search/typedefs_a.js create mode 100644 docs/build/html/search/typedefs_b.js create mode 100644 docs/build/html/search/typedefs_c.js create mode 100644 docs/build/html/search/typedefs_d.js create mode 100644 docs/build/html/search/variables_0.js create mode 100644 docs/build/html/search/variables_1.js create mode 100644 docs/build/html/search/variables_10.js create mode 100644 docs/build/html/search/variables_11.js create mode 100644 docs/build/html/search/variables_12.js create mode 100644 docs/build/html/search/variables_13.js create mode 100644 docs/build/html/search/variables_14.js create mode 100644 docs/build/html/search/variables_15.js create mode 100644 docs/build/html/search/variables_16.js create mode 100644 docs/build/html/search/variables_17.js create mode 100644 docs/build/html/search/variables_18.js create mode 100644 docs/build/html/search/variables_2.js create mode 100644 docs/build/html/search/variables_3.js create mode 100644 docs/build/html/search/variables_4.js create mode 100644 docs/build/html/search/variables_5.js create mode 100644 docs/build/html/search/variables_6.js create mode 100644 docs/build/html/search/variables_7.js create mode 100644 docs/build/html/search/variables_8.js create mode 100644 docs/build/html/search/variables_9.js create mode 100644 docs/build/html/search/variables_a.js create mode 100644 docs/build/html/search/variables_b.js create mode 100644 docs/build/html/search/variables_c.js create mode 100644 docs/build/html/search/variables_d.js create mode 100644 docs/build/html/search/variables_e.js create mode 100644 docs/build/html/search/variables_f.js create mode 100644 docs/build/html/splitbar.png create mode 100644 docs/build/html/splitbard.png create mode 100644 docs/build/html/steel_2defines_8h.html create mode 100644 docs/build/html/steel_2defines_8h_source.html create mode 100644 docs/build/html/steel__conv__general_8h.html create mode 100644 docs/build/html/steel__conv__general_8h_source.html create mode 100644 docs/build/html/steel__gemm_8h.html create mode 100644 docs/build/html/steel__gemm_8h_source.html create mode 100644 docs/build/html/steel__gemm__fused_8h.html create mode 100644 docs/build/html/steel__gemm__fused_8h_source.html create mode 100644 docs/build/html/steel__gemm__masked_8h.html create mode 100644 docs/build/html/steel__gemm__masked_8h_source.html create mode 100644 docs/build/html/steel__gemm__splitk_8h.html create mode 100644 docs/build/html/steel__gemm__splitk_8h_source.html create mode 100644 docs/build/html/stream_8h.html create mode 100644 docs/build/html/stream_8h_source.html create mode 100644 docs/build/html/struct___m_l_x___b_float16-members.html create mode 100644 docs/build/html/struct___m_l_x___b_float16.html create mode 100644 docs/build/html/struct___m_l_x___b_float16_1_1bits__to__bfloat__struct.html create mode 100644 docs/build/html/struct___no_mask-members.html create mode 100644 docs/build/html/struct___no_mask.html create mode 100644 docs/build/html/struct_abs-members.html create mode 100644 docs/build/html/struct_abs.html create mode 100644 docs/build/html/struct_add-members.html create mode 100644 docs/build/html/struct_add.html create mode 100644 docs/build/html/struct_and-members.html create mode 100644 docs/build/html/struct_and.html create mode 100644 docs/build/html/struct_arc_cos-members.html create mode 100644 docs/build/html/struct_arc_cos.html create mode 100644 docs/build/html/struct_arc_cosh-members.html create mode 100644 docs/build/html/struct_arc_cosh.html create mode 100644 docs/build/html/struct_arc_sin-members.html create mode 100644 docs/build/html/struct_arc_sin.html create mode 100644 docs/build/html/struct_arc_sinh-members.html create mode 100644 docs/build/html/struct_arc_sinh.html create mode 100644 docs/build/html/struct_arc_tan-members.html create mode 100644 docs/build/html/struct_arc_tan.html create mode 100644 docs/build/html/struct_arc_tan2-members.html create mode 100644 docs/build/html/struct_arc_tan2.html create mode 100644 docs/build/html/struct_arc_tanh-members.html create mode 100644 docs/build/html/struct_arc_tanh.html create mode 100644 docs/build/html/struct_bitwise_and-members.html create mode 100644 docs/build/html/struct_bitwise_and.html create mode 100644 docs/build/html/struct_bitwise_or-members.html create mode 100644 docs/build/html/struct_bitwise_or.html create mode 100644 docs/build/html/struct_bitwise_xor-members.html create mode 100644 docs/build/html/struct_bitwise_xor.html create mode 100644 docs/build/html/struct_block_merge_sort-members.html create mode 100644 docs/build/html/struct_block_merge_sort.html create mode 100644 docs/build/html/struct_ceil-members.html create mode 100644 docs/build/html/struct_ceil.html create mode 100644 docs/build/html/struct_conjugate-members.html create mode 100644 docs/build/html/struct_conjugate.html create mode 100644 docs/build/html/struct_cos-members.html create mode 100644 docs/build/html/struct_cos.html create mode 100644 docs/build/html/struct_cosh-members.html create mode 100644 docs/build/html/struct_cosh.html create mode 100644 docs/build/html/struct_cum_max-members.html create mode 100644 docs/build/html/struct_cum_max.html create mode 100644 docs/build/html/struct_cum_min-members.html create mode 100644 docs/build/html/struct_cum_min.html create mode 100644 docs/build/html/struct_cum_prod-members.html create mode 100644 docs/build/html/struct_cum_prod.html create mode 100644 docs/build/html/struct_cum_prod_3_01bool_01_4-members.html create mode 100644 docs/build/html/struct_cum_prod_3_01bool_01_4.html create mode 100644 docs/build/html/struct_cum_sum-members.html create mode 100644 docs/build/html/struct_cum_sum.html create mode 100644 docs/build/html/struct_div_mod-members.html create mode 100644 docs/build/html/struct_div_mod.html create mode 100644 docs/build/html/struct_divide-members.html create mode 100644 docs/build/html/struct_divide.html create mode 100644 docs/build/html/struct_equal-members.html create mode 100644 docs/build/html/struct_equal.html create mode 100644 docs/build/html/struct_erf-members.html create mode 100644 docs/build/html/struct_erf.html create mode 100644 docs/build/html/struct_erf_inv-members.html create mode 100644 docs/build/html/struct_erf_inv.html create mode 100644 docs/build/html/struct_exp-members.html create mode 100644 docs/build/html/struct_exp.html create mode 100644 docs/build/html/struct_expm1-members.html create mode 100644 docs/build/html/struct_expm1.html create mode 100644 docs/build/html/struct_floor-members.html create mode 100644 docs/build/html/struct_floor.html create mode 100644 docs/build/html/struct_floor_divide-members.html create mode 100644 docs/build/html/struct_floor_divide.html create mode 100644 docs/build/html/struct_greater-members.html create mode 100644 docs/build/html/struct_greater.html create mode 100644 docs/build/html/struct_greater_equal-members.html create mode 100644 docs/build/html/struct_greater_equal.html create mode 100644 docs/build/html/struct_indices-members.html create mode 100644 docs/build/html/struct_indices.html create mode 100644 docs/build/html/struct_kernel_merge_sort-members.html create mode 100644 docs/build/html/struct_kernel_merge_sort.html create mode 100644 docs/build/html/struct_kernel_multi_block_merge_sort-members.html create mode 100644 docs/build/html/struct_kernel_multi_block_merge_sort.html create mode 100644 docs/build/html/struct_left_shift-members.html create mode 100644 docs/build/html/struct_left_shift.html create mode 100644 docs/build/html/struct_less-members.html create mode 100644 docs/build/html/struct_less.html create mode 100644 docs/build/html/struct_less_equal-members.html create mode 100644 docs/build/html/struct_less_equal.html create mode 100644 docs/build/html/struct_less_than-members.html create mode 100644 docs/build/html/struct_less_than.html create mode 100644 docs/build/html/struct_limits-members.html create mode 100644 docs/build/html/struct_limits.html create mode 100644 docs/build/html/struct_limits_3_01bfloat16__t_01_4-members.html create mode 100644 docs/build/html/struct_limits_3_01bfloat16__t_01_4.html create mode 100644 docs/build/html/struct_limits_3_01bool_01_4-members.html create mode 100644 docs/build/html/struct_limits_3_01bool_01_4.html create mode 100644 docs/build/html/struct_limits_3_01float_01_4-members.html create mode 100644 docs/build/html/struct_limits_3_01float_01_4.html create mode 100644 docs/build/html/struct_limits_3_01half_01_4-members.html create mode 100644 docs/build/html/struct_limits_3_01half_01_4.html create mode 100644 docs/build/html/struct_limits_3_01int16__t_01_4-members.html create mode 100644 docs/build/html/struct_limits_3_01int16__t_01_4.html create mode 100644 docs/build/html/struct_limits_3_01int32__t_01_4-members.html create mode 100644 docs/build/html/struct_limits_3_01int32__t_01_4.html create mode 100644 docs/build/html/struct_limits_3_01int64__t_01_4-members.html create mode 100644 docs/build/html/struct_limits_3_01int64__t_01_4.html create mode 100644 docs/build/html/struct_limits_3_01int8__t_01_4-members.html create mode 100644 docs/build/html/struct_limits_3_01int8__t_01_4.html create mode 100644 docs/build/html/struct_limits_3_01uint16__t_01_4-members.html create mode 100644 docs/build/html/struct_limits_3_01uint16__t_01_4.html create mode 100644 docs/build/html/struct_limits_3_01uint32__t_01_4-members.html create mode 100644 docs/build/html/struct_limits_3_01uint32__t_01_4.html create mode 100644 docs/build/html/struct_limits_3_01uint64__t_01_4-members.html create mode 100644 docs/build/html/struct_limits_3_01uint64__t_01_4.html create mode 100644 docs/build/html/struct_limits_3_01uint8__t_01_4-members.html create mode 100644 docs/build/html/struct_limits_3_01uint8__t_01_4.html create mode 100644 docs/build/html/struct_log-members.html create mode 100644 docs/build/html/struct_log.html create mode 100644 docs/build/html/struct_log10-members.html create mode 100644 docs/build/html/struct_log10.html create mode 100644 docs/build/html/struct_log1p-members.html create mode 100644 docs/build/html/struct_log1p.html create mode 100644 docs/build/html/struct_log2-members.html create mode 100644 docs/build/html/struct_log2.html create mode 100644 docs/build/html/struct_log_add_exp-members.html create mode 100644 docs/build/html/struct_log_add_exp.html create mode 100644 docs/build/html/struct_logical_and-members.html create mode 100644 docs/build/html/struct_logical_and.html create mode 100644 docs/build/html/struct_logical_not-members.html create mode 100644 docs/build/html/struct_logical_not.html create mode 100644 docs/build/html/struct_logical_or-members.html create mode 100644 docs/build/html/struct_logical_or.html create mode 100644 docs/build/html/struct_m_l_x_conv_params-members.html create mode 100644 docs/build/html/struct_m_l_x_conv_params.html create mode 100644 docs/build/html/struct_m_l_x_fast_attention_params-members.html create mode 100644 docs/build/html/struct_m_l_x_fast_attention_params.html create mode 100644 docs/build/html/struct_m_l_x_scaled_dot_product_attention_params-members.html create mode 100644 docs/build/html/struct_m_l_x_scaled_dot_product_attention_params.html create mode 100644 docs/build/html/struct_max-members.html create mode 100644 docs/build/html/struct_max.html create mode 100644 docs/build/html/struct_maximum-members.html create mode 100644 docs/build/html/struct_maximum.html create mode 100644 docs/build/html/struct_min-members.html create mode 100644 docs/build/html/struct_min.html create mode 100644 docs/build/html/struct_minimum-members.html create mode 100644 docs/build/html/struct_minimum.html create mode 100644 docs/build/html/struct_multiply-members.html create mode 100644 docs/build/html/struct_multiply.html create mode 100644 docs/build/html/struct_na_n_equal-members.html create mode 100644 docs/build/html/struct_na_n_equal.html create mode 100644 docs/build/html/struct_negative-members.html create mode 100644 docs/build/html/struct_negative.html create mode 100644 docs/build/html/struct_none-members.html create mode 100644 docs/build/html/struct_none.html create mode 100644 docs/build/html/struct_not_equal-members.html create mode 100644 docs/build/html/struct_not_equal.html create mode 100644 docs/build/html/struct_or-members.html create mode 100644 docs/build/html/struct_or.html create mode 100644 docs/build/html/struct_power-members.html create mode 100644 docs/build/html/struct_power.html create mode 100644 docs/build/html/struct_prod-members.html create mode 100644 docs/build/html/struct_prod.html create mode 100644 docs/build/html/struct_read_writer-members.html create mode 100644 docs/build/html/struct_read_writer.html create mode 100644 docs/build/html/struct_remainder-members.html create mode 100644 docs/build/html/struct_remainder.html create mode 100644 docs/build/html/struct_right_shift-members.html create mode 100644 docs/build/html/struct_right_shift.html create mode 100644 docs/build/html/struct_round-members.html create mode 100644 docs/build/html/struct_round.html create mode 100644 docs/build/html/struct_rsqrt-members.html create mode 100644 docs/build/html/struct_rsqrt.html create mode 100644 docs/build/html/struct_scale_op-members.html create mode 100644 docs/build/html/struct_scale_op.html create mode 100644 docs/build/html/struct_select-members.html create mode 100644 docs/build/html/struct_select.html create mode 100644 docs/build/html/struct_sigmoid-members.html create mode 100644 docs/build/html/struct_sigmoid.html create mode 100644 docs/build/html/struct_sign-members.html create mode 100644 docs/build/html/struct_sign.html create mode 100644 docs/build/html/struct_sin-members.html create mode 100644 docs/build/html/struct_sin.html create mode 100644 docs/build/html/struct_sinh-members.html create mode 100644 docs/build/html/struct_sinh.html create mode 100644 docs/build/html/struct_sqrt-members.html create mode 100644 docs/build/html/struct_sqrt.html create mode 100644 docs/build/html/struct_square-members.html create mode 100644 docs/build/html/struct_square.html create mode 100644 docs/build/html/struct_subtract-members.html create mode 100644 docs/build/html/struct_subtract.html create mode 100644 docs/build/html/struct_sum-members.html create mode 100644 docs/build/html/struct_sum.html create mode 100644 docs/build/html/struct_tan-members.html create mode 100644 docs/build/html/struct_tan.html create mode 100644 docs/build/html/struct_tanh-members.html create mode 100644 docs/build/html/struct_tanh.html create mode 100644 docs/build/html/struct_thread_sort-members.html create mode 100644 docs/build/html/struct_thread_sort.html create mode 100644 docs/build/html/structcomplex64__t-members.html create mode 100644 docs/build/html/structcomplex64__t.html create mode 100644 docs/build/html/structmetal_1_1__numeric__limits__impl_3_01bfloat16__t_01_4-members.html create mode 100644 docs/build/html/structmetal_1_1__numeric__limits__impl_3_01bfloat16__t_01_4.html create mode 100644 docs/build/html/structmetal_1_1__numeric__limits__impl_3_01bfloat16__t_01_4.png create mode 100644 docs/build/html/structmlx_1_1core_1_1___m_l_x___b_float16-members.html create mode 100644 docs/build/html/structmlx_1_1core_1_1___m_l_x___b_float16.html create mode 100644 docs/build/html/structmlx_1_1core_1_1___m_l_x___float16-members.html create mode 100644 docs/build/html/structmlx_1_1core_1_1___m_l_x___float16.html create mode 100644 docs/build/html/structmlx_1_1core_1_1_device-members.html create mode 100644 docs/build/html/structmlx_1_1core_1_1_device.html create mode 100644 docs/build/html/structmlx_1_1core_1_1_dtype-members.html create mode 100644 docs/build/html/structmlx_1_1core_1_1_dtype.html create mode 100644 docs/build/html/structmlx_1_1core_1_1_node_namer-members.html create mode 100644 docs/build/html/structmlx_1_1core_1_1_node_namer.html create mode 100644 docs/build/html/structmlx_1_1core_1_1_print_formatter-members.html create mode 100644 docs/build/html/structmlx_1_1core_1_1_print_formatter.html create mode 100644 docs/build/html/structmlx_1_1core_1_1_reduction_plan-members.html create mode 100644 docs/build/html/structmlx_1_1core_1_1_reduction_plan.html create mode 100644 docs/build/html/structmlx_1_1core_1_1_stream-members.html create mode 100644 docs/build/html/structmlx_1_1core_1_1_stream.html create mode 100644 docs/build/html/structmlx_1_1core_1_1_stream_context-members.html create mode 100644 docs/build/html/structmlx_1_1core_1_1_stream_context.html create mode 100644 docs/build/html/structmlx_1_1core_1_1_type_to_dtype-members.html create mode 100644 docs/build/html/structmlx_1_1core_1_1_type_to_dtype.html create mode 100644 docs/build/html/structmlx_1_1core_1_1array_1_1_array_iterator-members.html create mode 100644 docs/build/html/structmlx_1_1core_1_1array_1_1_array_iterator.html create mode 100644 docs/build/html/structmlx_1_1core_1_1array_1_1_data-members.html create mode 100644 docs/build/html/structmlx_1_1core_1_1array_1_1_data.html create mode 100644 docs/build/html/structmlx_1_1core_1_1array_1_1_flags-members.html create mode 100644 docs/build/html/structmlx_1_1core_1_1array_1_1_flags.html create mode 100644 docs/build/html/structmlx_1_1core_1_1complex128__t-members.html create mode 100644 docs/build/html/structmlx_1_1core_1_1complex128__t.html create mode 100644 docs/build/html/structmlx_1_1core_1_1complex128__t.png create mode 100644 docs/build/html/structmlx_1_1core_1_1complex64__t-members.html create mode 100644 docs/build/html/structmlx_1_1core_1_1complex64__t.html create mode 100644 docs/build/html/structmlx_1_1core_1_1complex64__t.png create mode 100644 docs/build/html/structmlx_1_1core_1_1detail_1_1_abs-members.html create mode 100644 docs/build/html/structmlx_1_1core_1_1detail_1_1_abs.html create mode 100644 docs/build/html/structmlx_1_1core_1_1detail_1_1_add-members.html create mode 100644 docs/build/html/structmlx_1_1core_1_1detail_1_1_add.html create mode 100644 docs/build/html/structmlx_1_1core_1_1detail_1_1_arc_cos-members.html create mode 100644 docs/build/html/structmlx_1_1core_1_1detail_1_1_arc_cos.html create mode 100644 docs/build/html/structmlx_1_1core_1_1detail_1_1_arc_cosh-members.html create mode 100644 docs/build/html/structmlx_1_1core_1_1detail_1_1_arc_cosh.html create mode 100644 docs/build/html/structmlx_1_1core_1_1detail_1_1_arc_sin-members.html create mode 100644 docs/build/html/structmlx_1_1core_1_1detail_1_1_arc_sin.html create mode 100644 docs/build/html/structmlx_1_1core_1_1detail_1_1_arc_sinh-members.html create mode 100644 docs/build/html/structmlx_1_1core_1_1detail_1_1_arc_sinh.html create mode 100644 docs/build/html/structmlx_1_1core_1_1detail_1_1_arc_tan-members.html create mode 100644 docs/build/html/structmlx_1_1core_1_1detail_1_1_arc_tan.html create mode 100644 docs/build/html/structmlx_1_1core_1_1detail_1_1_arc_tan2-members.html create mode 100644 docs/build/html/structmlx_1_1core_1_1detail_1_1_arc_tan2.html create mode 100644 docs/build/html/structmlx_1_1core_1_1detail_1_1_arc_tanh-members.html create mode 100644 docs/build/html/structmlx_1_1core_1_1detail_1_1_arc_tanh.html create mode 100644 docs/build/html/structmlx_1_1core_1_1detail_1_1_bitwise_and-members.html create mode 100644 docs/build/html/structmlx_1_1core_1_1detail_1_1_bitwise_and.html create mode 100644 docs/build/html/structmlx_1_1core_1_1detail_1_1_bitwise_or-members.html create mode 100644 docs/build/html/structmlx_1_1core_1_1detail_1_1_bitwise_or.html create mode 100644 docs/build/html/structmlx_1_1core_1_1detail_1_1_bitwise_xor-members.html create mode 100644 docs/build/html/structmlx_1_1core_1_1detail_1_1_bitwise_xor.html create mode 100644 docs/build/html/structmlx_1_1core_1_1detail_1_1_ceil-members.html create mode 100644 docs/build/html/structmlx_1_1core_1_1detail_1_1_ceil.html create mode 100644 docs/build/html/structmlx_1_1core_1_1detail_1_1_conjugate-members.html create mode 100644 docs/build/html/structmlx_1_1core_1_1detail_1_1_conjugate.html create mode 100644 docs/build/html/structmlx_1_1core_1_1detail_1_1_cos-members.html create mode 100644 docs/build/html/structmlx_1_1core_1_1detail_1_1_cos.html create mode 100644 docs/build/html/structmlx_1_1core_1_1detail_1_1_cosh-members.html create mode 100644 docs/build/html/structmlx_1_1core_1_1detail_1_1_cosh.html create mode 100644 docs/build/html/structmlx_1_1core_1_1detail_1_1_divide-members.html create mode 100644 docs/build/html/structmlx_1_1core_1_1detail_1_1_divide.html create mode 100644 docs/build/html/structmlx_1_1core_1_1detail_1_1_equal-members.html create mode 100644 docs/build/html/structmlx_1_1core_1_1detail_1_1_equal.html create mode 100644 docs/build/html/structmlx_1_1core_1_1detail_1_1_erf-members.html create mode 100644 docs/build/html/structmlx_1_1core_1_1detail_1_1_erf.html create mode 100644 docs/build/html/structmlx_1_1core_1_1detail_1_1_erf_inv-members.html create mode 100644 docs/build/html/structmlx_1_1core_1_1detail_1_1_erf_inv.html create mode 100644 docs/build/html/structmlx_1_1core_1_1detail_1_1_exp-members.html create mode 100644 docs/build/html/structmlx_1_1core_1_1detail_1_1_exp.html create mode 100644 docs/build/html/structmlx_1_1core_1_1detail_1_1_expm1-members.html create mode 100644 docs/build/html/structmlx_1_1core_1_1detail_1_1_expm1.html create mode 100644 docs/build/html/structmlx_1_1core_1_1detail_1_1_floor-members.html create mode 100644 docs/build/html/structmlx_1_1core_1_1detail_1_1_floor.html create mode 100644 docs/build/html/structmlx_1_1core_1_1detail_1_1_greater-members.html create mode 100644 docs/build/html/structmlx_1_1core_1_1detail_1_1_greater.html create mode 100644 docs/build/html/structmlx_1_1core_1_1detail_1_1_greater_equal-members.html create mode 100644 docs/build/html/structmlx_1_1core_1_1detail_1_1_greater_equal.html create mode 100644 docs/build/html/structmlx_1_1core_1_1detail_1_1_in_tracing-members.html create mode 100644 docs/build/html/structmlx_1_1core_1_1detail_1_1_in_tracing.html create mode 100644 docs/build/html/structmlx_1_1core_1_1detail_1_1_left_shift-members.html create mode 100644 docs/build/html/structmlx_1_1core_1_1detail_1_1_left_shift.html create mode 100644 docs/build/html/structmlx_1_1core_1_1detail_1_1_less-members.html create mode 100644 docs/build/html/structmlx_1_1core_1_1detail_1_1_less.html create mode 100644 docs/build/html/structmlx_1_1core_1_1detail_1_1_less_equal-members.html create mode 100644 docs/build/html/structmlx_1_1core_1_1detail_1_1_less_equal.html create mode 100644 docs/build/html/structmlx_1_1core_1_1detail_1_1_log-members.html create mode 100644 docs/build/html/structmlx_1_1core_1_1detail_1_1_log.html create mode 100644 docs/build/html/structmlx_1_1core_1_1detail_1_1_log10-members.html create mode 100644 docs/build/html/structmlx_1_1core_1_1detail_1_1_log10.html create mode 100644 docs/build/html/structmlx_1_1core_1_1detail_1_1_log1p-members.html create mode 100644 docs/build/html/structmlx_1_1core_1_1detail_1_1_log1p.html create mode 100644 docs/build/html/structmlx_1_1core_1_1detail_1_1_log2-members.html create mode 100644 docs/build/html/structmlx_1_1core_1_1detail_1_1_log2.html create mode 100644 docs/build/html/structmlx_1_1core_1_1detail_1_1_log_add_exp-members.html create mode 100644 docs/build/html/structmlx_1_1core_1_1detail_1_1_log_add_exp.html create mode 100644 docs/build/html/structmlx_1_1core_1_1detail_1_1_logical_and-members.html create mode 100644 docs/build/html/structmlx_1_1core_1_1detail_1_1_logical_and.html create mode 100644 docs/build/html/structmlx_1_1core_1_1detail_1_1_logical_not-members.html create mode 100644 docs/build/html/structmlx_1_1core_1_1detail_1_1_logical_not.html create mode 100644 docs/build/html/structmlx_1_1core_1_1detail_1_1_logical_or-members.html create mode 100644 docs/build/html/structmlx_1_1core_1_1detail_1_1_logical_or.html create mode 100644 docs/build/html/structmlx_1_1core_1_1detail_1_1_maximum-members.html create mode 100644 docs/build/html/structmlx_1_1core_1_1detail_1_1_maximum.html create mode 100644 docs/build/html/structmlx_1_1core_1_1detail_1_1_minimum-members.html create mode 100644 docs/build/html/structmlx_1_1core_1_1detail_1_1_minimum.html create mode 100644 docs/build/html/structmlx_1_1core_1_1detail_1_1_multiply-members.html create mode 100644 docs/build/html/structmlx_1_1core_1_1detail_1_1_multiply.html create mode 100644 docs/build/html/structmlx_1_1core_1_1detail_1_1_na_n_equal-members.html create mode 100644 docs/build/html/structmlx_1_1core_1_1detail_1_1_na_n_equal.html create mode 100644 docs/build/html/structmlx_1_1core_1_1detail_1_1_negative-members.html create mode 100644 docs/build/html/structmlx_1_1core_1_1detail_1_1_negative.html create mode 100644 docs/build/html/structmlx_1_1core_1_1detail_1_1_not_equal-members.html create mode 100644 docs/build/html/structmlx_1_1core_1_1detail_1_1_not_equal.html create mode 100644 docs/build/html/structmlx_1_1core_1_1detail_1_1_power-members.html create mode 100644 docs/build/html/structmlx_1_1core_1_1detail_1_1_power.html create mode 100644 docs/build/html/structmlx_1_1core_1_1detail_1_1_remainder-members.html create mode 100644 docs/build/html/structmlx_1_1core_1_1detail_1_1_remainder.html create mode 100644 docs/build/html/structmlx_1_1core_1_1detail_1_1_right_shift-members.html create mode 100644 docs/build/html/structmlx_1_1core_1_1detail_1_1_right_shift.html create mode 100644 docs/build/html/structmlx_1_1core_1_1detail_1_1_round-members.html create mode 100644 docs/build/html/structmlx_1_1core_1_1detail_1_1_round.html create mode 100644 docs/build/html/structmlx_1_1core_1_1detail_1_1_rsqrt-members.html create mode 100644 docs/build/html/structmlx_1_1core_1_1detail_1_1_rsqrt.html create mode 100644 docs/build/html/structmlx_1_1core_1_1detail_1_1_select-members.html create mode 100644 docs/build/html/structmlx_1_1core_1_1detail_1_1_select.html create mode 100644 docs/build/html/structmlx_1_1core_1_1detail_1_1_sigmoid-members.html create mode 100644 docs/build/html/structmlx_1_1core_1_1detail_1_1_sigmoid.html create mode 100644 docs/build/html/structmlx_1_1core_1_1detail_1_1_sign-members.html create mode 100644 docs/build/html/structmlx_1_1core_1_1detail_1_1_sign.html create mode 100644 docs/build/html/structmlx_1_1core_1_1detail_1_1_sin-members.html create mode 100644 docs/build/html/structmlx_1_1core_1_1detail_1_1_sin.html create mode 100644 docs/build/html/structmlx_1_1core_1_1detail_1_1_sinh-members.html create mode 100644 docs/build/html/structmlx_1_1core_1_1detail_1_1_sinh.html create mode 100644 docs/build/html/structmlx_1_1core_1_1detail_1_1_sqrt-members.html create mode 100644 docs/build/html/structmlx_1_1core_1_1detail_1_1_sqrt.html create mode 100644 docs/build/html/structmlx_1_1core_1_1detail_1_1_square-members.html create mode 100644 docs/build/html/structmlx_1_1core_1_1detail_1_1_square.html create mode 100644 docs/build/html/structmlx_1_1core_1_1detail_1_1_subtract-members.html create mode 100644 docs/build/html/structmlx_1_1core_1_1detail_1_1_subtract.html create mode 100644 docs/build/html/structmlx_1_1core_1_1detail_1_1_tan-members.html create mode 100644 docs/build/html/structmlx_1_1core_1_1detail_1_1_tan.html create mode 100644 docs/build/html/structmlx_1_1core_1_1detail_1_1_tanh-members.html create mode 100644 docs/build/html/structmlx_1_1core_1_1detail_1_1_tanh.html create mode 100644 docs/build/html/structmlx_1_1core_1_1distributed_1_1_group-members.html create mode 100644 docs/build/html/structmlx_1_1core_1_1distributed_1_1_group.html create mode 100644 docs/build/html/structmlx_1_1core_1_1metal_1_1_command_encoder-members.html create mode 100644 docs/build/html/structmlx_1_1core_1_1metal_1_1_command_encoder.html create mode 100644 docs/build/html/structmlx_1_1core_1_1metal_1_1_command_encoder_1_1_concurrent_context-members.html create mode 100644 docs/build/html/structmlx_1_1core_1_1metal_1_1_command_encoder_1_1_concurrent_context.html create mode 100644 docs/build/html/structmlx_1_1core_1_1scheduler_1_1_stream_thread-members.html create mode 100644 docs/build/html/structmlx_1_1core_1_1scheduler_1_1_stream_thread.html create mode 100644 docs/build/html/structmlx_1_1steel_1_1_accum_helper-members.html create mode 100644 docs/build/html/structmlx_1_1steel_1_1_accum_helper.html create mode 100644 docs/build/html/structmlx_1_1steel_1_1_block_loader-members.html create mode 100644 docs/build/html/structmlx_1_1steel_1_1_block_loader.html create mode 100644 docs/build/html/structmlx_1_1steel_1_1_block_loader_1_1_read_vector-members.html create mode 100644 docs/build/html/structmlx_1_1steel_1_1_block_loader_1_1_read_vector.html create mode 100644 docs/build/html/structmlx_1_1steel_1_1_block_m_m_a-members.html create mode 100644 docs/build/html/structmlx_1_1steel_1_1_block_m_m_a.html create mode 100644 docs/build/html/structmlx_1_1steel_1_1_block_swizzle-members.html create mode 100644 docs/build/html/structmlx_1_1steel_1_1_block_swizzle.html create mode 100644 docs/build/html/structmlx_1_1steel_1_1_channel_helper-members.html create mode 100644 docs/build/html/structmlx_1_1steel_1_1_channel_helper.html create mode 100644 docs/build/html/structmlx_1_1steel_1_1_channel_helper_3_011_01_4-members.html create mode 100644 docs/build/html/structmlx_1_1steel_1_1_channel_helper_3_011_01_4.html create mode 100644 docs/build/html/structmlx_1_1steel_1_1_channel_helper_3_012_01_4-members.html create mode 100644 docs/build/html/structmlx_1_1steel_1_1_channel_helper_3_012_01_4.html create mode 100644 docs/build/html/structmlx_1_1steel_1_1_channel_helper_3_013_01_4-members.html create mode 100644 docs/build/html/structmlx_1_1steel_1_1_channel_helper_3_013_01_4.html create mode 100644 docs/build/html/structmlx_1_1steel_1_1_channel_helper_3_014_01_4-members.html create mode 100644 docs/build/html/structmlx_1_1steel_1_1_channel_helper_3_014_01_4.html create mode 100644 docs/build/html/structmlx_1_1steel_1_1_conv2_d_general_base_info-members.html create mode 100644 docs/build/html/structmlx_1_1steel_1_1_conv2_d_general_base_info.html create mode 100644 docs/build/html/structmlx_1_1steel_1_1_conv2_d_general_jump_params-members.html create mode 100644 docs/build/html/structmlx_1_1steel_1_1_conv2_d_general_jump_params.html create mode 100644 docs/build/html/structmlx_1_1steel_1_1_conv2_d_input_block_loader_general-members.html create mode 100644 docs/build/html/structmlx_1_1steel_1_1_conv2_d_input_block_loader_general.html create mode 100644 docs/build/html/structmlx_1_1steel_1_1_conv2_d_input_block_loader_large_filter-members.html create mode 100644 docs/build/html/structmlx_1_1steel_1_1_conv2_d_input_block_loader_large_filter.html create mode 100644 docs/build/html/structmlx_1_1steel_1_1_conv2_d_input_block_loader_small_channels-members.html create mode 100644 docs/build/html/structmlx_1_1steel_1_1_conv2_d_input_block_loader_small_channels.html create mode 100644 docs/build/html/structmlx_1_1steel_1_1_conv2_d_input_block_loader_small_filter-members.html create mode 100644 docs/build/html/structmlx_1_1steel_1_1_conv2_d_input_block_loader_small_filter.html create mode 100644 docs/build/html/structmlx_1_1steel_1_1_conv2_d_weight_block_loader-members.html create mode 100644 docs/build/html/structmlx_1_1steel_1_1_conv2_d_weight_block_loader.html create mode 100644 docs/build/html/structmlx_1_1steel_1_1_conv2_d_weight_block_loader_general-members.html create mode 100644 docs/build/html/structmlx_1_1steel_1_1_conv2_d_weight_block_loader_general.html create mode 100644 docs/build/html/structmlx_1_1steel_1_1_conv2_d_weight_block_loader_small_channels-members.html create mode 100644 docs/build/html/structmlx_1_1steel_1_1_conv2_d_weight_block_loader_small_channels.html create mode 100644 docs/build/html/structmlx_1_1steel_1_1_g_e_m_m_add_m_m_params-members.html create mode 100644 docs/build/html/structmlx_1_1steel_1_1_g_e_m_m_add_m_m_params.html create mode 100644 docs/build/html/structmlx_1_1steel_1_1_g_e_m_m_kernel-members.html create mode 100644 docs/build/html/structmlx_1_1steel_1_1_g_e_m_m_kernel.html create mode 100644 docs/build/html/structmlx_1_1steel_1_1_g_e_m_m_params-members.html create mode 100644 docs/build/html/structmlx_1_1steel_1_1_g_e_m_m_params.html create mode 100644 docs/build/html/structmlx_1_1steel_1_1_g_e_m_m_spilt_k_params-members.html create mode 100644 docs/build/html/structmlx_1_1steel_1_1_g_e_m_m_spilt_k_params.html create mode 100644 docs/build/html/structmlx_1_1steel_1_1_implicit_gemm_conv2_d_params-members.html create mode 100644 docs/build/html/structmlx_1_1steel_1_1_implicit_gemm_conv2_d_params.html create mode 100644 docs/build/html/structmlx_1_1steel_1_1_loop_alignment.html create mode 100644 docs/build/html/structmlx_1_1steel_1_1_transform_add-members.html create mode 100644 docs/build/html/structmlx_1_1steel_1_1_transform_add.html create mode 100644 docs/build/html/structmlx_1_1steel_1_1_transform_axpby-members.html create mode 100644 docs/build/html/structmlx_1_1steel_1_1_transform_axpby.html create mode 100644 docs/build/html/structmlx_1_1steel_1_1_transform_none-members.html create mode 100644 docs/build/html/structmlx_1_1steel_1_1_transform_none.html create mode 100644 docs/build/html/structmlx__atomic-members.html create mode 100644 docs/build/html/structmlx__atomic.html create 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 create 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 create mode 100644 docs/build/html/structpocketfft_1_1detail_1_1_exec_c2_c-members.html create mode 100644 docs/build/html/structpocketfft_1_1detail_1_1_exec_c2_c.html create mode 100644 docs/build/html/structpocketfft_1_1detail_1_1_exec_dcst-members.html create mode 100644 docs/build/html/structpocketfft_1_1detail_1_1_exec_dcst.html create mode 100644 docs/build/html/structpocketfft_1_1detail_1_1_exec_hartley-members.html create mode 100644 docs/build/html/structpocketfft_1_1detail_1_1_exec_hartley.html create mode 100644 docs/build/html/structpocketfft_1_1detail_1_1_exec_r2_r-members.html create mode 100644 docs/build/html/structpocketfft_1_1detail_1_1_exec_r2_r.html create mode 100644 docs/build/html/structpocketfft_1_1detail_1_1_v_l_e_n-members.html create mode 100644 docs/build/html/structpocketfft_1_1detail_1_1_v_l_e_n.html create mode 100644 docs/build/html/structpocketfft_1_1detail_1_1_v_t_y_p_e.html create mode 100644 docs/build/html/structpocketfft_1_1detail_1_1add__vec-members.html create mode 100644 docs/build/html/structpocketfft_1_1detail_1_1add__vec.html create mode 100644 docs/build/html/structpocketfft_1_1detail_1_1add__vec_3_01cmplx_3_01_t_01_4_01_4-members.html create mode 100644 docs/build/html/structpocketfft_1_1detail_1_1add__vec_3_01cmplx_3_01_t_01_4_01_4.html create mode 100644 docs/build/html/structpocketfft_1_1detail_1_1cmplx-members.html create mode 100644 docs/build/html/structpocketfft_1_1detail_1_1cmplx.html create mode 100644 docs/build/html/structpocketfft_1_1detail_1_1threading_1_1aligned__allocator-members.html create mode 100644 docs/build/html/structpocketfft_1_1detail_1_1threading_1_1aligned__allocator.html create mode 100644 docs/build/html/structpocketfft_1_1detail_1_1util-members.html create mode 100644 docs/build/html/structpocketfft_1_1detail_1_1util.html create mode 100644 docs/build/html/sync_off.png create mode 100644 docs/build/html/sync_on.png create mode 100644 docs/build/html/tab_a.png create mode 100644 docs/build/html/tab_ad.png create mode 100644 docs/build/html/tab_b.png create mode 100644 docs/build/html/tab_bd.png create mode 100644 docs/build/html/tab_h.png create mode 100644 docs/build/html/tab_hd.png create mode 100644 docs/build/html/tab_s.png create mode 100644 docs/build/html/tab_sd.png create mode 100644 docs/build/html/tabs.css create mode 100644 docs/build/html/ternary__ops_8h.html create mode 100644 docs/build/html/ternary__ops_8h_source.html create mode 100644 docs/build/html/threefry_8h.html create mode 100644 docs/build/html/threefry_8h_source.html create mode 100644 docs/build/html/topics.html create mode 100644 docs/build/html/transforms_8h.html create mode 100644 docs/build/html/transforms_8h_source.html create mode 100644 docs/build/html/transforms__impl_8h.html create mode 100644 docs/build/html/transforms__impl_8h_source.html create mode 100644 docs/build/html/types_2bf16_8h.html create mode 100644 docs/build/html/types_2bf16_8h_source.html create mode 100644 docs/build/html/types_2complex_8h.html create mode 100644 docs/build/html/types_2complex_8h_source.html create mode 100644 docs/build/html/unary__ops_8h.html create mode 100644 docs/build/html/unary__ops_8h_source.html create mode 100644 docs/build/html/unionbool4__or__uint-members.html create mode 100644 docs/build/html/unionbool4__or__uint.html create mode 100644 docs/build/html/unionmlx_1_1core_1_1detail_1_1_int_or_float-members.html create mode 100644 docs/build/html/unionmlx_1_1core_1_1detail_1_1_int_or_float.html create mode 100644 docs/build/html/usage/distributed.html create mode 100644 docs/build/html/utils_8h.html create mode 100644 docs/build/html/utils_8h_source.html diff --git a/docs/build/html/.buildinfo b/docs/build/html/.buildinfo index 8f162be1e..a7958f766 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: 32ccb60ed1f11b1a97dddf5c324c5115 +config: 2259e1c4c1eefaf85a17fae7f78ebba0 tags: 645f666f9bcd5a90fca523b33c5a78b7 diff --git a/docs/build/html/_sources/index.rst b/docs/build/html/_sources/index.rst index 33d652f6d..fd5147ca6 100644 --- a/docs/build/html/_sources/index.rst +++ b/docs/build/html/_sources/index.rst @@ -43,6 +43,7 @@ are the CPU and GPU. usage/function_transforms usage/compile usage/numpy + usage/distributed usage/using_streams .. toctree:: @@ -69,6 +70,7 @@ are the CPU and GPU. python/metal python/nn python/optimizers + python/distributed python/tree_utils .. toctree:: diff --git a/docs/build/html/_sources/install.rst b/docs/build/html/_sources/install.rst index bdad740ea..11a70ca4e 100644 --- a/docs/build/html/_sources/install.rst +++ b/docs/build/html/_sources/install.rst @@ -186,8 +186,8 @@ should point to the path to the built metal library. Binary Size Minimization ~~~~~~~~~~~~~~~~~~~~~~~~ -To produce a smaller binary use the CMake flags `CMAKE_BUILD_TYPE=MinSizeRel` -and `BUILD_SHARED_LIBS=ON`. +To produce a smaller binary use the CMake flags ``CMAKE_BUILD_TYPE=MinSizeRel`` +and ``BUILD_SHARED_LIBS=ON``. The MLX CMake build has several additional options to make smaller binaries. For example, if you don't need the CPU backend or support for safetensors and @@ -203,7 +203,7 @@ GGUF, you can do: -DMLX_BUILD_GGUF=OFF \ -DMLX_METAL_JIT=ON -THE `MLX_METAL_JIT` flag minimizes the size of the MLX Metal library which +THE ``MLX_METAL_JIT`` flag minimizes the size of the MLX Metal library which contains pre-built GPU kernels. This substantially reduces the size of the Metal library by run-time compiling kernels the first time they are used in MLX on a given machine. Note run-time compilation incurs a cold-start cost which can diff --git a/docs/build/html/_sources/python/_autosummary/mlx.core.array.rst b/docs/build/html/_sources/python/_autosummary/mlx.core.array.rst index e845b3cf8..69975e07c 100644 --- a/docs/build/html/_sources/python/_autosummary/mlx.core.array.rst +++ b/docs/build/html/_sources/python/_autosummary/mlx.core.array.rst @@ -55,6 +55,7 @@ ~array.tolist ~array.transpose ~array.var + ~array.view diff --git a/docs/build/html/_sources/python/_autosummary/mlx.core.block_sparse_mm.rst b/docs/build/html/_sources/python/_autosummary/mlx.core.block_sparse_mm.rst deleted file mode 100644 index 72a9dd120..000000000 --- a/docs/build/html/_sources/python/_autosummary/mlx.core.block_sparse_mm.rst +++ /dev/null @@ -1,6 +0,0 @@ -mlx.core.block\_sparse\_mm -========================== - -.. currentmodule:: mlx.core - -.. autofunction:: block_sparse_mm \ No newline at end of file diff --git a/docs/build/html/_sources/python/_autosummary/mlx.core.distributed.Group.rst b/docs/build/html/_sources/python/_autosummary/mlx.core.distributed.Group.rst new file mode 100644 index 000000000..3cf4f786d --- /dev/null +++ b/docs/build/html/_sources/python/_autosummary/mlx.core.distributed.Group.rst @@ -0,0 +1,25 @@ +mlx.core.distributed.Group +========================== + +.. currentmodule:: mlx.core.distributed + +.. autoclass:: Group + + + .. automethod:: __init__ + + + .. rubric:: Methods + + .. autosummary:: + + ~Group.__init__ + ~Group.rank + ~Group.size + ~Group.split + + + + + + \ No newline at end of file diff --git a/docs/build/html/_sources/python/_autosummary/mlx.core.distributed.all_gather.rst b/docs/build/html/_sources/python/_autosummary/mlx.core.distributed.all_gather.rst new file mode 100644 index 000000000..7eae7f2b6 --- /dev/null +++ b/docs/build/html/_sources/python/_autosummary/mlx.core.distributed.all_gather.rst @@ -0,0 +1,6 @@ +mlx.core.distributed.all\_gather +================================ + +.. currentmodule:: mlx.core.distributed + +.. autofunction:: all_gather \ No newline at end of file diff --git a/docs/build/html/_sources/python/_autosummary/mlx.core.distributed.all_sum.rst b/docs/build/html/_sources/python/_autosummary/mlx.core.distributed.all_sum.rst new file mode 100644 index 000000000..694798ccb --- /dev/null +++ b/docs/build/html/_sources/python/_autosummary/mlx.core.distributed.all_sum.rst @@ -0,0 +1,6 @@ +mlx.core.distributed.all\_sum +============================= + +.. currentmodule:: mlx.core.distributed + +.. autofunction:: all_sum \ No newline at end of file diff --git a/docs/build/html/_sources/python/_autosummary/mlx.core.distributed.init.rst b/docs/build/html/_sources/python/_autosummary/mlx.core.distributed.init.rst new file mode 100644 index 000000000..c55b330fa --- /dev/null +++ b/docs/build/html/_sources/python/_autosummary/mlx.core.distributed.init.rst @@ -0,0 +1,6 @@ +mlx.core.distributed.init +========================= + +.. currentmodule:: mlx.core.distributed + +.. autofunction:: init \ No newline at end of file diff --git a/docs/build/html/_sources/python/_autosummary/mlx.core.distributed.is_available.rst b/docs/build/html/_sources/python/_autosummary/mlx.core.distributed.is_available.rst new file mode 100644 index 000000000..f4b65f8eb --- /dev/null +++ b/docs/build/html/_sources/python/_autosummary/mlx.core.distributed.is_available.rst @@ -0,0 +1,6 @@ +mlx.core.distributed.is\_available +================================== + +.. currentmodule:: mlx.core.distributed + +.. autofunction:: is_available \ No newline at end of file diff --git a/docs/build/html/_sources/python/_autosummary/mlx.core.view.rst b/docs/build/html/_sources/python/_autosummary/mlx.core.view.rst new file mode 100644 index 000000000..4db67bdbe --- /dev/null +++ b/docs/build/html/_sources/python/_autosummary/mlx.core.view.rst @@ -0,0 +1,6 @@ +mlx.core.view +============= + +.. currentmodule:: mlx.core + +.. autofunction:: view \ No newline at end of file diff --git a/docs/build/html/_sources/python/distributed.rst b/docs/build/html/_sources/python/distributed.rst new file mode 100644 index 000000000..cf9eae3f1 --- /dev/null +++ b/docs/build/html/_sources/python/distributed.rst @@ -0,0 +1,19 @@ +.. _distributed: + +.. currentmodule:: mlx.core.distributed + +Distributed Communication +========================== + +MLX provides a distributed communication package using MPI. The MPI library is +loaded at runtime; if MPI is available then distributed communication is also +made available. + +.. autosummary:: + :toctree: _autosummary + + Group + is_available + init + all_sum + all_gather diff --git a/docs/build/html/_sources/python/nn/_autosummary/mlx.nn.GLU.rst b/docs/build/html/_sources/python/nn/_autosummary/mlx.nn.GLU.rst new file mode 100644 index 000000000..d890d521a --- /dev/null +++ b/docs/build/html/_sources/python/nn/_autosummary/mlx.nn.GLU.rst @@ -0,0 +1,16 @@ +mlx.nn.GLU +========== + +.. currentmodule:: mlx.nn + +.. autoclass:: GLU + + + + + .. rubric:: Methods + + .. autosummary:: + + + diff --git a/docs/build/html/_sources/python/nn/_autosummary/mlx.nn.HardShrink.rst b/docs/build/html/_sources/python/nn/_autosummary/mlx.nn.HardShrink.rst new file mode 100644 index 000000000..1154db7a2 --- /dev/null +++ b/docs/build/html/_sources/python/nn/_autosummary/mlx.nn.HardShrink.rst @@ -0,0 +1,16 @@ +mlx.nn.HardShrink +================= + +.. currentmodule:: mlx.nn + +.. autoclass:: HardShrink + + + + + .. rubric:: Methods + + .. autosummary:: + + + diff --git a/docs/build/html/_sources/python/nn/_autosummary/mlx.nn.HardTanh.rst b/docs/build/html/_sources/python/nn/_autosummary/mlx.nn.HardTanh.rst new file mode 100644 index 000000000..0bc9c8775 --- /dev/null +++ b/docs/build/html/_sources/python/nn/_autosummary/mlx.nn.HardTanh.rst @@ -0,0 +1,16 @@ +mlx.nn.HardTanh +=============== + +.. currentmodule:: mlx.nn + +.. autoclass:: HardTanh + + + + + .. rubric:: Methods + + .. autosummary:: + + + diff --git a/docs/build/html/_sources/python/nn/_autosummary/mlx.nn.Hardswish.rst b/docs/build/html/_sources/python/nn/_autosummary/mlx.nn.Hardswish.rst new file mode 100644 index 000000000..fdc402cfa --- /dev/null +++ b/docs/build/html/_sources/python/nn/_autosummary/mlx.nn.Hardswish.rst @@ -0,0 +1,16 @@ +mlx.nn.Hardswish +================ + +.. currentmodule:: mlx.nn + +.. autoclass:: Hardswish + + + + + .. rubric:: Methods + + .. autosummary:: + + + diff --git a/docs/build/html/_sources/python/nn/_autosummary/mlx.nn.LeakyReLU.rst b/docs/build/html/_sources/python/nn/_autosummary/mlx.nn.LeakyReLU.rst new file mode 100644 index 000000000..96452e32e --- /dev/null +++ b/docs/build/html/_sources/python/nn/_autosummary/mlx.nn.LeakyReLU.rst @@ -0,0 +1,16 @@ +mlx.nn.LeakyReLU +================ + +.. currentmodule:: mlx.nn + +.. autoclass:: LeakyReLU + + + + + .. rubric:: Methods + + .. autosummary:: + + + diff --git a/docs/build/html/_sources/python/nn/_autosummary/mlx.nn.ReLU6.rst b/docs/build/html/_sources/python/nn/_autosummary/mlx.nn.ReLU6.rst new file mode 100644 index 000000000..460505a64 --- /dev/null +++ b/docs/build/html/_sources/python/nn/_autosummary/mlx.nn.ReLU6.rst @@ -0,0 +1,16 @@ +mlx.nn.ReLU6 +============ + +.. currentmodule:: mlx.nn + +.. autoclass:: ReLU6 + + + + + .. rubric:: Methods + + .. autosummary:: + + + diff --git a/docs/build/html/_sources/python/nn/_autosummary/mlx.nn.Softmax.rst b/docs/build/html/_sources/python/nn/_autosummary/mlx.nn.Softmax.rst new file mode 100644 index 000000000..8987c582b --- /dev/null +++ b/docs/build/html/_sources/python/nn/_autosummary/mlx.nn.Softmax.rst @@ -0,0 +1,16 @@ +mlx.nn.Softmax +============== + +.. currentmodule:: mlx.nn + +.. autoclass:: Softmax + + + + + .. rubric:: Methods + + .. autosummary:: + + + diff --git a/docs/build/html/_sources/python/nn/_autosummary/mlx.nn.Softmin.rst b/docs/build/html/_sources/python/nn/_autosummary/mlx.nn.Softmin.rst new file mode 100644 index 000000000..18540c6c5 --- /dev/null +++ b/docs/build/html/_sources/python/nn/_autosummary/mlx.nn.Softmin.rst @@ -0,0 +1,16 @@ +mlx.nn.Softmin +============== + +.. currentmodule:: mlx.nn + +.. autoclass:: Softmin + + + + + .. rubric:: Methods + + .. autosummary:: + + + diff --git a/docs/build/html/_sources/python/nn/_autosummary/mlx.nn.Softplus.rst b/docs/build/html/_sources/python/nn/_autosummary/mlx.nn.Softplus.rst new file mode 100644 index 000000000..6c28ecafa --- /dev/null +++ b/docs/build/html/_sources/python/nn/_autosummary/mlx.nn.Softplus.rst @@ -0,0 +1,16 @@ +mlx.nn.Softplus +=============== + +.. currentmodule:: mlx.nn + +.. autoclass:: Softplus + + + + + .. rubric:: Methods + + .. autosummary:: + + + diff --git a/docs/build/html/_sources/python/nn/_autosummary/mlx.nn.Softsign.rst b/docs/build/html/_sources/python/nn/_autosummary/mlx.nn.Softsign.rst new file mode 100644 index 000000000..d2fb59cf5 --- /dev/null +++ b/docs/build/html/_sources/python/nn/_autosummary/mlx.nn.Softsign.rst @@ -0,0 +1,16 @@ +mlx.nn.Softsign +=============== + +.. currentmodule:: mlx.nn + +.. autoclass:: Softsign + + + + + .. rubric:: Methods + + .. autosummary:: + + + diff --git a/docs/build/html/_sources/python/nn/_autosummary/mlx.nn.Tanh.rst b/docs/build/html/_sources/python/nn/_autosummary/mlx.nn.Tanh.rst new file mode 100644 index 000000000..1c2b5ec91 --- /dev/null +++ b/docs/build/html/_sources/python/nn/_autosummary/mlx.nn.Tanh.rst @@ -0,0 +1,16 @@ +mlx.nn.Tanh +=========== + +.. currentmodule:: mlx.nn + +.. autoclass:: Tanh + + + + + .. rubric:: Methods + + .. autosummary:: + + + diff --git a/docs/build/html/_sources/python/nn/_autosummary_functions/mlx.nn.hard_shrink.rst b/docs/build/html/_sources/python/nn/_autosummary_functions/mlx.nn.hard_shrink.rst new file mode 100644 index 000000000..ee61b37fd --- /dev/null +++ b/docs/build/html/_sources/python/nn/_autosummary_functions/mlx.nn.hard_shrink.rst @@ -0,0 +1,11 @@ +mlx.nn.hard\_shrink +=================== + +.. currentmodule:: mlx.nn + +.. autoclass:: hard_shrink + + + + + diff --git a/docs/build/html/_sources/python/nn/_autosummary_functions/mlx.nn.hard_tanh.rst b/docs/build/html/_sources/python/nn/_autosummary_functions/mlx.nn.hard_tanh.rst new file mode 100644 index 000000000..997f3cc96 --- /dev/null +++ b/docs/build/html/_sources/python/nn/_autosummary_functions/mlx.nn.hard_tanh.rst @@ -0,0 +1,11 @@ +mlx.nn.hard\_tanh +================= + +.. currentmodule:: mlx.nn + +.. autoclass:: hard_tanh + + + + + diff --git a/docs/build/html/_sources/python/nn/_autosummary_functions/mlx.nn.softmin.rst b/docs/build/html/_sources/python/nn/_autosummary_functions/mlx.nn.softmin.rst new file mode 100644 index 000000000..7917a4cb8 --- /dev/null +++ b/docs/build/html/_sources/python/nn/_autosummary_functions/mlx.nn.softmin.rst @@ -0,0 +1,11 @@ +mlx.nn.softmin +============== + +.. currentmodule:: mlx.nn + +.. autoclass:: softmin + + + + + diff --git a/docs/build/html/_sources/python/nn/functions.rst b/docs/build/html/_sources/python/nn/functions.rst index db276afdf..f1077776b 100644 --- a/docs/build/html/_sources/python/nn/functions.rst +++ b/docs/build/html/_sources/python/nn/functions.rst @@ -17,6 +17,8 @@ simple functions. gelu_approx gelu_fast_approx glu + hard_shrink + hard_tanh hardswish leaky_relu log_sigmoid @@ -29,6 +31,7 @@ simple functions. sigmoid silu softmax + softmin softplus softshrink step diff --git a/docs/build/html/_sources/python/nn/layers.rst b/docs/build/html/_sources/python/nn/layers.rst index cbbbb5c3b..d06e009e8 100644 --- a/docs/build/html/_sources/python/nn/layers.rst +++ b/docs/build/html/_sources/python/nn/layers.rst @@ -21,10 +21,15 @@ Layers Dropout3d Embedding GELU + GLU GroupNorm GRU + HardShrink + HardTanh + Hardswish InstanceNorm LayerNorm + LeakyReLU Linear LSTM MaxPool1d @@ -36,13 +41,19 @@ Layers QuantizedLinear RMSNorm ReLU + ReLU6 RNN RoPE SELU Sequential SiLU SinusoidalPositionalEncoding + Softmin Softshrink + Softsign + Softmax + Softplus Step + Tanh Transformer Upsample diff --git a/docs/build/html/_sources/python/ops.rst b/docs/build/html/_sources/python/ops.rst index 745d12d50..0b50ea244 100644 --- a/docs/build/html/_sources/python/ops.rst +++ b/docs/build/html/_sources/python/ops.rst @@ -156,6 +156,7 @@ Operations tril triu var + view where zeros zeros_like diff --git a/docs/build/html/_sources/usage/distributed.rst b/docs/build/html/_sources/usage/distributed.rst new file mode 100644 index 000000000..702951a0c --- /dev/null +++ b/docs/build/html/_sources/usage/distributed.rst @@ -0,0 +1,166 @@ +.. _usage_distributed: + +Distributed Communication +========================= + +.. currentmodule:: mlx.core.distributed + +MLX utilizes `MPI `_ to +provide distributed communication operations that allow the computational cost +of training or inference to be shared across many physical machines. You can +see a list of the supported operations in the :ref:`API docs`. + +.. note:: + A lot of operations may not be supported or not as fast as they should be. + We are adding more and tuning the ones we have as we are figuring out the + best way to do distributed computing on Macs using MLX. + +Getting Started +--------------- + +MLX already comes with the ability to "talk" to MPI if it is installed on the +machine. The minimal distributed program in MLX is as simple as: + +.. code:: python + + import mlx.core as mx + + world = mx.distributed.init() + x = mx.distributed.all_sum(mx.ones(10)) + print(world.rank(), x) + +The program above sums the array ``mx.ones(10)`` across all +distributed processes. If simply run with ``python``, however, only one +process is launched and no distributed communication takes place. + +To launch the program in distributed mode we need to use ``mpirun`` or +``mpiexec`` depending on the MPI installation. The simplest possible way is the +following: + +.. code:: shell + + $ mpirun -np 2 python test.py + 1 array([2, 2, 2, ..., 2, 2, 2], dtype=float32) + 0 array([2, 2, 2, ..., 2, 2, 2], dtype=float32) + +The above launches two processes on the same (local) machine and we can see +both standard output streams. The processes send the array of 1s to each other +and compute the sum which is printed. Launching with ``mpirun -np 4 ...`` would +print 4 etc. + +Installing MPI +--------------- + +MPI can be installed with Homebrew, using the Anaconda package manager or +compiled from source. Most of our testing is done using ``openmpi`` installed +with the Anaconda package manager as follows: + +.. code:: shell + + $ conda install openmpi + +Installing with Homebrew may require specifying the location of ``libmpi.dyld`` +so that MLX can find it and load it at runtime. This can simply be achieved by +passing the ``DYLD_LIBRARY_PATH`` environment variable to ``mpirun``. + +.. code:: shell + + $ mpirun -np 2 -x DYLD_LIBRARY_PATH=/opt/homebrew/lib/ python test.py + +Setting up Remote Hosts +----------------------- + +MPI can automatically connect to remote hosts and set up the communication over +the network if the remote hosts can be accessed via ssh. A good checklist to +debug connectivity issues is the following: + +* ``ssh hostname`` works from all machines to all machines without asking for + password or host confirmation +* ``mpirun`` is accessible on all machines. You can call ``mpirun`` using its + full path to force all machines to use a specific path. +* Ensure that the ``hostname`` used by MPI is the one that you have configured + in the ``.ssh/config`` files on all machines. + +.. note:: + For an example hostname ``foo.bar.com`` MPI can use only ``foo`` as + the hostname passed to ssh if the current hostname matches ``*.bar.com``. + +An easy way to pass the host names to MPI is using a host file. A host file +looks like the following, where ``host1`` and ``host2`` should be the fully +qualified domain names or IPs for these hosts. + +.. code:: + + host1 slots=1 + host2 slots=1 + +When using MLX, it is very likely that you want to use 1 slot per host, ie one +process per host. The hostfile also needs to contain the current +host if you want to run on the local host. Passing the host file to +``mpirun`` is simply done using the ``--hostfile`` command line argument. + +Training Example +---------------- + +In this section we will adapt an MLX training loop to support data parallel +distributed training. Namely, we will average the gradients across a set of +hosts before applying them to the model. + +Our training loop looks like the following code snippet if we omit the model, +dataset and optimizer initialization. + +.. code:: python + + model = ... + optimizer = ... + dataset = ... + + def step(model, x, y): + loss, grads = loss_grad_fn(model, x, y) + optimizer.update(model, grads) + return loss + + for x, y in dataset: + loss = step(model, x, y) + mx.eval(loss, model.parameters()) + +All we have to do to average the gradients across machines is perform an +:func:`all_sum` and divide by the size of the :class:`Group`. Namely we +have to :func:`mlx.utils.tree_map` the gradients with following function. + +.. code:: python + + def all_avg(x): + return mx.distributed.all_sum(x) / mx.distributed.init().size() + +Putting everything together our training loop step looks as follows with +everything else remaining the same. + +.. code:: python + + from mlx.utils import tree_map + + def all_reduce_grads(grads): + N = mx.distributed.init() + if N == 1: + return grads + return tree_map( + lambda x: mx.distributed.all_sum(x) / N, + grads) + + def step(model, x, y): + loss, grads = loss_grad_fn(model, x, y) + grads = all_reduce_grads(grads) # <--- This line was added + optimizer.update(model, grads) + return loss + +Tuning All Reduce +----------------- + +We are working on improving the performance of all reduce on MLX but for now +the two main things one can do to extract the most out of distributed training with MLX are: + +1. Perform a few large reductions instead of many small ones to improve + bandwidth and latency +2. Pass ``--mca btl_tcp_links 4`` to ``mpirun`` to configure it to use 4 tcp + connections between each host to improve bandwidth diff --git a/docs/build/html/_sources/usage/numpy.rst b/docs/build/html/_sources/usage/numpy.rst index 1ed801454..6edb94b8b 100644 --- a/docs/build/html/_sources/usage/numpy.rst +++ b/docs/build/html/_sources/usage/numpy.rst @@ -3,7 +3,11 @@ Conversion to NumPy and Other Frameworks ======================================== -MLX array implements the `Python Buffer Protocol `_. +MLX array supports conversion between other frameworks with either: + +* The `Python Buffer Protocol `_. +* `DLPack `_. + Let's convert an array to NumPy and back. .. code-block:: python diff --git a/docs/build/html/_static/documentation_options.js b/docs/build/html/_static/documentation_options.js index 4d757c4b0..5ba143aa2 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.14.0', + VERSION: '0.15.0', LANGUAGE: 'en', COLLAPSE_INDEX: false, BUILDER: 'html', diff --git a/docs/build/html/allocator_8h.html b/docs/build/html/allocator_8h.html new file mode 100644 index 000000000..8e3b1e763 --- /dev/null +++ b/docs/build/html/allocator_8h.html @@ -0,0 +1,124 @@ + + + + + + + +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 new file mode 100644 index 000000000..917df829b --- /dev/null +++ b/docs/build/html/allocator_8h_source.html @@ -0,0 +1,191 @@ + + + + + + + +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
+
45 Allocator() = default;
+
46 Allocator(const Allocator& other) = delete;
+
47 Allocator(Allocator&& other) = delete;
+
48 Allocator& operator=(const Allocator& other) = delete;
+
49 Allocator& operator=(Allocator&& other) = delete;
+
50 virtual ~Allocator() = default;
+
51};
+
+
52
+ +
54
+
+
55class CommonAllocator : public Allocator {
+
57 public:
+
58 virtual Buffer malloc(size_t size, bool allow_swap = false) override;
+
59 virtual void free(Buffer buffer) override;
+
60
+
61 private:
+
62 CommonAllocator() = default;
+ +
64};
+
+
65
+
66} // namespace mlx::core::allocator
+
+
Definition allocator.h:39
+
Allocator & operator=(const Allocator &other)=delete
+
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:55
+
virtual Buffer malloc(size_t size, bool allow_swap=false) override
A general CPU allocator.
+
virtual void free(Buffer buffer) 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 new file mode 100644 index 000000000..13c3f95e1 --- /dev/null +++ b/docs/build/html/annotated.html @@ -0,0 +1,469 @@ + + + + + + + +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
 NMPS
 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
 CGreater
 CGreaterEqual
 CIndices
 CKernelMergeSort
 CKernelMultiBlockMergeSort
 CLeftShift
 CLess
 CLessEqual
 CLessThan
 CLimits
 CLimits< bfloat16_t >
 CLimits< bool >
 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
 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
 CReadWriter
 CRemainder
 CRightShift
 CRound
 CRsqrt
 CScaleOp
 CSelect
 CSigmoid
 CSign
 CSin
 CSinh
 CSqrt
 CSquare
 CSubtract
 CSum
 CTan
 CTanh
 CThreadSort
+
+
+ + + + diff --git a/docs/build/html/array_8h.html b/docs/build/html/array_8h.html new file mode 100644 index 000000000..bdfcf22d8 --- /dev/null +++ b/docs/build/html/array_8h.html @@ -0,0 +1,138 @@ + + + + + + + +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 new file mode 100644 index 000000000..4b15bc560 --- /dev/null +++ b/docs/build/html/array_8h_source.html @@ -0,0 +1,842 @@ + + + + + + + +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 if there are no gaps in the underlying data. Each item
+
223 // in the underlying data buffer belongs to at least one index.
+
224 bool contiguous : 1;
+
225
+ + +
228 };
+
+
229
+
+ +
232 return *(array_desc_->primitive);
+
233 };
+
+
234
+
+
236 std::shared_ptr<Primitive>& primitive_ptr() const {
+
237 return array_desc_->primitive;
+
238 };
+
+
239
+
+
241 bool has_primitive() const {
+
242 return array_desc_->primitive != nullptr;
+
243 };
+
+
244
+
+
246 const std::vector<array>& inputs() const {
+
247 return array_desc_->inputs;
+
248 };
+
+
249
+
+
250 std::vector<array>& inputs() {
+
251 return array_desc_->inputs;
+
252 }
+
+
253
+
+
255 bool is_donatable() const {
+
256 return array_desc_.use_count() == 1 && (array_desc_->data.use_count() == 1);
+
257 }
+
+
258
+
+
260 const std::vector<array>& siblings() const {
+
261 return array_desc_->siblings;
+
262 };
+
+
263
+
+
265 std::vector<array>& siblings() {
+
266 return array_desc_->siblings;
+
267 };
+
+
268
+
+
269 void set_siblings(std::vector<array> siblings, uint16_t position) {
+
270 array_desc_->siblings = std::move(siblings);
+
271 array_desc_->position = position;
+
272 }
+
+
273
+
+
276 std::vector<array> outputs() const {
+
277 auto idx = array_desc_->position;
+
278 std::vector<array> outputs;
+
279 outputs.reserve(siblings().size() + 1);
+
280 outputs.insert(outputs.end(), siblings().begin(), siblings().begin() + idx);
+
281 outputs.push_back(*this);
+
282 outputs.insert(outputs.end(), siblings().begin() + idx, siblings().end());
+
283 return outputs;
+
284 };
+
+
285
+
287 void detach();
+
288
+
+
290 const Flags& flags() const {
+
291 return array_desc_->flags;
+
292 };
+
+
293
+
+
295 size_t data_size() const {
+
296 return array_desc_->data_size;
+
297 };
+
+
298
+
+ +
300 return array_desc_->data->buffer;
+
301 };
+
+
+
302 const allocator::Buffer& buffer() const {
+
303 return array_desc_->data->buffer;
+
304 };
+
+
305
+
306 // Return a copy of the shared pointer
+
307 // to the array::Data struct
+
+
308 std::shared_ptr<Data> data_shared_ptr() const {
+
309 return array_desc_->data;
+
310 }
+
+
311 // Return a raw pointer to the arrays data
+
312 template <typename T>
+
+
313 T* data() {
+
314 return static_cast<T*>(array_desc_->data_ptr);
+
315 };
+
+
316
+
317 template <typename T>
+
+
318 const T* data() const {
+
319 return static_cast<T*>(array_desc_->data_ptr);
+
320 };
+
+
321
+ +
323
+
+
324 bool is_available() const {
+
325 return status() == Status::available;
+
326 }
+
+
+
327 const Status status() const {
+
328 return array_desc_->status;
+
329 }
+
+
330
+
+
331 void set_status(Status s) const {
+
332 array_desc_->status = s;
+
333 }
+
+
334
+
335 // Get the array's shared event
+
+
336 Event& event() const {
+
337 return array_desc_->event;
+
338 }
+
+
339
+
340 // Attach an event to a not yet evaluated array
+
+
341 void attach_event(Event e) const {
+
342 array_desc_->event = std::move(e);
+
343 }
+
+
344
+
345 // Mark the array as a tracer array (true) or not.
+
+ +
347 array_desc_->is_tracer = is_tracer;
+
348 }
+
+
349 // Check if the array is a tracer array
+
350 bool is_tracer() const;
+
351
+ +
353
+ + +
356 size_t data_size,
+
357 std::vector<size_t> strides,
+
358 Flags flags,
+ +
360
+ +
362 const array& other,
+
363 const std::vector<size_t>& strides,
+
364 Flags flags,
+
365 size_t data_size,
+
366 size_t offset = 0);
+
367
+
368 void copy_shared_buffer(const array& other);
+
369
+ +
371 array other,
+
372 const std::vector<size_t>& strides,
+
373 Flags flags,
+
374 size_t data_size,
+
375 size_t offset = 0);
+
376
+ +
378
+
+
379 void overwrite_descriptor(const array& other) {
+
380 array_desc_ = other.array_desc_;
+
381 }
+
+
382
+ +
384
+
385 private:
+
386 // Initialize the arrays data
+
387 template <typename It>
+
388 void init(const It src);
+
389
+
390 struct ArrayDesc {
+
391 std::vector<int> shape;
+
392 std::vector<size_t> strides;
+
393 size_t size;
+
394 Dtype dtype;
+
395 std::shared_ptr<Primitive> primitive;
+
396
+
397 Status status;
+
398
+
399 // An event on the array used for synchronization
+
400 Event event;
+
401
+
402 // Indicates an array is being used in a graph transform
+
403 // and should not be detached from the graph
+
404 bool is_tracer{false};
+
405
+
406 // This is a shared pointer so that *different* arrays
+
407 // can share the underlying data buffer.
+
408 std::shared_ptr<Data> data;
+
409
+
410 // Properly offset data pointer
+
411 void* data_ptr{nullptr};
+
412
+
413 // The size in elements of the data buffer the array accesses
+
414 // This can be different than the actual size of the array if it
+
415 // has been broadcast or irregularly strided.
+
416 size_t data_size;
+
417
+
418 // Contains useful meta data about the array
+
419 Flags flags;
+
420
+
421 std::vector<array> inputs;
+
422 // An array to keep track of the siblings from a multi-output
+
423 // primitive.
+
424 std::vector<array> siblings;
+
425 // The arrays position in the output list
+
426 uint32_t position{0};
+
427
+
428 explicit ArrayDesc(std::vector<int> shape, Dtype dtype);
+
429
+
430 explicit ArrayDesc(
+
431 std::vector<int> shape,
+
432 Dtype dtype,
+
433 std::shared_ptr<Primitive> primitive,
+
434 std::vector<array> inputs);
+
435
+
436 ~ArrayDesc();
+
437
+
438 private:
+
439 // Initialize size, strides, and other metadata
+
440 void init();
+
441 };
+
442
+
443 // The ArrayDesc contains the details of the materialized array including the
+
444 // shape, strides, the data type. It also includes
+
445 // the primitive which knows how to compute the array's data from its inputs
+
446 // and the list of array's inputs for the primitive.
+
447 std::shared_ptr<ArrayDesc> array_desc_;
+
448};
+
+
449
+
450template <typename T>
+
+
451array::array(T val, Dtype dtype /* = TypeToDtype<T>() */)
+
452 : array_desc_(std::make_shared<ArrayDesc>(std::vector<int>{}, dtype)) {
+
453 init(&val);
+
454}
+
+
455
+
456template <typename It>
+
+ +
458 It data,
+
459 std::vector<int> shape,
+
460 Dtype dtype /* = TypeToDtype<typename std::iterator_traits<It>::value_type>() */) :
+
461 array_desc_(std::make_shared<ArrayDesc>(std::move(shape), dtype)) {
+
462 init(data);
+
463}
+
+
464
+
465template <typename T>
+
+ +
467 std::initializer_list<T> data,
+
468 Dtype dtype /* = TypeToDtype<T>() */)
+
469 : array_desc_(std::make_shared<ArrayDesc>(
+
470 std::vector<int>{static_cast<int>(data.size())},
+
471 dtype)) {
+
472 init(data.begin());
+
473}
+
+
474
+
475template <typename T>
+
+ +
477 std::initializer_list<T> data,
+
478 std::vector<int> shape,
+
479 Dtype dtype /* = TypeToDtype<T>() */)
+
480 : array_desc_(std::make_shared<ArrayDesc>(std::move(shape), dtype)) {
+
481 if (data.size() != size()) {
+
482 throw std::invalid_argument(
+
483 "Data size and provided shape mismatch in array construction.");
+
484 }
+
485 init(data.begin());
+
486}
+
+
487
+
488template <typename T>
+
+ +
490 if (size() != 1) {
+
491 throw std::invalid_argument("item can only be called on arrays of size 1.");
+
492 }
+
493 eval();
+
494 return *data<T>();
+
495}
+
+
496
+
497template <typename T>
+
+
498T array::item() const {
+
499 if (size() != 1) {
+
500 throw std::invalid_argument("item can only be called on arrays of size 1.");
+
501 }
+
502 if (status() == Status::unscheduled) {
+
503 throw std::invalid_argument(
+
504 "item() const can only be called on evaled arrays");
+
505 }
+
506 const_cast<array*>(this)->eval();
+
507 return *data<T>();
+
508}
+
+
509
+
510template <typename It>
+
511void array::init(It src) {
+ +
513 switch (dtype()) {
+
514 case bool_:
+
515 std::copy(src, src + size(), data<bool>());
+
516 break;
+
517 case uint8:
+
518 std::copy(src, src + size(), data<uint8_t>());
+
519 break;
+
520 case uint16:
+
521 std::copy(src, src + size(), data<uint16_t>());
+
522 break;
+
523 case uint32:
+
524 std::copy(src, src + size(), data<uint32_t>());
+
525 break;
+
526 case uint64:
+
527 std::copy(src, src + size(), data<uint64_t>());
+
528 break;
+
529 case int8:
+
530 std::copy(src, src + size(), data<int8_t>());
+
531 break;
+
532 case int16:
+
533 std::copy(src, src + size(), data<int16_t>());
+
534 break;
+
535 case int32:
+
536 std::copy(src, src + size(), data<int32_t>());
+
537 break;
+
538 case int64:
+
539 std::copy(src, src + size(), data<int64_t>());
+
540 break;
+
541 case float16:
+
542 std::copy(src, src + size(), data<float16_t>());
+
543 break;
+
544 case float32:
+
545 std::copy(src, src + size(), data<float>());
+
546 break;
+
547 case bfloat16:
+
548 std::copy(src, src + size(), data<bfloat16_t>());
+
549 break;
+
550 case complex64:
+
551 std::copy(src, src + size(), data<complex64_t>());
+
552 break;
+
553 }
+
554}
+
555
+
556/* Utilities for determining whether a template parameter is array. */
+
557template <typename T>
+
558inline constexpr bool is_array_v =
+
559 std::is_same_v<std::remove_cv_t<std::remove_reference_t<T>>, array>;
+
560
+
561template <typename... T>
+
562inline constexpr bool is_arrays_v = (is_array_v<T> && ...);
+
563
+
564template <typename... T>
+
565using enable_for_arrays_t = typename std::enable_if_t<is_arrays_v<T...>>;
+
566
+
567} // namespace mlx::core
+ +
Definition event.h:11
+
Definition primitives.h:48
+
Definition allocator.h:12
+
Definition array.h:20
+
void attach_event(Event e) const
Definition array.h:341
+
const Flags & flags() const
Get the Flags bit-field.
Definition array.h:290
+
Event & event() const
Definition array.h:336
+
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:322
+
@ available
Definition array.h:322
+
@ unscheduled
Definition array.h:322
+
@ scheduled
Definition array.h:322
+
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:246
+
array(const array &other)=default
+
std::vector< array > outputs() const
The outputs of the array's primitive (i.e.
Definition array.h:276
+ +
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:255
+
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:236
+
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:302
+
void set_status(Status s) const
Definition array.h:331
+
array(const std::complex< float > &val, Dtype dtype=complex64)
+
std::vector< array > & siblings()
The array's siblings.
Definition array.h:265
+
T * data()
Definition array.h:313
+
array(T val, Dtype dtype=TypeToDtype< T >())
Construct a scalar array with zero dimensions.
Definition array.h:451
+
ArrayIterator begin() const
Definition array.h:173
+
Primitive & primitive() const
The array's primitive.
Definition array.h:231
+
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:269
+
T item()
Get the value from a scalar array.
Definition array.h:489
+
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:379
+
const T * data() const
Definition array.h:318
+
bool has_primitive() const
Check if the array has an attached primitive or is a leaf node.
Definition array.h:241
+
allocator::Buffer & buffer()
Definition array.h:299
+
array(array &&other)=default
+
std::shared_ptr< Data > data_shared_ptr() const
Definition array.h:308
+
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:260
+
std::vector< array > & inputs()
Definition array.h:250
+
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.
+
const Status status() const
Definition array.h:327
+
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:324
+
void set_tracer(bool is_tracer)
Definition array.h:346
+
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:295
+ + +
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)
+
Definition allocator.h:7
+
constexpr bool is_array_v
Definition array.h:558
+
constexpr Dtype bool_
Definition dtype.h:60
+
std::function< void(allocator::Buffer)> deleter_t
Definition array.h:18
+
constexpr Dtype uint64
Definition dtype.h:65
+
constexpr Dtype uint16
Definition dtype.h:63
+
constexpr Dtype bfloat16
Definition dtype.h:74
+
constexpr Dtype int32
Definition dtype.h:69
+
constexpr Dtype float32
Definition dtype.h:73
+
constexpr Dtype int16
Definition dtype.h:68
+
constexpr Dtype int8
Definition dtype.h:67
+
constexpr Dtype int64
Definition dtype.h:70
+
constexpr bool is_arrays_v
Definition array.h:562
+
constexpr Dtype uint8
Definition dtype.h:62
+
constexpr Dtype float16
Definition dtype.h:72
+
constexpr Dtype uint32
Definition dtype.h:64
+
uint8_t size_of(const Dtype &t)
Definition dtype.h:95
+
typename std::enable_if_t< is_arrays_v< T... > > enable_for_arrays_t
Definition array.h:565
+
constexpr Dtype complex64
Definition dtype.h:75
+
Definition dtype.h:15
+
Definition dtype.h:102
+
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:226
+
bool col_contiguous
Definition array.h:227
+
bool contiguous
Definition array.h:224
+
+ + + + diff --git a/docs/build/html/atomic_8h.html b/docs/build/html/atomic_8h.html new file mode 100644 index 000000000..c3c48d2ef --- /dev/null +++ b/docs/build/html/atomic_8h.html @@ -0,0 +1,520 @@ + + + + + + + +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, uint 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, uint 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, uint 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, uint 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, uint 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, uint 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, uint 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, uint 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, uint offset)
 
template<>
METAL_FUNC void mlx_atomic_fetch_min_explicit< float > (device mlx_atomic< float > *object, float val, uint offset)
 
template<>
METAL_FUNC void mlx_atomic_fetch_max_explicit< float > (device mlx_atomic< float > *object, float val, uint 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, uint 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,
uint 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,
uint 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,
uint 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,
uint 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,
uint offset )
+
+ +
+
+ +

◆ mlx_atomic_fetch_max_explicit< float >()

+ +
+
+
+template<>
+ + + + + + + + + + + + + + + + +
METAL_FUNC void mlx_atomic_fetch_max_explicit< float > (device mlx_atomic< float > * object,
float val,
uint 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,
uint offset )
+
+ +
+
+ +

◆ mlx_atomic_fetch_min_explicit< float >()

+ +
+
+
+template<>
+ + + + + + + + + + + + + + + + +
METAL_FUNC void mlx_atomic_fetch_min_explicit< float > (device mlx_atomic< float > * object,
float val,
uint 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,
uint 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,
uint 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,
uint 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,
uint 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 new file mode 100644 index 000000000..dfbc56c03 --- /dev/null +++ b/docs/build/html/atomic_8h_source.html @@ -0,0 +1,477 @@ + + + + + + + +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, uint 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, uint 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 uint 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>
+
59METAL_FUNC void
+
+
60mlx_atomic_fetch_or_explicit(device mlx_atomic<T>* object, T val, uint offset) {
+
61 atomic_fetch_or_explicit(&(object[offset].val), val, memory_order_relaxed);
+
62}
+
+
63
+
64template <typename T, enable_if_t<is_metal_atomic<T>, bool> = true>
+
+ +
66 device mlx_atomic<T>* object,
+
67 T val,
+
68 uint offset) {
+
69 atomic_fetch_min_explicit(&(object[offset].val), val, memory_order_relaxed);
+
70}
+
+
71
+
72template <typename T, enable_if_t<is_metal_atomic<T>, bool> = true>
+
+ +
74 device mlx_atomic<T>* object,
+
75 T val,
+
76 uint offset) {
+
77 atomic_fetch_max_explicit(&(object[offset].val), val, memory_order_relaxed);
+
78}
+
+
79
+
80template <typename T, enable_if_t<is_metal_atomic<T>, bool> = true>
+
+ +
82 device mlx_atomic<T>* object,
+
83 T val,
+
84 uint offset) {
+
85 atomic_fetch_add_explicit(&(object[offset].val), val, memory_order_relaxed);
+
86}
+
+
87
+
88template <typename T, enable_if_t<is_metal_atomic<T>, bool> = true>
+
+ +
90 device mlx_atomic<T>* object,
+
91 T val,
+
92 uint offset) {
+
93 T expected = mlx_atomic_load_explicit(object, offset);
+ +
95 object, &expected, val * expected, offset)) {
+
96 }
+
97}
+
+
98
+
99template <typename T, enable_if_t<is_metal_atomic<T>, bool> = true>
+
+ +
101 device mlx_atomic<T>* object,
+
102 thread T* expected,
+
103 T val,
+
104 uint offset) {
+
105 return atomic_compare_exchange_weak_explicit(
+
106 &(object[offset].val),
+
107 expected,
+
108 val,
+
109 memory_order_relaxed,
+
110 memory_order_relaxed);
+
111}
+
+
112
+
113// Specialization for float since it does not atomic_fetch_min_explicit
+
114template <>
+
+ +
116 device mlx_atomic<float>* object,
+
117 float val,
+
118 uint offset) {
+
119 float expected = mlx_atomic_load_explicit(object, offset);
+
120 while (val < expected) {
+ +
122 object, &expected, val, offset)) {
+
123 return;
+
124 }
+
125 }
+
126}
+
+
127
+
128// Specialization for float since it does not atomic_fetch_max_explicit
+
129template <>
+
+ +
131 device mlx_atomic<float>* object,
+
132 float val,
+
133 uint offset) {
+
134 float expected = mlx_atomic_load_explicit(object, offset);
+
135 while (val > expected) {
+ +
137 object, &expected, val, offset)) {
+
138 return;
+
139 }
+
140 }
+
141}
+
+
142
+
144// Custom atomics
+
146
+
147namespace {
+
148
+
149template <typename T>
+
150constexpr constant uint packing_size = sizeof(uint) / sizeof(T);
+
151
+
152template <typename T>
+
153union uint_or_packed {
+
154 T val[packing_size<T>];
+
155 uint bits;
+
156};
+
157
+
158template <typename T, typename Op>
+
159struct mlx_atomic_update_helper {
+
160 uint operator()(uint_or_packed<T> init, T update, uint elem_offset) {
+
161 Op op;
+
162 init.val[elem_offset] = op(update, init.val[elem_offset]);
+
163 return init.bits;
+
164 }
+
165};
+
166
+
167template <typename T, typename Op>
+
168METAL_FUNC void mlx_atomic_update_and_store(
+
169 device mlx_atomic<T>* object,
+
170 T update,
+
171 uint offset) {
+
172 uint pack_offset = offset / packing_size<T>;
+
173 uint elem_offset = offset % packing_size<T>;
+
174
+
175 mlx_atomic_update_helper<T, Op> helper;
+
176 uint_or_packed<T> expected;
+
177 expected.bits =
+
178 atomic_load_explicit(&(object[pack_offset].val), memory_order_relaxed);
+
179
+
180 while (Op::condition(update, expected.val[elem_offset]) &&
+ +
182 object,
+
183 &(expected.bits),
+
184 helper(expected, update, elem_offset),
+
185 pack_offset)) {
+
186 }
+
187}
+
188
+
189template <typename T>
+
190struct __None {
+
191 static bool condition(T a, T b) {
+
192#pragma unused(a)
+
193#pragma unused(b)
+
194 return true;
+
195 }
+
196
+
197 T operator()(T a, T b) {
+
198#pragma unused(b)
+
199 return a;
+
200 }
+
201};
+
202
+
203template <typename T>
+
204struct __Add {
+
205 static bool condition(T a, T b) {
+
206#pragma unused(a)
+
207#pragma unused(b)
+
208 return true;
+
209 }
+
210
+
211 T operator()(T a, T b) {
+
212 return a + b;
+
213 }
+
214};
+
215
+
216template <typename T>
+
217struct __Mul {
+
218 static bool condition(T a, T b) {
+
219#pragma unused(a)
+
220 return b != 0;
+
221 }
+
222
+
223 T operator()(T a, T b) {
+
224 return a * b;
+
225 }
+
226};
+
227
+
228template <typename T>
+
229struct __Max {
+
230 static bool condition(T a, T b) {
+
231 return a > b;
+
232 }
+
233
+
234 T operator()(T a, T b) {
+
235 return max(a, b);
+
236 }
+
237};
+
238
+
239template <typename T>
+
240struct __Min {
+
241 static bool condition(T a, T b) {
+
242 return a < b;
+
243 }
+
244
+
245 T operator()(T a, T b) {
+
246 return min(a, b);
+
247 }
+
248};
+
249
+
250} // namespace
+
251
+
252template <typename T, enable_if_t<!is_metal_atomic<T>, bool> = true>
+
253METAL_FUNC T
+
254mlx_atomic_load_explicit(device mlx_atomic<T>* object, uint offset) {
+
255 uint pack_offset = offset / sizeof(T);
+
256 uint elem_offset = offset % sizeof(T);
+
257 uint_or_packed<T> packed_val;
+
258 packed_val.bits =
+
259 atomic_load_explicit(&(object[pack_offset].val), memory_order_relaxed);
+
260 return packed_val.val[elem_offset];
+
261}
+
262
+
263template <typename T, enable_if_t<!is_metal_atomic<T>, bool> = true>
+
264METAL_FUNC void
+
265mlx_atomic_store_explicit(device mlx_atomic<T>* object, T val, uint offset) {
+
266 mlx_atomic_update_and_store<T, __None<T>>(object, val, offset);
+
267}
+
268
+
269template <typename T, enable_if_t<!is_metal_atomic<T>, bool> = true>
+
270METAL_FUNC void mlx_atomic_fetch_and_explicit(
+
271 device mlx_atomic<T>* object,
+
272 T val,
+
273 uint offset) {
+
274 uint pack_offset = offset / packing_size<T>;
+
275 uint elem_offset = offset % packing_size<T>;
+
276 uint_or_packed<T> identity;
+
277 identity.bits = __UINT32_MAX__;
+
278 identity.val[elem_offset] = val;
+
279
+
280 atomic_fetch_and_explicit(
+
281 &(object[pack_offset].val), identity.bits, memory_order_relaxed);
+
282}
+
283
+
284template <typename T, enable_if_t<!is_metal_atomic<T>, bool> = true>
+
285METAL_FUNC void
+
286mlx_atomic_fetch_or_explicit(device mlx_atomic<T>* object, T val, uint offset) {
+
287 uint pack_offset = offset / packing_size<T>;
+
288 uint elem_offset = offset % packing_size<T>;
+
289 uint_or_packed<T> identity;
+
290 identity.bits = 0;
+
291 identity.val[elem_offset] = val;
+
292
+
293 atomic_fetch_or_explicit(
+
294 &(object[pack_offset].val), identity.bits, memory_order_relaxed);
+
295}
+
296
+
297template <typename T, enable_if_t<!is_metal_atomic<T>, bool> = true>
+
298METAL_FUNC void mlx_atomic_fetch_min_explicit(
+
299 device mlx_atomic<T>* object,
+
300 T val,
+
301 uint offset) {
+
302 mlx_atomic_update_and_store<T, __Min<T>>(object, val, offset);
+
303}
+
304
+
305template <typename T, enable_if_t<!is_metal_atomic<T>, bool> = true>
+
306METAL_FUNC void mlx_atomic_fetch_max_explicit(
+
307 device mlx_atomic<T>* object,
+
308 T val,
+
309 uint offset) {
+
310 mlx_atomic_update_and_store<T, __Max<T>>(object, val, offset);
+
311}
+
312
+
313template <typename T, enable_if_t<!is_metal_atomic<T>, bool> = true>
+
314METAL_FUNC void mlx_atomic_fetch_add_explicit(
+
315 device mlx_atomic<T>* object,
+
316 T val,
+
317 uint offset) {
+
318 mlx_atomic_update_and_store<T, __Add<T>>(object, val, offset);
+
319}
+
320
+
321template <typename T, enable_if_t<!is_metal_atomic<T>, bool> = true>
+
322METAL_FUNC void mlx_atomic_fetch_mul_explicit(
+
323 device mlx_atomic<T>* object,
+
324 T val,
+
325 uint offset) {
+
326 mlx_atomic_update_and_store<T, __Mul<T>>(object, val, offset);
+
327}
+
328
+
329template <typename T, enable_if_t<!is_metal_atomic<T>, bool> = true>
+
+ +
331 device mlx_atomic<T>* object,
+
332 thread uint* expected,
+
333 uint val,
+
334 uint offset) {
+
335 return atomic_compare_exchange_weak_explicit(
+
336 &(object[offset].val),
+
337 expected,
+
338 val,
+
339 memory_order_relaxed,
+
340 memory_order_relaxed);
+
341}
+
+
METAL_FUNC void mlx_atomic_fetch_add_explicit(device mlx_atomic< T > *object, T val, uint offset)
Definition atomic.h:81
+
METAL_FUNC void mlx_atomic_fetch_max_explicit< float >(device mlx_atomic< float > *object, float val, uint offset)
Definition atomic.h:130
+
METAL_FUNC void mlx_atomic_fetch_and_explicit(device mlx_atomic< T > *object, T val, uint offset)
Definition atomic.h:51
+
METAL_FUNC T mlx_atomic_load_explicit(device mlx_atomic< T > *object, uint offset)
Definition atomic.h:40
+
METAL_FUNC void mlx_atomic_store_explicit(device mlx_atomic< T > *object, T val, uint offset)
Definition atomic.h:46
+
constexpr constant bool is_metal_atomic
Definition atomic.h:16
+
METAL_FUNC void mlx_atomic_fetch_or_explicit(device mlx_atomic< T > *object, T val, uint offset)
Definition atomic.h:60
+
METAL_FUNC void mlx_atomic_fetch_min_explicit< float >(device mlx_atomic< float > *object, float val, uint offset)
Definition atomic.h:115
+
METAL_FUNC void mlx_atomic_fetch_max_explicit(device mlx_atomic< T > *object, T val, uint offset)
Definition atomic.h:73
+
METAL_FUNC void mlx_atomic_fetch_min_explicit(device mlx_atomic< T > *object, T val, uint offset)
Definition atomic.h:65
+
METAL_FUNC void mlx_atomic_fetch_mul_explicit(device mlx_atomic< T > *object, T val, uint offset)
Definition atomic.h:89
+
METAL_FUNC bool mlx_atomic_compare_exchange_weak_explicit(device mlx_atomic< T > *object, thread T *expected, T val, uint offset)
Definition atomic.h:100
+
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 new file mode 100644 index 000000000..60d5dacd1 --- /dev/null +++ b/docs/build/html/backend_2accelerate_2utils_8h.html @@ -0,0 +1,107 @@ + + + + + + + +MLX: mlx/backend/accelerate/utils.h File Reference + + + + + + + + + + + +
+
+ + + + + + +
+
MLX +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+ +
utils.h File Reference
+
+
+
#include <vecLib/BNNS/bnns.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 new file mode 100644 index 000000000..02e8f28ac --- /dev/null +++ b/docs/build/html/backend_2accelerate_2utils_8h_source.html @@ -0,0 +1,134 @@ + + + + + + + +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 Apple Inc.
+
2
+
3#pragma once
+
4
+
5#include <vecLib/BNNS/bnns.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:95
+
Definition dtype.h:15
+ + + + + + +
+ + + + diff --git a/docs/build/html/backend_2common_2ops_8h.html b/docs/build/html/backend_2common_2ops_8h.html new file mode 100644 index 000000000..c976bb466 --- /dev/null +++ b/docs/build/html/backend_2common_2ops_8h.html @@ -0,0 +1,234 @@ + + + + + + + +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 new file mode 100644 index 000000000..1b6cebe96 --- /dev/null +++ b/docs/build/html/backend_2common_2ops_8h_source.html @@ -0,0 +1,1218 @@ + + + + + + + +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};
+
+
377
+
+
378struct Sin {
+
379 template <typename T>
+
+
380 T operator()(T x) {
+
381 return std::sin(x);
+
382 };
+
+
383};
+
+
384
+
+
385struct Sinh {
+
386 template <typename T>
+
+
387 T operator()(T x) {
+
388 return std::sinh(x);
+
389 };
+
+
390};
+
+
391
+
+
392struct Square {
+
393 template <typename T>
+
+
394 T operator()(T x) {
+
395 return x * x;
+
396 };
+
+
397};
+
+
398
+
+
399struct Sqrt {
+
400 template <typename T>
+
+
401 T operator()(T x) {
+
402 return std::sqrt(x);
+
403 };
+
+
404};
+
+
405
+
+
406struct Rsqrt {
+
407 template <typename T>
+
+
408 T operator()(T x) {
+
409 return static_cast<decltype(x)>(1.0) / std::sqrt(x);
+
410 };
+
+
411};
+
+
412
+
+
413struct Tan {
+
414 template <typename T>
+
+
415 T operator()(T x) {
+
416 return std::tan(x);
+
417 };
+
+
418};
+
+
419
+
+
420struct Tanh {
+
421 template <typename T>
+
+
422 T operator()(T x) {
+
423 return std::tanh(x);
+
424 };
+
+
425};
+
+
426
+
+
427struct Add {
+
428 template <typename T>
+
+
429 T operator()(T x, T y) {
+
430 return x + y;
+
431 }
+
+
432};
+
+
433
+
+
434struct Divide {
+
435 template <typename T>
+
+
436 T operator()(T x, T y) {
+
437 return x / y;
+
438 }
+
+
439};
+
+
440
+
+
441struct Remainder {
+
442 template <typename T>
+
+
443 std::enable_if_t<std::is_integral_v<T> & !std::is_signed_v<T>, T> operator()(
+
444 T numerator,
+
445 T denominator) {
+
446 return numerator % denominator;
+
447 }
+
+
448
+
449 template <typename T>
+
+
450 std::enable_if_t<std::is_integral_v<T> & std::is_signed_v<T>, T> operator()(
+
451 T numerator,
+
452 T denominator) {
+
453 auto r = numerator % denominator;
+
454 if (r != 0 && (r < 0 != denominator < 0))
+
455 r += denominator;
+
456 return r;
+
457 }
+
+
458
+
459 template <typename T>
+
+
460 std::enable_if_t<!std::is_integral_v<T>, T> operator()(
+
461 T numerator,
+
462 T denominator) {
+
463 auto r = std::fmod(numerator, denominator);
+
464 if (r != 0 && (r < 0 != denominator < 0)) {
+
465 r += denominator;
+
466 }
+
467 return r;
+
468 }
+
+
469
+
+ +
471 return numerator % denominator;
+
472 }
+
+
473};
+
+
474
+
+
475struct Equal {
+
476 template <typename T>
+
+
477 bool operator()(T x, T y) {
+
478 return x == y;
+
479 }
+
+
480};
+
+
481
+
+
482struct NaNEqual {
+
483 template <typename T>
+
+
484 bool operator()(T x, T y) {
+
485 return x == y || (std::isnan(x) && std::isnan(y));
+
486 }
+
+
487};
+
+
488
+
+
489struct Greater {
+
490 template <typename T>
+
+
491 bool operator()(T x, T y) {
+
492 return x > y;
+
493 }
+
+
494};
+
+
495
+
+ +
497 template <typename T>
+
+
498 bool operator()(T x, T y) {
+
499 return x >= y;
+
500 }
+
+
501};
+
+
502
+
+
503struct Less {
+
504 template <typename T>
+
+
505 bool operator()(T x, T y) {
+
506 return x < y;
+
507 }
+
+
508};
+
+
509
+
+
510struct LessEqual {
+
511 template <typename T>
+
+
512 bool operator()(T x, T y) {
+
513 return x <= y;
+
514 }
+
+
515};
+
+
516
+
+
517struct Maximum {
+
518 template <typename T>
+
+
519 std::enable_if_t<std::is_integral_v<T>, T> operator()(T x, T y) {
+
520 return (x > y) ? x : y;
+
521 }
+
+
522
+
523 template <typename T>
+
+
524 std::enable_if_t<!std::is_integral_v<T>, T> operator()(T x, T y) {
+
525 if (std::isnan(x)) {
+
526 return x;
+
527 }
+
528 return (x > y) ? x : y;
+
529 }
+
+
530};
+
+
531
+
+
532struct Minimum {
+
533 template <typename T>
+
+
534 std::enable_if_t<std::is_integral_v<T>, T> operator()(T x, T y) {
+
535 return x < y ? x : y;
+
536 }
+
+
537
+
538 template <typename T>
+
+
539 std::enable_if_t<!std::is_integral_v<T>, T> operator()(T x, T y) {
+
540 if (std::isnan(x)) {
+
541 return x;
+
542 }
+
543 return x < y ? x : y;
+
544 }
+
+
545};
+
+
546
+
+
547struct LogAddExp {
+
548 template <typename T>
+
+
549 T operator()(T x, T y) {
+
550 constexpr float inf = std::numeric_limits<float>::infinity();
+
551 auto maxval = Maximum()(x, y);
+
552 auto minval = Minimum()(x, y);
+
553 return (minval == -inf || maxval == inf)
+
554 ? maxval
+
555 : static_cast<decltype(x)>(
+
556 maxval + std::log1p(fast_exp(minval - maxval)));
+
557 };
+
+
558};
+
+
559
+
+
560struct Multiply {
+
561 template <typename T>
+
+
562 T operator()(T x, T y) {
+
563 return x * y;
+
564 }
+
+
565};
+
+
566
+
+
567struct NotEqual {
+
568 template <typename T>
+
+
569 bool operator()(T x, T y) {
+
570 return x != y;
+
571 }
+
+
572};
+
+
573
+
+
574struct Power {
+
575 template <typename T>
+
+
576 std::enable_if_t<!std::is_integral_v<T>, T> operator()(T base, T exp) {
+
577 return std::pow(base, exp);
+
578 }
+
+
579
+
580 template <typename T>
+
+
581 std::enable_if_t<std::is_integral_v<T>, T> operator()(T base, T exp) {
+
582 T res = 1;
+
583 while (exp) {
+
584 if (exp & 1) {
+
585 res *= base;
+
586 }
+
587 exp >>= 1;
+
588 base *= base;
+
589 }
+
590 return res;
+
591 }
+
+
592};
+
+
593
+
+
594struct Subtract {
+
595 template <typename T>
+
+
596 T operator()(T x, T y) {
+
597 return x - y;
+
598 }
+
+
599};
+
+
600
+
+ +
602 template <typename T>
+
+
603 T operator()(T x, T y) {
+
604 return x && y;
+
605 };
+
+
606};
+
+
607
+
+
608struct LogicalOr {
+
609 template <typename T>
+
+
610 T operator()(T x, T y) {
+
611 return x || y;
+
612 };
+
+
613};
+
+
614
+
+
615struct Select {
+
616 template <typename T>
+
+
617 T operator()(bool condition, T x, T y) {
+
618 return condition ? x : y;
+
619 }
+
+
620};
+
+
621
+
+ +
623 template <typename T>
+
+
624 T operator()(T x, T y) {
+
625 return x & y;
+
626 };
+
+
627};
+
+
628
+
+
629struct BitwiseOr {
+
630 template <typename T>
+
+
631 T operator()(T x, T y) {
+
632 return x | y;
+
633 };
+
+
634};
+
+
635
+
+ +
637 template <typename T>
+
+
638 T operator()(T x, T y) {
+
639 return x ^ y;
+
640 };
+
+
641};
+
+
642
+
+
643struct LeftShift {
+
644 template <typename T>
+
+
645 T operator()(T x, T y) {
+
646 return x << y;
+
647 };
+
+
648};
+
+
649
+
+ +
651 template <typename T>
+
+
652 T operator()(T x, T y) {
+
653 return x >> y;
+
654 };
+
+
655};
+
+
656
+
657} // 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:427
+
T operator()(T x, T y)
Definition ops.h:429
+
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:622
+
T operator()(T x, T y)
Definition ops.h:624
+
Definition ops.h:629
+
T operator()(T x, T y)
Definition ops.h:631
+
Definition ops.h:636
+
T operator()(T x, T y)
Definition ops.h:638
+
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:434
+
T operator()(T x, T y)
Definition ops.h:436
+
Definition ops.h:475
+
bool operator()(T x, T y)
Definition ops.h:477
+
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:498
+
Definition ops.h:489
+
bool operator()(T x, T y)
Definition ops.h:491
+
Definition ops.h:643
+
T operator()(T x, T y)
Definition ops.h:645
+
Definition ops.h:510
+
bool operator()(T x, T y)
Definition ops.h:512
+
Definition ops.h:503
+
bool operator()(T x, T y)
Definition ops.h:505
+
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:547
+
T operator()(T x, T y)
Definition ops.h:549
+
Definition ops.h:298
+
T operator()(T x)
Definition ops.h:300
+
Definition ops.h:601
+
T operator()(T x, T y)
Definition ops.h:603
+
Definition ops.h:326
+
T operator()(T x)
Definition ops.h:328
+
Definition ops.h:608
+
T operator()(T x, T y)
Definition ops.h:610
+
Definition ops.h:517
+
std::enable_if_t< std::is_integral_v< T >, T > operator()(T x, T y)
Definition ops.h:519
+
std::enable_if_t<!std::is_integral_v< T >, T > operator()(T x, T y)
Definition ops.h:524
+
Definition ops.h:532
+
std::enable_if_t<!std::is_integral_v< T >, T > operator()(T x, T y)
Definition ops.h:539
+
std::enable_if_t< std::is_integral_v< T >, T > operator()(T x, T y)
Definition ops.h:534
+
Definition ops.h:560
+
T operator()(T x, T y)
Definition ops.h:562
+
Definition ops.h:482
+
bool operator()(T x, T y)
Definition ops.h:484
+
Definition ops.h:333
+
T operator()(T x)
Definition ops.h:335
+
Definition ops.h:567
+
bool operator()(T x, T y)
Definition ops.h:569
+
Definition ops.h:574
+
std::enable_if_t<!std::is_integral_v< T >, T > operator()(T base, T exp)
Definition ops.h:576
+
std::enable_if_t< std::is_integral_v< T >, T > operator()(T base, T exp)
Definition ops.h:581
+
Definition ops.h:441
+
std::enable_if_t<!std::is_integral_v< T >, T > operator()(T numerator, T denominator)
Definition ops.h:460
+
std::enable_if_t< std::is_integral_v< T > &!std::is_signed_v< T >, T > operator()(T numerator, T denominator)
Definition ops.h:443
+
std::enable_if_t< std::is_integral_v< T > &std::is_signed_v< T >, T > operator()(T numerator, T denominator)
Definition ops.h:450
+
complex64_t operator()(complex64_t numerator, complex64_t denominator)
Definition ops.h:470
+
Definition ops.h:650
+
T operator()(T x, T y)
Definition ops.h:652
+
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:406
+
T operator()(T x)
Definition ops.h:408
+
Definition ops.h:615
+
T operator()(bool condition, T x, T y)
Definition ops.h:617
+
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
+
uint32_t operator()(uint32_t x)
Definition ops.h:370
+
Definition ops.h:378
+
T operator()(T x)
Definition ops.h:380
+
Definition ops.h:385
+
T operator()(T x)
Definition ops.h:387
+
Definition ops.h:399
+
T operator()(T x)
Definition ops.h:401
+
Definition ops.h:392
+
T operator()(T x)
Definition ops.h:394
+
Definition ops.h:594
+
T operator()(T x, T y)
Definition ops.h:596
+
Definition ops.h:413
+
T operator()(T x)
Definition ops.h:415
+
Definition ops.h:420
+
T operator()(T x)
Definition ops.h:422
+
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 new file mode 100644 index 000000000..8789ebdcf --- /dev/null +++ b/docs/build/html/backend_2common_2utils_8h.html @@ -0,0 +1,121 @@ + + + + + + + +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::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)
 
template<typename stride_t >
auto mlx::core::check_contiguity (const std::vector< int > &shape, const std::vector< stride_t > &strides)
 
+
+ + + + diff --git a/docs/build/html/backend_2common_2utils_8h_source.html b/docs/build/html/backend_2common_2utils_8h_source.html new file mode 100644 index 000000000..b2b4439da --- /dev/null +++ b/docs/build/html/backend_2common_2utils_8h_source.html @@ -0,0 +1,236 @@ + + + + + + + +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
+
32// Collapse dims that are contiguous to possibly route to a better kernel
+
33// e.g. for x = transpose(array({0, 1, 2, 3, 4, 5, 6, 7}, {2, 2, 2}), {2, 0, 1})
+
34// should return {{2, 4}, {{1, 2}}}.
+
35//
+
36// When multiple arrays are passed they should all have the same shape. The
+
37// collapsed axes are also the same so one shape is returned.
+
38template <typename stride_t>
+
39inline std::tuple<std::vector<int>, std::vector<std::vector<stride_t>>>
+
+ +
41 const std::vector<int>& shape,
+
42 const std::vector<std::vector<stride_t>> strides) {
+
43 // Make a vector that has axes separated with -1. Collapse all axes between
+
44 // -1.
+
45 std::vector<int> to_collapse;
+
46 if (shape.size() > 0) {
+
47 to_collapse.push_back(0);
+
48 for (int i = 1; i < shape.size(); i++) {
+
49 bool contiguous = true;
+
50 for (const std::vector<stride_t>& st : strides) {
+
51 if (st[i] * shape[i] != st[i - 1]) {
+
52 contiguous = false;
+
53 }
+
54 if (!contiguous) {
+
55 break;
+
56 }
+
57 }
+
58 if (!contiguous) {
+
59 to_collapse.push_back(-1);
+
60 }
+
61 to_collapse.push_back(i);
+
62 }
+
63 to_collapse.push_back(-1);
+
64 }
+
65
+
66 std::vector<int> out_shape;
+
67 std::vector<std::vector<stride_t>> out_strides(strides.size());
+
68 for (int i = 0; i < to_collapse.size(); i++) {
+
69 int current_shape = shape[to_collapse[i]];
+
70 while (to_collapse[++i] != -1) {
+
71 current_shape *= shape[to_collapse[i]];
+
72 }
+
73 out_shape.push_back(current_shape);
+
74 for (int j = 0; j < strides.size(); j++) {
+
75 const std::vector<stride_t>& st = strides[j];
+
76 out_strides[j].push_back(st[to_collapse[i - 1]]);
+
77 }
+
78 }
+
79
+
80 return std::make_tuple(out_shape, out_strides);
+
81}
+
+
82
+
83inline std::tuple<std::vector<int>, std::vector<std::vector<size_t>>>
+
+
84collapse_contiguous_dims(const std::vector<array>& xs) {
+
85 std::vector<std::vector<size_t>> strides;
+
86 for (auto& x : xs) {
+
87 strides.emplace_back(x.strides());
+
88 }
+
89 return collapse_contiguous_dims(xs[0].shape(), strides);
+
90}
+
+
91
+
92template <typename... Arrays, typename = enable_for_arrays_t<Arrays...>>
+
+
93inline auto collapse_contiguous_dims(Arrays&&... xs) {
+ +
95 std::vector<array>{std::forward<Arrays>(xs)...});
+
96}
+
+
97
+
98template <typename stride_t>
+
+
99inline auto check_contiguity(
+
100 const std::vector<int>& shape,
+
101 const std::vector<stride_t>& strides) {
+
102 size_t data_size = 1;
+
103 size_t f_stride = 1;
+
104 size_t b_stride = 1;
+
105 bool is_row_contiguous = true;
+
106 bool is_col_contiguous = true;
+
107
+
108 for (int i = 0, ri = shape.size() - 1; ri >= 0; i++, ri--) {
+
109 is_row_contiguous &= strides[i] == f_stride || shape[i] == 1;
+
110 is_col_contiguous &= strides[ri] == b_stride || shape[ri] == 1;
+
111 f_stride *= shape[i];
+
112 b_stride *= shape[ri];
+
113 if (strides[i] > 0) {
+
114 data_size *= shape[i];
+
115 }
+
116 }
+
117
+
118 return std::make_tuple(data_size, is_row_contiguous, is_col_contiguous);
+
119}
+
+
120
+
121} // namespace mlx::core
+ +
Definition array.h:20
+
const Flags & flags() const
Get the Flags bit-field.
Definition array.h:290
+
const std::vector< size_t > & strides() const
The strides of the array.
Definition array.h:113
+
const std::vector< int > & shape() const
The shape of the array as a vector of integers.
Definition array.h:99
+
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:99
+
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:40
+
typename std::enable_if_t< is_arrays_v< T... > > enable_for_arrays_t
Definition array.h:565
+
bool row_contiguous
Definition array.h:226
+
+ + + + diff --git a/docs/build/html/backend_2metal_2allocator_8h.html b/docs/build/html/backend_2metal_2allocator_8h.html new file mode 100644 index 000000000..a8d38c66a --- /dev/null +++ b/docs/build/html/backend_2metal_2allocator_8h.html @@ -0,0 +1,161 @@ + + + + + + + +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 new file mode 100644 index 000000000..6588aac61 --- /dev/null +++ b/docs/build/html/backend_2metal_2allocator_8h_source.html @@ -0,0 +1,221 @@ + + + + + + + +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;
+
+ +
60 return active_memory_;
+
61 };
+
+
+
62 size_t get_peak_memory() {
+
63 return peak_memory_;
+
64 };
+
+
+ +
66 std::unique_lock lk(mutex_);
+
67 peak_memory_ = 0;
+
68 };
+
+
+ +
70 return buffer_cache_.cache_size();
+
71 };
+
+
72 size_t set_cache_limit(size_t limit);
+
73 size_t set_memory_limit(size_t limit, bool relaxed);
+ +
75
+
76 private:
+
77 MTL::Device* device_;
+ + +
80
+
81 // Caching allocator
+
82 BufferCache buffer_cache_;
+
83
+
84 // Allocation stats
+
85 size_t block_limit_;
+
86 size_t gc_limit_;
+
87 size_t active_memory_{0};
+
88 size_t peak_memory_{0};
+
89 size_t max_pool_size_;
+
90 bool relaxed_{true};
+
91
+
92 std::mutex mutex_;
+
93};
+
+
94
+ +
96
+
97} // 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:65
+ +
virtual Buffer malloc(size_t size, bool allow_swap=false) override
Allocator for Metal GPUs.
+
size_t get_active_memory()
Definition allocator.h:59
+
size_t get_peak_memory()
Definition allocator.h:62
+
size_t get_cache_memory()
Definition allocator.h:69
+
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 new file mode 100644 index 000000000..573f61f73 --- /dev/null +++ b/docs/build/html/backend_2metal_2device_8h.html @@ -0,0 +1,135 @@ + + + + + + + +MLX: mlx/backend/metal/device.h File Reference + + + + + + + + + + + +
+
+ + + + + + +
+
MLX +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+ +
device.h File Reference
+
+
+
#include <Metal/Metal.hpp>
+#include <functional>
+#include <mutex>
+#include <string>
+#include <unordered_map>
+#include <unordered_set>
+#include <dlfcn.h>
+#include <filesystem>
+#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 new file mode 100644 index 000000000..8a7e38101 --- /dev/null +++ b/docs/build/html/backend_2metal_2device_8h_source.html @@ -0,0 +1,389 @@ + + + + + + + +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 <functional>
+
7#include <mutex>
+
8#include <string>
+
9#include <unordered_map>
+
10#include <unordered_set>
+
11
+
12#include <dlfcn.h>
+
13#include <filesystem>
+
14
+
15#include "mlx/array.h"
+
16#include "mlx/device.h"
+
17
+
18namespace fs = std::filesystem;
+
19
+
20namespace mlx::core::metal {
+
21
+
+
22inline std::string get_colocated_mtllib_path(const std::string& lib_name) {
+
23 Dl_info info;
+
24 std::string mtllib_path;
+
25 std::string lib_ext = lib_name + ".metallib";
+
26
+
27 int success = dladdr((void*)get_colocated_mtllib_path, &info);
+
28 if (success) {
+
29 auto mtllib = fs::path(info.dli_fname).remove_filename() / lib_ext;
+
30 mtllib_path = mtllib.c_str();
+
31 }
+
32
+
33 return mtllib_path;
+
34}
+
+
35
+
36using MTLFCList =
+
37 std::vector<std::tuple<const void*, MTL::DataType, NS::UInteger>>;
+
38
+
+ +
+
40 CommandEncoder(MTL::CommandBuffer* cbuf) : cbuf(cbuf) {
+
41 enc = cbuf->computeCommandEncoder(MTL::DispatchTypeConcurrent);
+
42 enc->retain();
+
43 };
+
+ + +
46
+
+ +
+ +
49 enc.concurrent = true;
+
50 }
+
+
+ +
52 enc.concurrent = false;
+
53 enc.outputs.insert(
+
54 enc.concurrent_outputs.begin(), enc.concurrent_outputs.end());
+
55 enc.concurrent_outputs.clear();
+
56 }
+
+
57
+
58 private:
+
59 CommandEncoder& enc;
+
60 };
+
+
61
+
+
62 MTL::ComputeCommandEncoder* operator->() {
+
63 return enc;
+
64 }
+
+
65
+
+
66 void set_input_array(const array& a, int idx, int64_t offset = 0) {
+
67 auto r_buf =
+
68 static_cast<MTL::Resource*>(const_cast<void*>(a.buffer().ptr()));
+
69 if (auto it = outputs.find(r_buf); it != outputs.end()) {
+
70 // Insert a barrier
+
71 enc->memoryBarrier(&r_buf, 1);
+
72
+
73 // Remove the output
+
74 outputs.erase(it);
+
75 }
+
76 auto a_buf = static_cast<const MTL::Buffer*>(a.buffer().ptr());
+
77 auto base_offset = a.data<char>() -
+
78 static_cast<char*>(const_cast<MTL::Buffer*>(a_buf)->contents());
+
79 base_offset += offset;
+
80 enc->setBuffer(a_buf, base_offset, idx);
+
81 }
+
+
82
+
+
83 void set_output_array(array& a, int idx, int64_t offset = 0) {
+
84 // Add barriers before adding the output to the output set
+
85 set_input_array(a, idx, offset);
+
86 auto buf = static_cast<MTL::Resource*>(a.buffer().ptr());
+
87 if (concurrent) {
+
88 concurrent_outputs.insert(buf);
+
89 } else {
+
90 outputs.insert(buf);
+
91 }
+
92 }
+
+
93
+
94 void dispatchThreadgroups(MTL::Size grid_dims, MTL::Size group_dims);
+
95 void dispatchThreads(MTL::Size grid_dims, MTL::Size group_dims);
+
96
+
+ +
98 return ConcurrentContext(*this);
+
99 }
+
+
100
+
+ +
102 enc->endEncoding();
+
103 enc->release();
+
104 }
+
+
105
+
106 private:
+
107 void maybe_split();
+
108
+
109 int num_dispatches{0};
+
110 MTL::CommandBuffer* cbuf;
+
111 MTL::ComputeCommandEncoder* enc;
+
112 bool concurrent{false};
+
113 std::unordered_set<MTL::Resource*> outputs;
+
114 std::unordered_set<MTL::Resource*> concurrent_outputs;
+
115};
+
+
116
+
+
117class Device {
+
118 public:
+ +
120 Device(const Device&) = delete;
+
121 Device& operator=(const Device&) = delete;
+ +
123
+
+
124 MTL::Device* mtl_device() {
+
125 return device_;
+
126 };
+
+
127
+
128 void new_queue(int index);
+
129 MTL::CommandBuffer* get_command_buffer(int index);
+ + +
132 void commit_command_buffer(int index);
+ +
134 void end_encoding(int index);
+
135
+ +
137 const std::string& lib_name,
+
138 const std::string& lib_path);
+ +
140 const std::string& lib_name,
+
141 const std::function<std::string(const std::string&)>& lib_path_func =
+ +
143
+
144 MTL::Library* get_library(const std::string& name);
+
145
+
146 MTL::Library* get_library(
+
147 const std::string& name,
+
148 const std::string& source_string,
+
149 bool cache = true);
+
150
+
151 MTL::Library* get_library(
+
152 const std::string& name,
+
153 const MTL::StitchedLibraryDescriptor* desc,
+
154 bool cache = true);
+
155
+
156 MTL::Function* get_function(
+
157 const std::string& base_name,
+
158 MTL::Library* mtl_lib,
+
159 const std::string& specialized_name = "",
+
160 const MTLFCList& func_consts = {});
+
161
+
162 MTL::Function* get_function(
+
163 const std::string& base_name,
+
164 const std::string& lib_name = "mlx",
+
165 const std::string& specialized_name = "",
+
166 const MTLFCList& func_consts = {});
+
167
+
168 MTL::ComputePipelineState* get_kernel(
+
169 const std::string& base_name,
+
170 MTL::Library* mtl_lib,
+
171 const std::string& hash_name = "",
+
172 const MTLFCList& func_consts = {},
+
173 const std::vector<MTL::Function*>& linked_functions = {});
+
174
+
175 MTL::ComputePipelineState* get_kernel(
+
176 const std::string& base_name,
+
177 const std::string& lib_name = "mlx",
+
178 const std::string& hash_name = "",
+
179 const MTLFCList& func_consts = {},
+
180 const std::vector<MTL::Function*>& linked_functions = {});
+
181
+
182 MTL::ArgumentEncoder* argument_encoder(
+
183 const std::vector<MTL::ArgumentDescriptor*>& arg_descs) const;
+
184
+
185 private:
+
186 MTL::Library* get_library_cache_(const std::string& name);
+
187
+
188 MTL::Library* get_library_(const std::string& source_string);
+
189 MTL::Library* get_library_(const MTL::StitchedLibraryDescriptor* desc);
+
190
+
191 MTL::Function* get_function_(const std::string& name, MTL::Library* mtl_lib);
+
192
+
193 MTL::Function* get_function_(
+
194 const std::string& name,
+
195 const std::string& specialized_name,
+
196 const MTLFCList& func_consts,
+
197 MTL::Library* mtl_lib);
+
198
+
199 MTL::LinkedFunctions* get_linked_functions_(
+
200 const std::vector<MTL::Function*>& funcs);
+
201
+
202 MTL::ComputePipelineState* get_kernel_(
+
203 const std::string& name,
+
204 const MTL::Function* mtl_function);
+
205
+
206 MTL::ComputePipelineState* get_kernel_(
+
207 const std::string& name,
+
208 const MTL::Function* mtl_function,
+
209 const MTL::LinkedFunctions* linked_functions);
+
210
+
211 MTL::Device* device_;
+
212 std::unordered_map<int32_t, MTL::CommandQueue*> queue_map_;
+
213 std::unordered_map<int32_t, std::pair<int, MTL::CommandBuffer*>> buffer_map_;
+
214 std::unordered_map<int32_t, std::unique_ptr<CommandEncoder>> encoder_map_;
+
215 std::unordered_map<std::string, MTL::ComputePipelineState*> kernel_map_;
+
216 std::unordered_map<std::string, MTL::Library*> library_map_;
+
217 std::mutex mtx_;
+
218};
+
+
219
+ +
221
+
222} // namespace mlx::core::metal
+ +
MTL::Buffer * buf
Definition allocator.h:38
+
const void * ptr() const
Definition allocator.h:23
+
Definition array.h:20
+
T * data()
Definition array.h:313
+
allocator::Buffer & buffer()
Definition array.h:299
+
Definition device.h:117
+
int get_command_buffer_ops(int index)
+
MTL::Device * mtl_device()
Definition device.h:124
+
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={})
+
void register_library(const std::string &lib_name, const std::function< std::string(const std::string &)> &lib_path_func=get_colocated_mtllib_path)
+
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)
+
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:22
+
std::vector< std::tuple< const void *, MTL::DataType, NS::UInteger > > MTLFCList
Definition device.h:36
+
Device & device(mlx::core::Device)
+
Definition device.h:7
+ + +
ConcurrentContext(CommandEncoder &enc)
Definition device.h:48
+
Definition device.h:39
+
void dispatchThreads(MTL::Size grid_dims, MTL::Size group_dims)
+
CommandEncoder(MTL::CommandBuffer *cbuf)
Definition device.h:40
+
CommandEncoder & operator=(const CommandEncoder &)=delete
+
ConcurrentContext start_concurrent()
Definition device.h:97
+
void set_output_array(array &a, int idx, int64_t offset=0)
Definition device.h:83
+
void dispatchThreadgroups(MTL::Size grid_dims, MTL::Size group_dims)
+
~CommandEncoder()
Definition device.h:101
+
MTL::ComputeCommandEncoder * operator->()
Definition device.h:62
+
void set_input_array(const array &a, int idx, int64_t offset=0)
Definition device.h:66
+
CommandEncoder(const CommandEncoder &)=delete
+
+ + + + diff --git a/docs/build/html/backend_2metal_2jit_2fft_8h.html b/docs/build/html/backend_2metal_2jit_2fft_8h.html new file mode 100644 index 000000000..89b34274b --- /dev/null +++ b/docs/build/html/backend_2metal_2jit_2fft_8h.html @@ -0,0 +1,240 @@ + + + + + + + +MLX: mlx/backend/metal/jit/fft.h File Reference + + + + + + + + + + + +
+
+ + + + + + +
+
MLX +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+ +
fft.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + + + + + + +

+Variables

constexpr std::string_view fft_kernel
 
constexpr std::string_view rader_fft_kernel
 
constexpr std::string_view bluestein_fft_kernel
 
constexpr std::string_view four_step_fft_kernel
 
+

Variable Documentation

+ +

◆ bluestein_fft_kernel

+ +
+
+ + + + + +
+ + + + +
constexpr std::string_view bluestein_fft_kernel
+
+constexpr
+
+Initial value:
= R"(
+
template [[host_name("{name}")]] [[kernel]] void
+
bluestein_fft<{tg_mem_size}, {in_T}, {out_T}>(
+
const device {in_T}* in [[buffer(0)]],
+
device {out_T}* out [[buffer(1)]],
+
const device float2* w_q [[buffer(2)]],
+
const device float2* w_k [[buffer(3)]],
+
constant const int& length,
+
constant const int& n,
+
constant const int& batch_size,
+
uint3 elem [[thread_position_in_grid]],
+
uint3 grid [[threads_per_grid]]);
+
)"
+
+
+
+ +

◆ fft_kernel

+ +
+
+ + + + + +
+ + + + +
constexpr std::string_view fft_kernel
+
+constexpr
+
+Initial value:
= R"(
+
template [[host_name("{name}")]] [[kernel]] void
+
fft<{tg_mem_size}, {in_T}, {out_T}>(
+
const device {in_T}* in [[buffer(0)]],
+
device {out_T}* out [[buffer(1)]],
+
constant const int& n,
+
constant const int& batch_size,
+
uint3 elem [[thread_position_in_grid]],
+
uint3 grid [[threads_per_grid]]);
+
)"
+
+
+
+ +

◆ four_step_fft_kernel

+ +
+
+ + + + + +
+ + + + +
constexpr std::string_view four_step_fft_kernel
+
+constexpr
+
+Initial value:
= R"(
+
template [[host_name("{name}")]] [[kernel]] void
+
four_step_fft<{tg_mem_size}, {in_T}, {out_T}, {step}, {real}>(
+
const device {in_T}* in [[buffer(0)]],
+
device {out_T}* out [[buffer(1)]],
+
constant const int& n1,
+
constant const int& n2,
+
constant const int& batch_size,
+
uint3 elem [[thread_position_in_grid]],
+
uint3 grid [[threads_per_grid]]);
+
)"
+
+
+
+ +

◆ rader_fft_kernel

+ +
+
+ + + + + +
+ + + + +
constexpr std::string_view rader_fft_kernel
+
+constexpr
+
+Initial value:
= R"(
+
template [[host_name("{name}")]] [[kernel]] void
+
rader_fft<{tg_mem_size}, {in_T}, {out_T}>(
+
const device {in_T}* in [[buffer(0)]],
+
device {out_T}* out [[buffer(1)]],
+
const device float2* raders_b_q [[buffer(2)]],
+
const device short* raders_g_q [[buffer(3)]],
+
const device short* raders_g_minus_q [[buffer(4)]],
+
constant const int& n,
+
constant const int& batch_size,
+
constant const int& rader_n,
+
uint3 elem [[thread_position_in_grid]],
+
uint3 grid [[threads_per_grid]]);
+
)"
+
+
+
+
+ + + + diff --git a/docs/build/html/backend_2metal_2jit_2fft_8h_source.html b/docs/build/html/backend_2metal_2jit_2fft_8h_source.html new file mode 100644 index 000000000..385202590 --- /dev/null +++ b/docs/build/html/backend_2metal_2jit_2fft_8h_source.html @@ -0,0 +1,149 @@ + + + + + + + +MLX: mlx/backend/metal/jit/fft.h Source File + + + + + + + + + + + +
+
+ + + + + + +
+
MLX +
+
+
+ + + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
fft.h
+
+
+Go to the documentation of this file.
1// Copyright © 2024 Apple Inc.
+
2
+
3constexpr std::string_view fft_kernel = R"(
+
4template [[host_name("{name}")]] [[kernel]] void
+
5fft<{tg_mem_size}, {in_T}, {out_T}>(
+
6 const device {in_T}* in [[buffer(0)]],
+
7 device {out_T}* out [[buffer(1)]],
+
8 constant const int& n,
+
9 constant const int& batch_size,
+
10 uint3 elem [[thread_position_in_grid]],
+
11 uint3 grid [[threads_per_grid]]);
+
12)";
+
13
+
14constexpr std::string_view rader_fft_kernel = R"(
+
15template [[host_name("{name}")]] [[kernel]] void
+
16rader_fft<{tg_mem_size}, {in_T}, {out_T}>(
+
17 const device {in_T}* in [[buffer(0)]],
+
18 device {out_T}* out [[buffer(1)]],
+
19 const device float2* raders_b_q [[buffer(2)]],
+
20 const device short* raders_g_q [[buffer(3)]],
+
21 const device short* raders_g_minus_q [[buffer(4)]],
+
22 constant const int& n,
+
23 constant const int& batch_size,
+
24 constant const int& rader_n,
+
25 uint3 elem [[thread_position_in_grid]],
+
26 uint3 grid [[threads_per_grid]]);
+
27)";
+
28
+
29constexpr std::string_view bluestein_fft_kernel = R"(
+
30template [[host_name("{name}")]] [[kernel]] void
+
31bluestein_fft<{tg_mem_size}, {in_T}, {out_T}>(
+
32 const device {in_T}* in [[buffer(0)]],
+
33 device {out_T}* out [[buffer(1)]],
+
34 const device float2* w_q [[buffer(2)]],
+
35 const device float2* w_k [[buffer(3)]],
+
36 constant const int& length,
+
37 constant const int& n,
+
38 constant const int& batch_size,
+
39 uint3 elem [[thread_position_in_grid]],
+
40 uint3 grid [[threads_per_grid]]);
+
41)";
+
42
+
43constexpr std::string_view four_step_fft_kernel = R"(
+
44template [[host_name("{name}")]] [[kernel]] void
+
45four_step_fft<{tg_mem_size}, {in_T}, {out_T}, {step}, {real}>(
+
46 const device {in_T}* in [[buffer(0)]],
+
47 device {out_T}* out [[buffer(1)]],
+
48 constant const int& n1,
+
49 constant const int& n2,
+
50 constant const int& batch_size,
+
51 uint3 elem [[thread_position_in_grid]],
+
52 uint3 grid [[threads_per_grid]]);
+
53)";
+
constexpr std::string_view fft_kernel
Definition fft.h:3
+
constexpr std::string_view bluestein_fft_kernel
Definition fft.h:29
+
constexpr std::string_view rader_fft_kernel
Definition fft.h:14
+
constexpr std::string_view four_step_fft_kernel
Definition fft.h:43
+
+ + + + diff --git a/docs/build/html/backend_2metal_2kernels_2bf16_8h.html b/docs/build/html/backend_2metal_2kernels_2bf16_8h.html new file mode 100644 index 000000000..ccea11b13 --- /dev/null +++ b/docs/build/html/backend_2metal_2kernels_2bf16_8h.html @@ -0,0 +1,10952 @@ + + + + + + + +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 new file mode 100644 index 000000000..a266656b8 --- /dev/null +++ b/docs/build/html/backend_2metal_2kernels_2bf16_8h_source.html @@ -0,0 +1,489 @@ + + + + + + + +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 defined METAL_3_1 || (__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 new file mode 100644 index 000000000..f45ed8b0a --- /dev/null +++ b/docs/build/html/backend_2metal_2kernels_2complex_8h.html @@ -0,0 +1,504 @@ + + + + + + + +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 new file mode 100644 index 000000000..c47bbd109 --- /dev/null +++ b/docs/build/html/backend_2metal_2kernels_2complex_8h_source.html @@ -0,0 +1,276 @@ + + + + + + + +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
+
27 // Conversions to complex64_t
+
28 template <
+
29 typename T,
+
30 typename = typename enable_if<can_convert_to_complex64<T>>::type>
+
31 constexpr complex64_t(T x) thread : real(x), imag(0) {}
+
32
+
33 template <
+
34 typename T,
+
35 typename = typename enable_if<can_convert_to_complex64<T>>::type>
+
36 constexpr complex64_t(T x) threadgroup : real(x), imag(0) {}
+
37
+
38 template <
+
39 typename T,
+
40 typename = typename enable_if<can_convert_to_complex64<T>>::type>
+
41 constexpr complex64_t(T x) device : real(x), imag(0) {}
+
42
+
43 template <
+
44 typename T,
+
45 typename = typename enable_if<can_convert_to_complex64<T>>::type>
+
46 constexpr complex64_t(T x) constant : real(x), imag(0) {}
+
47
+
48 // Conversions from complex64_t
+
49 template <
+
50 typename T,
+
51 typename = typename enable_if<can_convert_from_complex64<T>>::type>
+
+
52 constexpr operator T() const thread {
+
53 return static_cast<T>(real);
+
54 }
+
+
55
+
56 template <
+
57 typename T,
+
58 typename = typename enable_if<can_convert_from_complex64<T>>::type>
+
+
59 constexpr operator T() const threadgroup {
+
60 return static_cast<T>(real);
+
61 }
+
+
62
+
63 template <
+
64 typename T,
+
65 typename = typename enable_if<can_convert_from_complex64<T>>::type>
+
+
66 constexpr operator T() const device {
+
67 return static_cast<T>(real);
+
68 }
+
+
69
+
70 template <
+
71 typename T,
+
72 typename = typename enable_if<can_convert_from_complex64<T>>::type>
+
+
73 constexpr operator T() const constant {
+
74 return static_cast<T>(real);
+
75 }
+
+
76};
+
+
77
+
+ +
79 return {-x.real, -x.imag};
+
80}
+
+
81
+
+
82constexpr bool operator>=(complex64_t a, complex64_t b) {
+
83 return (a.real > b.real) || (a.real == b.real && a.imag >= b.imag);
+
84}
+
+
85
+
+
86constexpr bool operator>(complex64_t a, complex64_t b) {
+
87 return (a.real > b.real) || (a.real == b.real && a.imag > b.imag);
+
88}
+
+
89
+
+
90constexpr bool operator<=(complex64_t a, complex64_t b) {
+
91 return operator>=(b, a);
+
92}
+
+
93
+
+
94constexpr bool operator<(complex64_t a, complex64_t b) {
+
95 return operator>(b, a);
+
96}
+
+
97
+
+
98constexpr bool operator==(complex64_t a, complex64_t b) {
+
99 return a.real == b.real && a.imag == b.imag;
+
100}
+
+
101
+
+ +
103 return {a.real + b.real, a.imag + b.imag};
+
104}
+
+
105
+
+ +
107 return {a.real - b.real, a.imag - b.imag};
+
108}
+
+
109
+
+ +
111 return {a.real * b.real - a.imag * b.imag, a.real * b.imag + a.imag * b.real};
+
112}
+
+
113
+
+ +
115 auto denom = b.real * b.real + b.imag * b.imag;
+
116 auto x = a.real * b.real + a.imag * b.imag;
+
117 auto y = a.imag * b.real - a.real * b.imag;
+
118 return {x / denom, y / denom};
+
119}
+
+
120
+
+ +
122 auto real = a.real - (b.real * static_cast<int64_t>(a.real / b.real));
+
123 auto imag = a.imag - (b.imag * static_cast<int64_t>(a.imag / b.imag));
+
124 if (real != 0 && (real < 0 != b.real < 0)) {
+
125 real += b.real;
+
126 }
+
127 if (imag != 0 && (imag < 0 != b.imag < 0)) {
+
128 imag += b.imag;
+
129 }
+
130 return {real, imag};
+
131}
+
+
constexpr bool operator>(complex64_t a, complex64_t b)
Definition complex.h:86
+
constexpr complex64_t operator-(complex64_t x)
Definition complex.h:78
+
static constexpr constant bool can_convert_to_complex64
Definition complex.h:12
+
constexpr bool operator<(complex64_t a, complex64_t b)
Definition complex.h:94
+
constexpr complex64_t operator*(complex64_t a, complex64_t b)
Definition complex.h:110
+
constexpr complex64_t operator%(complex64_t a, complex64_t b)
Definition complex.h:121
+
constexpr bool operator>=(complex64_t a, complex64_t b)
Definition complex.h:82
+
static constexpr constant bool can_convert_from_complex64
Definition complex.h:16
+
constexpr bool operator==(complex64_t a, complex64_t b)
Definition complex.h:98
+
constexpr complex64_t operator+(complex64_t a, complex64_t b)
Definition complex.h:102
+
constexpr complex64_t operator/(complex64_t a, complex64_t b)
Definition complex.h:114
+
constexpr bool operator<=(complex64_t a, complex64_t b)
Definition complex.h:90
+
Definition bf16.h:265
+
Definition complex.h:20
+
constexpr complex64_t(T x) const ant
Definition complex.h:46
+
constexpr complex64_t(T x) thread
Definition complex.h:31
+
constexpr complex64_t(T x) threadgroup
Definition complex.h:36
+
float imag
Definition complex.h:22
+
float real
Definition complex.h:21
+
constexpr complex64_t(T x) device
Definition complex.h:41
+
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 new file mode 100644 index 000000000..2fcacaa75 --- /dev/null +++ b/docs/build/html/backend_2metal_2kernels_2fft_8h.html @@ -0,0 +1,913 @@ + + + + + + + +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 new file mode 100644 index 000000000..64e7712b6 --- /dev/null +++ b/docs/build/html/backend_2metal_2kernels_2fft_8h_source.html @@ -0,0 +1,647 @@ + + + + + + + +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
+
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 new file mode 100644 index 000000000..e384dd259 --- /dev/null +++ b/docs/build/html/backend_2metal_2kernels_2reduction_2ops_8h.html @@ -0,0 +1,142 @@ + + + + + + + +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 >
 
+ + + +

+Variables

static constant constexpr const uint8_t simd_size = 32
 
+

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 new file mode 100644 index 000000000..0601c60f6 --- /dev/null +++ b/docs/build/html/backend_2metal_2kernels_2reduction_2ops_8h_source.html @@ -0,0 +1,379 @@ + + + + + + + +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
+
8static constant constexpr const uint8_t simd_size = 32;
+
9
+
+ +
11 bool4 b;
+
12 unsigned int i;
+
13};
+
+
14
+
+
15struct None {
+
16 template <typename T>
+
+
17 void atomic_update(device mlx_atomic<T>* out, T val, uint offset = 0) {
+
18 mlx_atomic_store_explicit(out, val, offset);
+
19 }
+
+
20};
+
+
21
+
22template <typename U = bool>
+
+
23struct And {
+
+
24 bool simd_reduce(bool val) {
+
25 return simd_all(val);
+
26 };
+
+
27
+
28 static constexpr constant bool init = true;
+
29
+
+ +
31 device mlx_atomic<unsigned int>* out,
+
32 bool val,
+
33 int elem_idx,
+
34 int offset = 0) {
+
35 if (!val) {
+ +
37 update.b = {true, true, true, true};
+
38 update.b[elem_idx] = false;
+ +
40 }
+
41 }
+
+
42
+
+
43 void atomic_update(device mlx_atomic<bool>* out, bool val, uint offset = 0) {
+
44 if (!val) {
+
45 mlx_atomic_store_explicit(out, val, offset);
+
46 }
+
47 }
+
+
48
+
49 // Non atomic update
+
+
50 void update(device bool* out, bool val) {
+
51 *out &= val;
+
52 }
+
+
53
+
54 // Operator
+
+
55 bool operator()(bool a, bool b) {
+
56 return a && b;
+
57 }
+
+
58};
+
+
59
+
60template <typename U = bool>
+
+
61struct Or {
+
+
62 bool simd_reduce(bool val) {
+
63 return simd_any(val);
+
64 };
+
+
65
+
66 static constexpr constant bool init = false;
+
67
+
+ +
69 device mlx_atomic<unsigned int>* out,
+
70 bool val,
+
71 uint elem_idx,
+
72 uint offset = 0) {
+
73 if (val) {
+ +
75 update.b = {false, false, false, false};
+
76 update.b[elem_idx] = true;
+ +
78 }
+
79 }
+
+
80
+
+
81 void atomic_update(device mlx_atomic<bool>* out, bool val, uint offset = 0) {
+
82 if (val) {
+
83 mlx_atomic_store_explicit(out, val, offset);
+
84 }
+
85 }
+
+
86
+
87 // Non atomic update
+
+
88 void update(device bool* out, bool val) {
+
89 *out |= val;
+
90 }
+
+
91
+
92 // Operator
+
+
93 bool operator()(bool a, bool b) {
+
94 return a || b;
+
95 }
+
+
96};
+
+
97
+
98template <typename U>
+
+
99struct Sum {
+
100 template <typename T>
+
+
101 T simd_reduce(T val) {
+
102 return simd_sum(val);
+
103 };
+
+
104
+
105 static constexpr constant U init = U(0);
+
106
+
107 template <typename T>
+
+
108 void atomic_update(device mlx_atomic<T>* out, T val, uint offset = 0) {
+
109 mlx_atomic_fetch_add_explicit(out, val, offset);
+
110 }
+
+
111
+
112 // Operator
+
+
113 U operator()(U a, U b) {
+
114 return a + b;
+
115 }
+
+
116};
+
+
117
+
118template <typename U>
+
+
119struct Prod {
+
120 template <typename T>
+
+
121 T simd_reduce(T val) {
+
122 return simd_product(val);
+
123 };
+
+
124
+
125 static constexpr constant U init = U(1);
+
126
+
127 template <typename T>
+
+
128 void atomic_update(device mlx_atomic<T>* out, T val, uint offset = 0) {
+
129 mlx_atomic_fetch_mul_explicit(out, val, offset);
+
130 }
+
+
131
+
132 // Operator
+
+
133 U operator()(U a, U b) {
+
134 return a * b;
+
135 }
+
+
136};
+
+
137
+
138template <typename U>
+
+
139struct Min {
+
140 template <typename T>
+
+
141 T simd_reduce(T val) {
+
142 return simd_min(val);
+
143 };
+
+
144
+
145 static constexpr constant U init = Limits<U>::max;
+
146
+
147 template <typename T>
+
+
148 void atomic_update(device mlx_atomic<T>* out, T val, uint offset = 0) {
+
149 mlx_atomic_fetch_min_explicit(out, val, offset);
+
150 }
+
+
151
+
152 // Operator
+
+
153 U operator()(U a, U b) {
+
154 return a < b ? a : b;
+
155 }
+
+
156};
+
+
157
+
158template <typename U>
+
+
159struct Max {
+
160 template <typename T>
+
+
161 T simd_reduce(T val) {
+
162 return simd_max(val);
+
163 };
+
+
164
+
165 static constexpr constant U init = Limits<U>::min;
+
166
+
167 template <typename T>
+
+
168 void atomic_update(device mlx_atomic<T>* out, T val, uint offset = 0) {
+
169 mlx_atomic_fetch_max_explicit(out, val, offset);
+
170 }
+
+
171
+
172 // Operator
+
+
173 U operator()(U a, U b) {
+
174 return a > b ? a : b;
+
175 }
+
+
176};
+
+
METAL_FUNC void mlx_atomic_fetch_add_explicit(device mlx_atomic< T > *object, T val, uint offset)
Definition atomic.h:81
+
METAL_FUNC void mlx_atomic_fetch_and_explicit(device mlx_atomic< T > *object, T val, uint offset)
Definition atomic.h:51
+
METAL_FUNC void mlx_atomic_store_explicit(device mlx_atomic< T > *object, T val, uint offset)
Definition atomic.h:46
+
METAL_FUNC void mlx_atomic_fetch_or_explicit(device mlx_atomic< T > *object, T val, uint offset)
Definition atomic.h:60
+
METAL_FUNC void mlx_atomic_fetch_max_explicit(device mlx_atomic< T > *object, T val, uint offset)
Definition atomic.h:73
+
METAL_FUNC void mlx_atomic_fetch_min_explicit(device mlx_atomic< T > *object, T val, uint offset)
Definition atomic.h:65
+
METAL_FUNC void mlx_atomic_fetch_mul_explicit(device mlx_atomic< T > *object, T val, uint offset)
Definition atomic.h:89
+
static constant constexpr const uint8_t simd_size
Definition ops.h:8
+
Definition ops.h:23
+
void update(device bool *out, bool val)
Definition ops.h:50
+
bool operator()(bool a, bool b)
Definition ops.h:55
+
void atomic_update(device mlx_atomic< unsigned int > *out, bool val, int elem_idx, int offset=0)
Definition ops.h:30
+
bool simd_reduce(bool val)
Definition ops.h:24
+
static constexpr constant bool init
Definition ops.h:28
+
void atomic_update(device mlx_atomic< bool > *out, bool val, uint offset=0)
Definition ops.h:43
+
Definition utils.h:17
+
Definition ops.h:159
+
T simd_reduce(T val)
Definition ops.h:161
+
U operator()(U a, U b)
Definition ops.h:173
+
static constexpr constant U init
Definition ops.h:165
+
void atomic_update(device mlx_atomic< T > *out, T val, uint offset=0)
Definition ops.h:168
+
Definition ops.h:139
+
void atomic_update(device mlx_atomic< T > *out, T val, uint offset=0)
Definition ops.h:148
+
U operator()(U a, U b)
Definition ops.h:153
+
static constexpr constant U init
Definition ops.h:145
+
T simd_reduce(T val)
Definition ops.h:141
+
Definition ops.h:15
+
void atomic_update(device mlx_atomic< T > *out, T val, uint offset=0)
Definition ops.h:17
+
Definition ops.h:61
+
bool operator()(bool a, bool b)
Definition ops.h:93
+
void atomic_update(device mlx_atomic< unsigned int > *out, bool val, uint elem_idx, uint offset=0)
Definition ops.h:68
+
static constexpr constant bool init
Definition ops.h:66
+
void update(device bool *out, bool val)
Definition ops.h:88
+
void atomic_update(device mlx_atomic< bool > *out, bool val, uint offset=0)
Definition ops.h:81
+
bool simd_reduce(bool val)
Definition ops.h:62
+
Definition ops.h:119
+
U operator()(U a, U b)
Definition ops.h:133
+
void atomic_update(device mlx_atomic< T > *out, T val, uint offset=0)
Definition ops.h:128
+
T simd_reduce(T val)
Definition ops.h:121
+
static constexpr constant U init
Definition ops.h:125
+
Definition ops.h:99
+
void atomic_update(device mlx_atomic< T > *out, T val, uint offset=0)
Definition ops.h:108
+
static constexpr constant U init
Definition ops.h:105
+
T simd_reduce(T val)
Definition ops.h:101
+
U operator()(U a, U b)
Definition ops.h:113
+
Definition atomic.h:25
+
Definition ops.h:10
+
bool4 b
Definition ops.h:11
+
unsigned int i
Definition ops.h:12
+
+ + + + 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 new file mode 100644 index 000000000..2f5a4eaa4 --- /dev/null +++ b/docs/build/html/backend_2metal_2kernels_2steel_2gemm_2transforms_8h.html @@ -0,0 +1,114 @@ + + + + + + + +MLX: mlx/backend/metal/kernels/steel/gemm/transforms.h File Reference + + + + + + + + + + + +
+
+ + + + + + +
+
MLX +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+ +
transforms.h File Reference
+
+ + + + + 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 new file mode 100644 index 000000000..13d88e7f2 --- /dev/null +++ b/docs/build/html/backend_2metal_2kernels_2steel_2gemm_2transforms_8h_source.html @@ -0,0 +1,206 @@ + + + + + + + +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 new file mode 100644 index 000000000..2c9b6e7a4 --- /dev/null +++ b/docs/build/html/backend_2metal_2kernels_2steel_2utils_8h.html @@ -0,0 +1,178 @@ + + + + + + + +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 new file mode 100644 index 000000000..c03062f76 --- /dev/null +++ b/docs/build/html/backend_2metal_2kernels_2steel_2utils_8h_source.html @@ -0,0 +1,139 @@ + + + + + + + +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 new file mode 100644 index 000000000..3e99896ee --- /dev/null +++ b/docs/build/html/backend_2metal_2kernels_2utils_8h.html @@ -0,0 +1,884 @@ + + + + + + + +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 >
 
+ + + + + + + +

+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 (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])
 
size_t ceildiv (size_t N, size_t 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)
 
+

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()

+ +
+
+ + + + + +
+ + + + + + + + + + + +
size_t ceildiv (size_t N,
size_t M )
+
+inline
+
+ +

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

+ +
+
+ +

◆ elem_to_loc() [1/3]

+ +
+
+
+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() [2/3]

+ +
+
+
+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() [3/3]

+ +
+
+
+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/3]

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

◆ simd_shuffle_down() [2/3]

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

◆ simd_shuffle_down() [3/3]

+ +
+
+ + + + + +
+ + + + + + + + + + + +
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 new file mode 100644 index 000000000..e73092c73 --- /dev/null +++ b/docs/build/html/backend_2metal_2kernels_2utils_8h_source.html @@ -0,0 +1,493 @@ + + + + + + + +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
+
68// Indexing utils
+
70
+
71#define MLX_MTL_PRAGMA_UNROLL _Pragma("clang loop unroll(full)")
+
72
+
74// Single Array with generic dims
+
75
+
76template <typename stride_t>
+
+
77METAL_FUNC stride_t elem_to_loc(
+
78 uint elem,
+
79 device const int* shape,
+
80 device const stride_t* strides,
+
81 int ndim) {
+
82 stride_t loc = 0;
+
83 for (int i = ndim - 1; i >= 0 && elem > 0; --i) {
+
84 loc += (elem % shape[i]) * strides[i];
+
85 elem /= shape[i];
+
86 }
+
87 return loc;
+
88}
+
+
89
+
90template <typename stride_t>
+
+
91METAL_FUNC stride_t elem_to_loc(
+
92 uint elem,
+
93 constant const int* shape,
+
94 constant const stride_t* strides,
+
95 int ndim) {
+
96 stride_t loc = 0;
+
97 for (int i = ndim - 1; i >= 0 && elem > 0; --i) {
+
98 loc += (elem % shape[i]) * strides[i];
+
99 elem /= shape[i];
+
100 }
+
101 return loc;
+
102}
+
+
103
+
104// Non templated version to handle arbitrary dims
+
105template <typename stride_t>
+
+
106METAL_FUNC stride_t elem_to_loc(
+
107 uint3 elem,
+
108 constant const int* shape,
+
109 constant const stride_t* strides,
+
110 int ndim) {
+
111 stride_t loc = elem.x * strides[ndim - 1] + elem.y * strides[ndim - 2];
+
112 for (int d = ndim - 3; d >= 0; --d) {
+
113 loc += (elem.z % shape[d]) * strides[d];
+
114 elem.z /= shape[d];
+
115 }
+
116 return loc;
+
117}
+
+
118
+
120// Single Array with fixed N dims
+
121
+
122template <typename stride_t>
+
+
123METAL_FUNC stride_t elem_to_loc_1(uint elem, constant const stride_t& stride) {
+
124 return elem * stride;
+
125}
+
+
126
+
127template <typename stride_t>
+
128METAL_FUNC stride_t
+
+
129elem_to_loc_2(uint2 elem, constant const stride_t strides[2]) {
+
130 return elem.x * strides[1] + elem.y * strides[0];
+
131}
+
+
132
+
133template <typename stride_t>
+
134METAL_FUNC stride_t
+
+
135elem_to_loc_3(uint3 elem, constant const stride_t strides[3]) {
+
136 return elem.x * strides[2] + elem.y * strides[1] + elem.z * strides[0];
+
137}
+
+
138
+
139template <int NDIM>
+
+
140METAL_FUNC size_t elem_to_loc_nd(
+
141 uint elem,
+
142 device const int* shape,
+
143 device const size_t* strides) {
+
144 size_t loc = (elem % shape[NDIM - 1]) * strides[NDIM - 1];
+
145
+ +
147 for (int d = NDIM - 2; d >= 0; --d) {
+
148 elem /= shape[d + 1];
+
149 loc += (elem % shape[d]) * strides[d];
+
150 }
+
151
+
152 return loc;
+
153}
+
+
154
+
155template <int NDIM>
+
+
156METAL_FUNC size_t elem_to_loc_nd(
+
157 uint3 elem,
+
158 constant const int shape[NDIM],
+
159 constant const size_t strides[NDIM]) {
+
160 size_t loc = elem.x * strides[NDIM - 1] + elem.y * strides[NDIM - 2];
+
161 for (int d = NDIM - 3; d >= 0; --d) {
+
162 loc += (elem.z % shape[d]) * strides[d];
+
163 elem.z /= shape[d];
+
164 }
+
165 return loc;
+
166}
+
+
167
+
168template <int NDIM>
+
+
169METAL_FUNC int64_t elem_to_loc_nd(
+
170 uint elem,
+
171 constant const int shape[NDIM],
+
172 constant const int64_t strides[NDIM]) {
+
173 int64_t loc = (elem % shape[NDIM - 1]) * strides[NDIM - 1];
+
174
+ +
176 for (int d = NDIM - 2; d >= 0; --d) {
+
177 elem /= shape[d + 1];
+
178 loc += (elem % shape[d]) * strides[d];
+
179 }
+
180
+
181 return loc;
+
182}
+
+
183
+
184template <int NDIM>
+
+
185METAL_FUNC int64_t elem_to_loc_nd(
+
186 uint3 elem,
+
187 constant const int shape[NDIM],
+
188 constant const int64_t strides[NDIM]) {
+
189 int64_t loc = elem.x * strides[NDIM - 1] + elem.y * strides[NDIM - 2];
+
190 for (int d = NDIM - 3; d >= 0; --d) {
+
191 loc += (elem.z % shape[d]) * strides[d];
+
192 elem.z /= shape[d];
+
193 }
+
194 return loc;
+
195}
+
+
196
+
198// Multiple Arrays with generic dims
+
199
+
+
200METAL_FUNC uint2 elem_to_loc_2_nd(
+
201 uint3 elem,
+
202 constant const int* shape,
+
203 constant const size_t* a_strides,
+
204 constant const size_t* b_strides,
+
205 int ndim) {
+
206 uint2 loc = {
+
207 static_cast<uint>(
+
208 elem.x * a_strides[ndim - 1] + elem.y * a_strides[ndim - 2]),
+
209 static_cast<uint>(
+
210 elem.x * b_strides[ndim - 1] + elem.y * b_strides[ndim - 2])};
+
211 for (int d = ndim - 3; d >= 0; --d) {
+
212 uint l = elem.z % shape[d];
+
213 loc.x += l * a_strides[d];
+
214 loc.y += l * b_strides[d];
+
215 elem.z /= shape[d];
+
216 }
+
217 return loc;
+
218}
+
+
219
+
+
220METAL_FUNC uint3 elem_to_loc_3_nd(
+
221 uint3 elem,
+
222 constant const int* shape,
+
223 constant const size_t* a_strides,
+
224 constant const size_t* b_strides,
+
225 constant const size_t* c_strides,
+
226 int ndim) {
+
227 uint3 loc = {
+
228 static_cast<uint>(
+
229 elem.x * a_strides[ndim - 1] + elem.y * a_strides[ndim - 2]),
+
230 static_cast<uint>(
+
231 elem.x * b_strides[ndim - 1] + elem.y * b_strides[ndim - 2]),
+
232 static_cast<uint>(
+
233 elem.x * c_strides[ndim - 1] + elem.y * c_strides[ndim - 2])};
+
234 for (int d = ndim - 3; d >= 0; --d) {
+
235 uint l = elem.z % shape[d];
+
236 loc.x += l * a_strides[d];
+
237 loc.y += l * b_strides[d];
+
238 loc.z += l * c_strides[d];
+
239 elem.z /= shape[d];
+
240 }
+
241 return loc;
+
242}
+
+
243
+
245// Multiple Arrays with fixed N dims
+
246
+
247template <int NDIM>
+
+
248METAL_FUNC uint2 elem_to_loc_2_nd(
+
249 uint3 elem,
+
250 constant const int shape[NDIM],
+
251 constant const size_t a_strides[NDIM],
+
252 constant const size_t b_strides[NDIM]) {
+
253 uint2 loc = {
+
254 static_cast<uint>(
+
255 elem.x * a_strides[NDIM - 1] + elem.y * a_strides[NDIM - 2]),
+
256 static_cast<uint>(
+
257 elem.x * b_strides[NDIM - 1] + elem.y * b_strides[NDIM - 2])};
+
258 for (int d = NDIM - 3; d >= 0; --d) {
+
259 uint l = elem.z % shape[d];
+
260 loc.x += l * a_strides[d];
+
261 loc.y += l * b_strides[d];
+
262 elem.z /= shape[d];
+
263 }
+
264 return loc;
+
265}
+
+
266
+
267template <int NDIM>
+
+
268METAL_FUNC uint3 elem_to_loc_3_nd(
+
269 uint3 elem,
+
270 constant const int shape[NDIM],
+
271 constant const size_t a_strides[NDIM],
+
272 constant const size_t b_strides[NDIM],
+
273 constant const size_t c_strides[NDIM]) {
+
274 uint3 loc = {
+
275 static_cast<uint>(
+
276 elem.x * a_strides[NDIM - 1] + elem.y * a_strides[NDIM - 2]),
+
277 static_cast<uint>(
+
278 elem.x * b_strides[NDIM - 1] + elem.y * b_strides[NDIM - 2]),
+
279 static_cast<uint>(
+
280 elem.x * c_strides[NDIM - 1] + elem.y * c_strides[NDIM - 2])};
+
281 for (int d = NDIM - 3; d >= 0; --d) {
+
282 uint l = elem.z % shape[d];
+
283 loc.x += l * a_strides[d];
+
284 loc.y += l * b_strides[d];
+
285 loc.z += l * c_strides[d];
+
286 elem.z /= shape[d];
+
287 }
+
288 return loc;
+
289}
+
+
290
+
292// Calculation utils
+
294
+
+
296inline size_t ceildiv(size_t N, size_t M) {
+
297 return (N + M - 1) / M;
+
298}
+
+
299
+
300// https://docs.oracle.com/cd/E19957-01/806-3568/ncg_goldberg.html#1202
+
+
301inline float log1p(float x) {
+
302 float xp1 = 1.0f + x;
+
303 if (xp1 == Limits<float>::max) {
+
304 return Limits<float>::max;
+
305 }
+
306 if (xp1 == 1.0f) {
+
307 return x;
+
308 }
+
309
+
310 return x * (metal::log(xp1) / (xp1 - 1.0f));
+
311}
+
+
312
+
+ +
314 float xp1 = 1.0f + static_cast<float>(x);
+
315 if (xp1 == Limits<float>::max) {
+ +
317 }
+
318 if (xp1 == 1.0f) {
+
319 return x;
+
320 }
+
321
+
322 return bfloat16_t(x * (metal::log(xp1) / (xp1 - 1.0f)));
+
323}
+
+
324
+
326// SIMD shuffle ops
+
328
+
+
329inline uint64_t simd_shuffle_down(uint64_t data, uint16_t delta) {
+
330 return as_type<uint64_t>(
+
331 metal::simd_shuffle_down(as_type<uint2>(data), delta));
+
332}
+
+
333
+
+
334inline int64_t simd_shuffle_down(int64_t data, uint16_t delta) {
+
335 return as_type<int64_t>(
+
336 metal::simd_shuffle_down(as_type<uint2>(data), delta));
+
337}
+
+
338
+
+
339inline bool simd_shuffle_down(bool data, uint16_t delta) {
+
340 return simd_shuffle_down(static_cast<uint32_t>(data), delta);
+
341}
+
+ +
struct _MLX_BFloat16 bfloat16_t
Definition bf16.h:257
+ +
#define MLX_MTL_PRAGMA_UNROLL
Definition utils.h:71
+
METAL_FUNC stride_t elem_to_loc_1(uint elem, constant const stride_t &stride)
Definition utils.h:123
+
#define instantiate_float_limit(type)
Definition utils.h:44
+
float log1p(float x)
Definition utils.h:301
+
METAL_FUNC stride_t elem_to_loc_3(uint3 elem, constant const stride_t strides[3])
Definition utils.h:135
+
METAL_FUNC stride_t elem_to_loc(uint elem, device const int *shape, device const stride_t *strides, int ndim)
Definition utils.h:77
+
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:200
+
size_t ceildiv(size_t N, size_t M)
Compute ceil((float)N/(float)M)
Definition utils.h:296
+
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:220
+
METAL_FUNC size_t elem_to_loc_nd(uint elem, device const int *shape, device const size_t *strides)
Definition utils.h:140
+
#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:129
+ +
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
+
+ + + + diff --git a/docs/build/html/backend_2metal_2utils_8h.html b/docs/build/html/backend_2metal_2utils_8h.html new file mode 100644 index 000000000..9a2da99d3 --- /dev/null +++ b/docs/build/html/backend_2metal_2utils_8h.html @@ -0,0 +1,102 @@ + + + + + + + +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
 
+
+ + + + diff --git a/docs/build/html/backend_2metal_2utils_8h_source.html b/docs/build/html/backend_2metal_2utils_8h_source.html new file mode 100644 index 000000000..d0861e8a9 --- /dev/null +++ b/docs/build/html/backend_2metal_2utils_8h_source.html @@ -0,0 +1,257 @@ + + + + + + + +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
+
11namespace {
+
12
+
13using metal::CommandEncoder;
+
14
+
15template <typename T>
+
16inline void set_vector_bytes(
+
17 CommandEncoder& enc,
+
18 const std::vector<T>& vec,
+
19 size_t nelems,
+
20 int idx) {
+
21 enc->setBytes(vec.data(), nelems * sizeof(T), idx);
+
22}
+
23
+
24template <typename T>
+
25inline void
+
26set_vector_bytes(CommandEncoder& enc, const std::vector<T>& vec, int idx) {
+
27 return set_vector_bytes(enc, vec, vec.size(), idx);
+
28}
+
29
+
30std::string type_to_name(const array& a) {
+
31 std::string tname;
+
32 switch (a.dtype()) {
+
33 case bool_:
+
34 tname = "bool_";
+
35 break;
+
36 case uint8:
+
37 tname = "uint8";
+
38 break;
+
39 case uint16:
+
40 tname = "uint16";
+
41 break;
+
42 case uint32:
+
43 tname = "uint32";
+
44 break;
+
45 case uint64:
+
46 tname = "uint64";
+
47 break;
+
48 case int8:
+
49 tname = "int8";
+
50 break;
+
51 case int16:
+
52 tname = "int16";
+
53 break;
+
54 case int32:
+
55 tname = "int32";
+
56 break;
+
57 case int64:
+
58 tname = "int64";
+
59 break;
+
60 case float16:
+
61 tname = "float16";
+
62 break;
+
63 case float32:
+
64 tname = "float32";
+
65 break;
+
66 case bfloat16:
+
67 tname = "bfloat16";
+
68 break;
+
69 case complex64:
+
70 tname = "complex64";
+
71 break;
+
72 }
+
73 return tname;
+
74}
+
75
+
76MTL::Size get_block_dims(int dim0, int dim1, int dim2) {
+
77 int pows[3] = {0, 0, 0};
+
78 int sum = 0;
+
79 while (true) {
+
80 int presum = sum;
+
81 // Check all the pows
+
82 if (dim0 >= (1 << (pows[0] + 1))) {
+
83 pows[0]++;
+
84 sum++;
+
85 }
+
86 if (sum == 10) {
+
87 break;
+
88 }
+
89 if (dim1 >= (1 << (pows[1] + 1))) {
+
90 pows[1]++;
+
91 sum++;
+
92 }
+
93 if (sum == 10) {
+
94 break;
+
95 }
+
96 if (dim2 >= (1 << (pows[2] + 1))) {
+
97 pows[2]++;
+
98 sum++;
+
99 }
+
100 if (sum == presum || sum == 10) {
+
101 break;
+
102 }
+
103 }
+
104 return MTL::Size{1ul << pows[0], 1ul << pows[1], 1ul << pows[2]};
+
105}
+
106
+
107inline NS::String* make_string(std::ostringstream& os) {
+
108 std::string string = os.str();
+
109 return NS::String::string(string.c_str(), NS::UTF8StringEncoding);
+
110}
+
111
+
112inline void debug_set_stream_queue_label(MTL::CommandQueue* queue, int index) {
+
113#ifdef MLX_METAL_DEBUG
+
114 std::ostringstream label;
+
115 label << "Stream " << index;
+
116 queue->setLabel(make_string(label));
+
117#endif
+
118}
+
119
+
120inline void debug_set_primitive_buffer_label(
+
121 MTL::CommandBuffer* command_buffer,
+
122 Primitive& primitive) {
+
123#ifdef MLX_METAL_DEBUG
+
124 std::ostringstream label;
+
125 if (auto cbuf_label = command_buffer->label(); cbuf_label) {
+
126 label << cbuf_label->utf8String();
+
127 }
+
128 primitive.print(label);
+
129 command_buffer->setLabel(make_string(label));
+
130#endif
+
131}
+
132
+
133bool is_power_of_2(int n) {
+
134 return ((n & (n - 1)) == 0) && n != 0;
+
135}
+
136
+
137int next_power_of_2(int n) {
+
138 if (is_power_of_2(n)) {
+
139 return n;
+
140 }
+
141 return pow(2, std::ceil(std::log2(n)));
+
142}
+
143
+
144} // namespace
+
145
+
146} // namespace mlx::core
+ + +
array sum(const array &a, bool keepdims, StreamOrDevice s={})
Sums the elements of an array.
+
METAL_FUNC bfloat16_t pow(bfloat16_t x, bfloat16_t y)
Definition bf16_math.h:234
+
Definition allocator.h:7
+
constexpr Dtype bool_
Definition dtype.h:60
+
constexpr Dtype uint64
Definition dtype.h:65
+
constexpr Dtype uint16
Definition dtype.h:63
+
constexpr Dtype bfloat16
Definition dtype.h:74
+
constexpr Dtype int32
Definition dtype.h:69
+
constexpr Dtype float32
Definition dtype.h:73
+
constexpr Dtype int16
Definition dtype.h:68
+
constexpr Dtype int8
Definition dtype.h:67
+
constexpr Dtype int64
Definition dtype.h:70
+
constexpr Dtype uint8
Definition dtype.h:62
+
constexpr Dtype float16
Definition dtype.h:72
+
constexpr Dtype uint32
Definition dtype.h:64
+
constexpr Dtype complex64
Definition dtype.h:75
+ +
+ + + + diff --git a/docs/build/html/bc_s.png b/docs/build/html/bc_s.png new file mode 100644 index 0000000000000000000000000000000000000000..224b29aa9847d5a4b3902efd602b7ddf7d33e6c2 GIT binary patch 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 literal 0 HcmV?d00001 diff --git a/docs/build/html/bc_sd.png b/docs/build/html/bc_sd.png new file mode 100644 index 0000000000000000000000000000000000000000..31ca888dc71049713b35c351933a8d0f36180bf1 GIT binary patch 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{ literal 0 HcmV?d00001 diff --git a/docs/build/html/bf16__math_8h.html b/docs/build/html/bf16__math_8h.html new file mode 100644 index 000000000..78e4d59e8 --- /dev/null +++ b/docs/build/html/bf16__math_8h.html @@ -0,0 +1,594 @@ + + + + + + + +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 new file mode 100644 index 000000000..f8c7bfe2d --- /dev/null +++ b/docs/build/html/bf16__math_8h_source.html @@ -0,0 +1,498 @@ + + + + + + + +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 defined METAL_3_1 || (__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 new file mode 100644 index 000000000..114d04051 --- /dev/null +++ b/docs/build/html/binary__ops_8h.html @@ -0,0 +1,149 @@ + + + + + + + +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 new file mode 100644 index 000000000..8ada206d4 --- /dev/null +++ b/docs/build/html/binary__ops_8h_source.html @@ -0,0 +1,601 @@ + + + + + + + +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:301
+
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_m_p_s_1_1_kernel-members.html b/docs/build/html/class_m_p_s_1_1_kernel-members.html new file mode 100644 index 000000000..f12b0a050 --- /dev/null +++ b/docs/build/html/class_m_p_s_1_1_kernel-members.html @@ -0,0 +1,92 @@ + + + + + + + +MLX: Member List + + + + + + + + + + + +
+
+ + + + + + +
+
MLX +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
MPS::Kernel Member List
+
+
+ +

This is the complete list of members for MPS::Kernel, including all inherited members.

+ + + +
device() constMPS::Kernel
label() constMPS::Kernel
+ + + + diff --git a/docs/build/html/class_m_p_s_1_1_kernel.html b/docs/build/html/class_m_p_s_1_1_kernel.html new file mode 100644 index 000000000..de2a0c584 --- /dev/null +++ b/docs/build/html/class_m_p_s_1_1_kernel.html @@ -0,0 +1,144 @@ + + + + + + + +MLX: MPS::Kernel Class Reference + + + + + + + + + + + +
+
+ + + + + + +
+
MLX +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+ +
MPS::Kernel Class Reference
+
+
+ +

#include <gemm.h>

+
+Inheritance diagram for MPS::Kernel:
+
+
+ +
+ + + + + + +

+Public Member Functions

NS::String * label () const
 
MTL::Device * device () const
 
+

Member Function Documentation

+ +

◆ device()

+ +
+
+ + + + + + + +
_MTL_INLINE MTL::Device * MPS::Kernel::device () const
+
+ +
+
+ +

◆ label()

+ +
+
+ + + + + + + +
_MTL_INLINE NS::String * MPS::Kernel::label () const
+
+ +
+
+
The documentation for this class was generated from the following file:
    +
  • mlx/backend/metal/mps/gemm.h
  • +
+
+ + + + diff --git a/docs/build/html/class_m_p_s_1_1_kernel.png b/docs/build/html/class_m_p_s_1_1_kernel.png new file mode 100644 index 0000000000000000000000000000000000000000..0ed62c014d946e0ba1bb07f7be8739e94bc15dbd GIT binary patch literal 656 zcmV;B0&o3^P)vTJr#LVva2S`&=-}Ys|Ns9r%~qrU000SeQchC<|NsC0|NsC0Hv*f~0006T zNkl3iy_{@y)J&m?)QLzDUCYYUR*>Xdc4ce8T(_rT9_Ajw@FQr7j}s8P-# zUE*4zJFh4+^^oPsOsqF;I~Xs+a+2;EDQi*}cQ(R(Xm)kF8<)E_QN7i@E4K5pUcN3a zTbJgTLtSoB4%5z+Gj|R><(?OJG}}ErJ+3ZmOI1e}+)VFM`u3~&@y9RKQ=P3iN6PK) zaaP0qJF(pH;`ca;Wh=F9${%HXt3rKU?t1!JUHack-#xbfT6el>XJmpn_IS(hP@gY* zoFqS@2>+j@eEkznlCSmQSo*(LlKhoEpK+4>tCEr=W0aI68KWnqh{)9i0Ks|yz~yxd z%E#jln75#OLf!!L9+cVR01&051b`SNB>==IDFGlxNeKWkN=g8TQBndxjFJ)nVw98s z5Tm37fEXnu0K_OM0U$>IFQtgcI_bIFWbDZ06zAs}pIQ05< zV17ZlESQGM{Si04qQGdEJ2^nNYl!)`sdy}?b7+fF*E$5mC&R#K{} q#waOORb!Nts;V)%4W)?4)%6eBqshFLMxG!50000 + + + + + + +MLX: Member List + + + + + + + + + + + +
+
+ + + + + + +
+
MLX +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
MPS::Matrix Member List
+
+
+ +

This is the complete list of members for MPS::Matrix, including all inherited members.

+ + + + +
alloc()MPS::Matrixstatic
init(MTL::Buffer *buffer, MatrixDescriptor *descriptor)MPS::Matrix
init(const MTL::Buffer *buffer, MatrixDescriptor *descriptor)MPS::Matrix
+ + + + diff --git a/docs/build/html/class_m_p_s_1_1_matrix.html b/docs/build/html/class_m_p_s_1_1_matrix.html new file mode 100644 index 000000000..8fc4607bd --- /dev/null +++ b/docs/build/html/class_m_p_s_1_1_matrix.html @@ -0,0 +1,183 @@ + + + + + + + +MLX: MPS::Matrix Class Reference + + + + + + + + + + + +
+
+ + + + + + +
+
MLX +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+ +
+ +

#include <gemm.h>

+
+Inheritance diagram for MPS::Matrix:
+
+
+ +
+ + + + + + +

+Public Member Functions

Matrixinit (MTL::Buffer *buffer, MatrixDescriptor *descriptor)
 
Matrixinit (const MTL::Buffer *buffer, MatrixDescriptor *descriptor)
 
+ + + +

+Static Public Member Functions

static class Matrixalloc ()
 
+

Member Function Documentation

+ +

◆ alloc()

+ +
+
+ + + + + +
+ + + + + + + +
_MTL_INLINE Matrix * MPS::Matrix::alloc ()
+
+static
+
+ +
+
+ +

◆ init() [1/2]

+ +
+
+ + + + + + + + + + + +
_MTL_INLINE Matrix * MPS::Matrix::init (const MTL::Buffer * buffer,
MatrixDescriptor * descriptor )
+
+ +
+
+ +

◆ init() [2/2]

+ +
+
+ + + + + + + + + + + +
_MTL_INLINE Matrix * MPS::Matrix::init (MTL::Buffer * buffer,
MatrixDescriptor * descriptor )
+
+ +
+
+
The documentation for this class was generated from the following file:
    +
  • mlx/backend/metal/mps/gemm.h
  • +
+
+ + + + diff --git a/docs/build/html/class_m_p_s_1_1_matrix.png b/docs/build/html/class_m_p_s_1_1_matrix.png new file mode 100644 index 0000000000000000000000000000000000000000..a14d0bf98ab9ec89bc7677aba5189d2cf8871b16 GIT binary patch literal 665 zcmeAS@N?(olHy`uVBq!ia0vp^i-9~~^1IA5 zhU?xxts81ouD^b!S0}pqk9E7%mFer hwYP+;%euAlbBm9?DLuGqJ1`M3c)I$ztaD0e0swvcJA42D literal 0 HcmV?d00001 diff --git a/docs/build/html/class_m_p_s_1_1_matrix_descriptor-members.html b/docs/build/html/class_m_p_s_1_1_matrix_descriptor-members.html new file mode 100644 index 000000000..dee3102ef --- /dev/null +++ b/docs/build/html/class_m_p_s_1_1_matrix_descriptor-members.html @@ -0,0 +1,93 @@ + + + + + + + +MLX: Member List + + + + + + + + + + + +
+
+ + + + + + +
+
MLX +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
MPS::MatrixDescriptor Member List
+
+
+ +

This is the complete list of members for MPS::MatrixDescriptor, including all inherited members.

+ + + + +
matrixDescriptor(NS::UInteger rows, NS::UInteger columns, NS::UInteger rowBytes, NS::UInteger dataType)MPS::MatrixDescriptorstatic
matrixDescriptor(NS::UInteger rows, NS::UInteger columns, NS::UInteger matrices, NS::UInteger rowBytes, NS::UInteger matrixBytes, NS::UInteger dataType)MPS::MatrixDescriptorstatic
rows() constMPS::MatrixDescriptor
+ + + + diff --git a/docs/build/html/class_m_p_s_1_1_matrix_descriptor.html b/docs/build/html/class_m_p_s_1_1_matrix_descriptor.html new file mode 100644 index 000000000..1b88da36a --- /dev/null +++ b/docs/build/html/class_m_p_s_1_1_matrix_descriptor.html @@ -0,0 +1,221 @@ + + + + + + + +MLX: MPS::MatrixDescriptor Class Reference + + + + + + + + + + + +
+
+ + + + + + +
+
MLX +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+ +
MPS::MatrixDescriptor Class Reference
+
+
+ +

#include <gemm.h>

+
+Inheritance diagram for MPS::MatrixDescriptor:
+
+
+ +
+ + + + +

+Public Member Functions

NS::UInteger rows () const
 
+ + + + + +

+Static Public Member Functions

static class MatrixDescriptormatrixDescriptor (NS::UInteger rows, NS::UInteger columns, NS::UInteger rowBytes, NS::UInteger dataType)
 
static class MatrixDescriptormatrixDescriptor (NS::UInteger rows, NS::UInteger columns, NS::UInteger matrices, NS::UInteger rowBytes, NS::UInteger matrixBytes, NS::UInteger dataType)
 
+

Member Function Documentation

+ +

◆ matrixDescriptor() [1/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
_MTL_INLINE MatrixDescriptor * MPS::MatrixDescriptor::matrixDescriptor (NS::UInteger rows,
NS::UInteger columns,
NS::UInteger matrices,
NS::UInteger rowBytes,
NS::UInteger matrixBytes,
NS::UInteger dataType )
+
+static
+
+ +
+
+ +

◆ matrixDescriptor() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + +
_MTL_INLINE MatrixDescriptor * MPS::MatrixDescriptor::matrixDescriptor (NS::UInteger rows,
NS::UInteger columns,
NS::UInteger rowBytes,
NS::UInteger dataType )
+
+static
+
+ +
+
+ +

◆ rows()

+ +
+
+ + + + + + + +
_MTL_INLINE NS::UInteger MPS::MatrixDescriptor::rows () const
+
+ +
+
+
The documentation for this class was generated from the following file:
    +
  • mlx/backend/metal/mps/gemm.h
  • +
+
+ + + + diff --git a/docs/build/html/class_m_p_s_1_1_matrix_descriptor.png b/docs/build/html/class_m_p_s_1_1_matrix_descriptor.png new file mode 100644 index 0000000000000000000000000000000000000000..661b7f470ecb13762aefc4337df516e94f33e8bc GIT binary patch literal 813 zcmeAS@N?(olHy`uVBq!ia0vp^CxAGBgBeI>Z$8xoq@)9ULR|m<{|{uoc=NTi|Il&^ z1I+@7>1SR%c<=xyZhAIs2~du+B*-tA0mugfbEer>7#Ns#c)B=-R4~4sdwbey1p$}t z=^=mri}wfW-EHW6Jo8Lq#F`~42idAGi^mH(aTs$ns{G$4#^Kqwgw<)1vSzc);m^Nv z7_S}ruNt{epI`B=j@#KY_wqbGg}hCg^kzlFo5y9Ii(~7xvo5+m&fI*q+-yHjk;~$^ zggrNGZ=G2byQNq7eD+rj?oIl3dLJjt&%AsBCzIL~p3;TYkSMb+v@$H>5*ZO8c?Mk^jwQbBF--#XO^9c3Yn|`xGL@oM_ zYRb9)(|7MWSk5WkHzRDh!p2u;-$$@A5!SRK#n zC8AF@RPnL9NJ=*w$NypSw7R~&`3uiH_xXAsH?QvyJE^eNv!1W}?IiK((v!ZpO%Kj4 zKj5nLQ*Qq`1zyKZ@x{l_MO}W!>shr}T0!+{tWqlT`@F(s%t2FwcxS45=9lcfaXHia zcaXA~jNw{8$47xPZvN*C65Vb7p|2$9H0!%^#~Qa1hp70RT~8mbaSPf~C#$m8-RfV? z=Z(KDCd9=2T{rd6EbskyCM+?RdV99+_H0%qPx%Wb3X@8_;r`mv*dlO< + + + + + + +MLX: Member List + + + + + + + + + + + +
+
+ + + + + + +
+
MLX +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
MPS::MatrixMultiplication Member List
+
+
+ +

This is the complete list of members for MPS::MatrixMultiplication, including all inherited members.

+ + + + + + + + + +
alloc()MPS::MatrixMultiplicationstatic
encodeToCommandBuffer(MTL::CommandBuffer *commandBuffer, Matrix *leftMatrix, Matrix *rightMatrix, Matrix *resultMatrix)MPS::MatrixMultiplication
init(MTL::Device *device, bool transposeLeft, bool transposeRight, NS::UInteger resultRows, NS::UInteger resultColumns, NS::UInteger interiorColumns, double alpha, double beta)MPS::MatrixMultiplication
setBatchSize(NS::UInteger batchSize)MPS::MatrixMultiplication
setBatchStart(NS::UInteger batchStart)MPS::MatrixMultiplication
setLeftMatrixOrigin(MTL::Origin origin)MPS::MatrixMultiplication
setResultMatrixOrigin(MTL::Origin origin)MPS::MatrixMultiplication
setRightMatrixOrigin(MTL::Origin origin)MPS::MatrixMultiplication
+ + + + diff --git a/docs/build/html/class_m_p_s_1_1_matrix_multiplication.html b/docs/build/html/class_m_p_s_1_1_matrix_multiplication.html new file mode 100644 index 000000000..f751a2bd4 --- /dev/null +++ b/docs/build/html/class_m_p_s_1_1_matrix_multiplication.html @@ -0,0 +1,318 @@ + + + + + + + +MLX: MPS::MatrixMultiplication Class Reference + + + + + + + + + + + +
+
+ + + + + + +
+
MLX +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+ +
MPS::MatrixMultiplication Class Reference
+
+
+ +

#include <gemm.h>

+
+Inheritance diagram for MPS::MatrixMultiplication:
+
+
+ +
+ + + + + + + + + + + + + + + + +

+Public Member Functions

MatrixMultiplicationinit (MTL::Device *device, bool transposeLeft, bool transposeRight, NS::UInteger resultRows, NS::UInteger resultColumns, NS::UInteger interiorColumns, double alpha, double beta)
 
void encodeToCommandBuffer (MTL::CommandBuffer *commandBuffer, Matrix *leftMatrix, Matrix *rightMatrix, Matrix *resultMatrix)
 
void setLeftMatrixOrigin (MTL::Origin origin)
 
void setRightMatrixOrigin (MTL::Origin origin)
 
void setResultMatrixOrigin (MTL::Origin origin)
 
void setBatchStart (NS::UInteger batchStart)
 
void setBatchSize (NS::UInteger batchSize)
 
+ + + +

+Static Public Member Functions

static class MatrixMultiplicationalloc ()
 
+

Member Function Documentation

+ +

◆ alloc()

+ +
+
+ + + + + +
+ + + + + + + +
_MTL_INLINE MatrixMultiplication * MPS::MatrixMultiplication::alloc ()
+
+static
+
+ +
+
+ +

◆ encodeToCommandBuffer()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + +
_MTL_INLINE void MPS::MatrixMultiplication::encodeToCommandBuffer (MTL::CommandBuffer * commandBuffer,
Matrix * leftMatrix,
Matrix * rightMatrix,
Matrix * resultMatrix )
+
+ +
+
+ +

◆ init()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
_MTL_INLINE MatrixMultiplication * MPS::MatrixMultiplication::init (MTL::Device * device,
bool transposeLeft,
bool transposeRight,
NS::UInteger resultRows,
NS::UInteger resultColumns,
NS::UInteger interiorColumns,
double alpha,
double beta )
+
+ +
+
+ +

◆ setBatchSize()

+ +
+
+ + + + + + + +
_MTL_INLINE void MPS::MatrixMultiplication::setBatchSize (NS::UInteger batchSize)
+
+ +
+
+ +

◆ setBatchStart()

+ +
+
+ + + + + + + +
_MTL_INLINE void MPS::MatrixMultiplication::setBatchStart (NS::UInteger batchStart)
+
+ +
+
+ +

◆ setLeftMatrixOrigin()

+ +
+
+ + + + + + + +
_MTL_INLINE void MPS::MatrixMultiplication::setLeftMatrixOrigin (MTL::Origin origin)
+
+ +
+
+ +

◆ setResultMatrixOrigin()

+ +
+
+ + + + + + + +
_MTL_INLINE void MPS::MatrixMultiplication::setResultMatrixOrigin (MTL::Origin origin)
+
+ +
+
+ +

◆ setRightMatrixOrigin()

+ +
+
+ + + + + + + +
_MTL_INLINE void MPS::MatrixMultiplication::setRightMatrixOrigin (MTL::Origin origin)
+
+ +
+
+
The documentation for this class was generated from the following file:
    +
  • mlx/backend/metal/mps/gemm.h
  • +
+
+ + + + diff --git a/docs/build/html/class_m_p_s_1_1_matrix_multiplication.png b/docs/build/html/class_m_p_s_1_1_matrix_multiplication.png new file mode 100644 index 0000000000000000000000000000000000000000..7da3f69a96ea78b09a467274e22e6f2ac0159a49 GIT binary patch literal 1041 zcmeAS@N?(olHy`uVBq!ia0y~yV3Y>312~w0q@1)O2au8u@CkAK|NlRb`Qpvj(*8rs zEetdZB&MHv@!-J&pt$MTuq8k_&XOR%U-KE zqV+HT{U2W=Y!G3_JNstKUgOYJA0?Xv582&#Bq}KA>T-mU#ZyehGBD5MQZN$UygQQr z{QvV@ch~c$pD&)Y=b2H;?iq51-)~IV%KKa;xVZMQah%lj(#?16md%{BZ~uu|ch<~* zav|r0z|*#m$7ja(|Gjj!?7zg8-I3GI?`pf{745=Ea1F5R(qH~aSZ>f?JjwmtW;Z1y?Z zBJ=57vefTo)A#IMl=!Ay=W~|tSGAM2SEQdmyI{LS>d@zJH`MKpeLJ9SzPWv;f-k?{ zWr@3UdTT3scZz-IHMlZ+t;6@JcS@JO3pP(SJiqyzdAfP^3GcjbCgOS9WDWMc3KQj9 zy{6M<$H%P|9aew-UE5_SY|a-~p8WmF#a`LpGoEJM{gRt?ch8pPF;695pFJ77QmkK? zZ_{>#V(Yc$$IhPo5x?3zbG}Sg;kswlYvp&fFW8ds?EMvyeR(^L&2^lQv>X&2%6>;k{Wu6D|L$nFs5Z!D5=fbn@}^ zyE5Fa_tJ0oeNt6ha>wuWS^dJx*Zx@i_&a-3UEsMpHu~?v*6j;E-TG(luf{x;mu~<1 z1E)!QewqTrf5glueOa$*KIsWEuG|3*pR|9>7oUfRF0!cC17= literal 0 HcmV?d00001 diff --git a/docs/build/html/class_m_p_s_1_1_matrix_vector_multiplication-members.html b/docs/build/html/class_m_p_s_1_1_matrix_vector_multiplication-members.html new file mode 100644 index 000000000..abb569f03 --- /dev/null +++ b/docs/build/html/class_m_p_s_1_1_matrix_vector_multiplication-members.html @@ -0,0 +1,93 @@ + + + + + + + +MLX: Member List + + + + + + + + + + + +
+
+ + + + + + +
+
MLX +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
MPS::MatrixVectorMultiplication Member List
+
+
+ +

This is the complete list of members for MPS::MatrixVectorMultiplication, including all inherited members.

+ + + + +
alloc()MPS::MatrixVectorMultiplicationstatic
encodeToCommandBuffer(MTL::CommandBuffer *commandBuffer, Matrix *inputMatrix, Vector *inputVector, Vector *resultVector)MPS::MatrixVectorMultiplication
init(MTL::Device *device, bool transpose, NS::UInteger rows, NS::UInteger columns, double alpha, double beta)MPS::MatrixVectorMultiplication
+ + + + diff --git a/docs/build/html/class_m_p_s_1_1_matrix_vector_multiplication.html b/docs/build/html/class_m_p_s_1_1_matrix_vector_multiplication.html new file mode 100644 index 000000000..074f379d7 --- /dev/null +++ b/docs/build/html/class_m_p_s_1_1_matrix_vector_multiplication.html @@ -0,0 +1,213 @@ + + + + + + + +MLX: MPS::MatrixVectorMultiplication Class Reference + + + + + + + + + + + +
+
+ + + + + + +
+
MLX +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+ +
MPS::MatrixVectorMultiplication Class Reference
+
+
+ +

#include <gemm.h>

+
+Inheritance diagram for MPS::MatrixVectorMultiplication:
+
+
+ +
+ + + + + + +

+Public Member Functions

MatrixVectorMultiplicationinit (MTL::Device *device, bool transpose, NS::UInteger rows, NS::UInteger columns, double alpha, double beta)
 
void encodeToCommandBuffer (MTL::CommandBuffer *commandBuffer, Matrix *inputMatrix, Vector *inputVector, Vector *resultVector)
 
+ + + +

+Static Public Member Functions

static class MatrixVectorMultiplicationalloc ()
 
+

Member Function Documentation

+ +

◆ alloc()

+ +
+
+ + + + + +
+ + + + + + + +
_MTL_INLINE MatrixVectorMultiplication * MPS::MatrixVectorMultiplication::alloc ()
+
+static
+
+ +
+
+ +

◆ encodeToCommandBuffer()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + +
_MTL_INLINE void MPS::MatrixVectorMultiplication::encodeToCommandBuffer (MTL::CommandBuffer * commandBuffer,
Matrix * inputMatrix,
Vector * inputVector,
Vector * resultVector )
+
+ +
+
+ +

◆ init()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
_MTL_INLINE MatrixVectorMultiplication * MPS::MatrixVectorMultiplication::init (MTL::Device * device,
bool transpose,
NS::UInteger rows,
NS::UInteger columns,
double alpha,
double beta )
+
+ +
+
+
The documentation for this class was generated from the following file:
    +
  • mlx/backend/metal/mps/gemm.h
  • +
+
+ + + + diff --git a/docs/build/html/class_m_p_s_1_1_matrix_vector_multiplication.png b/docs/build/html/class_m_p_s_1_1_matrix_vector_multiplication.png new file mode 100644 index 0000000000000000000000000000000000000000..10e54c8bd6ac07f8af73d45b3c9f0584059b3703 GIT binary patch literal 1145 zcmeAS@N?(olHy`uVBq!ia0y~yU~~ks12~w0#Rfbr z?&fnV|Eu3qkjV{JttOS37aa?B-}!(4xA*_rie2`TpKR6h{U(1`=(Ep#u9J4lIxk!_YfGP$=Tf}* z^zt%!p*!*NcYXXmGv2mq{O_UC{!!)NiHixsx!=~;tn;t%EU2$HvEs0ED(pTkHnrdU z)|r2dwqLi=EH zwzJDGS2O*s2q z^@vvqE(TVQISb}z9Y46d<8@o(_l%##O~z|?2Ke1BZkOepH@AR;^S)=*Dc;h8e0^JO zs}S>AuYw%ce^>rJHT?JeOkv`tx&wDF2D9+Ti?dXJ{E&Eg)m5R5x$C(P?wHIIcKYw~ zBm;{dQ&y}~>6^}S(4afK=^>}Pez@TcZfB1VD|Py`9!0SG-;>(FdsF1f!J`)=e)W8L zyoHaA<$qN7`d151pIJKjM_ftCs>CXTqJ!q&ADyi6{xsvk1-Izfey-H$wB+)u-SYN5 z%V#F%oxho}{`%e-D)$$a|5iWgIX~8D>(TE*Ha~Mze)`oGoxH<$U#3}C*5i}(*R|RE z?7KZb)rSeHob2gR@JtI~@ibbj?UFc>GEYsyQYvSW@?PDm_xucOekhx5 zuYbFK|3>%sg)jfl`nluMvnSuKwWvS`Q7m^Y{xZgh5TMk zPyTc!P+IM$;7to_Pp{XyEY*LdgWej7uV_&^>BWQKMY|?h#0jw+*7>)TW%-k6&UH&q zrf)O0U*Fulc;lCuPmX8G{&DBn_NP<9#wz*zlbOIoV7_}pz`c5_8?j#>9p~RC{@l!c#7$uXYTQ6XH62@)9zAV; R7Fb9yc)I$ztaD0e0swr#1StRj literal 0 HcmV?d00001 diff --git a/docs/build/html/class_m_p_s_1_1_vector-members.html b/docs/build/html/class_m_p_s_1_1_vector-members.html new file mode 100644 index 000000000..31e25f93d --- /dev/null +++ b/docs/build/html/class_m_p_s_1_1_vector-members.html @@ -0,0 +1,93 @@ + + + + + + + +MLX: Member List + + + + + + + + + + + +
+
+ + + + + + +
+
MLX +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
MPS::Vector Member List
+
+
+ +

This is the complete list of members for MPS::Vector, including all inherited members.

+ + + + +
alloc()MPS::Vectorstatic
init(MTL::Buffer *buffer, VectorDescriptor *descriptor)MPS::Vector
init(const MTL::Buffer *buffer, VectorDescriptor *descriptor)MPS::Vector
+ + + + diff --git a/docs/build/html/class_m_p_s_1_1_vector.html b/docs/build/html/class_m_p_s_1_1_vector.html new file mode 100644 index 000000000..9e1039ead --- /dev/null +++ b/docs/build/html/class_m_p_s_1_1_vector.html @@ -0,0 +1,183 @@ + + + + + + + +MLX: MPS::Vector Class Reference + + + + + + + + + + + +
+
+ + + + + + +
+
MLX +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+ +
+ +

#include <gemm.h>

+
+Inheritance diagram for MPS::Vector:
+
+
+ +
+ + + + + + +

+Public Member Functions

Vectorinit (MTL::Buffer *buffer, VectorDescriptor *descriptor)
 
Vectorinit (const MTL::Buffer *buffer, VectorDescriptor *descriptor)
 
+ + + +

+Static Public Member Functions

static class Vectoralloc ()
 
+

Member Function Documentation

+ +

◆ alloc()

+ +
+
+ + + + + +
+ + + + + + + +
_MTL_INLINE Vector * MPS::Vector::alloc ()
+
+static
+
+ +
+
+ +

◆ init() [1/2]

+ +
+
+ + + + + + + + + + + +
_MTL_INLINE Vector * MPS::Vector::init (const MTL::Buffer * buffer,
VectorDescriptor * descriptor )
+
+ +
+
+ +

◆ init() [2/2]

+ +
+
+ + + + + + + + + + + +
_MTL_INLINE Vector * MPS::Vector::init (MTL::Buffer * buffer,
VectorDescriptor * descriptor )
+
+ +
+
+
The documentation for this class was generated from the following file:
    +
  • mlx/backend/metal/mps/gemm.h
  • +
+
+ + + + diff --git a/docs/build/html/class_m_p_s_1_1_vector.png b/docs/build/html/class_m_p_s_1_1_vector.png new file mode 100644 index 0000000000000000000000000000000000000000..e7adea3626eca42f23064dae57f6cb4ab2cb040c GIT binary patch literal 658 zcmeAS@N?(olHy`uVBq!ia0vp^%YZn5gBeIJnfuQXNJ$6ygt-3y{~ySF@#br3|Doj; z2ATyD)6cwk@ZbSZ-1KbN5}+JsNswPK1CS2}=1jA%FfcI5db&7&J22n3nwf4dWEupw+8Nc>45vby~w`%)Bcv;dyWF6_t}3L6cP$ub36Rxo&;y z)w=iZu2oO^GgH2OORdMY^YPPiXPqzmskL_YyEUGlgu+d?d+hUDG3)$-yoq-o|DLn) z`;_H(-p3qQ*wCMG`bz8HT`GUmujoAACHY%o`?5amySX3gLak3_-Ti5CXHMOJy@NG* z*8=>CikDg5etkB0=MSG{ecAiF%2cl$vbFoY?6qF|yX~{|Q@6i=v~1tioOZ*EbKWbY zO=ILc)2_Z@DpHwcdiU9^{Z?Nhr}_2$U4CcIpPzgG-+$x1LUiNm6YF+MKRINfd3)Bk zJl6P^DmOp>+#Yb^*Ziw8T1_hFKRnF%mLE0A=J<2|xhndTXQ@cKW=%>F>0UPT=3B;w z3^|5^`hCuyKmOo4|NcUZ&i;d+y-hY>VpQn6!qT7-B+RhL!?bc3Xc^;B+76wJYbgD_8q&e!Ap-lGDZu-8p$xgiMxmkbV zvYS8uSD&5!SjHrF + + + + + + +MLX: Member List + + + + + + + + + + + +
+
+ + + + + + +
+
MLX +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
MPS::VectorDescriptor Member List
+
+
+ +

This is the complete list of members for MPS::VectorDescriptor, including all inherited members.

+ + + +
vectorDescriptor(NS::UInteger length, NS::UInteger dataType)MPS::VectorDescriptorstatic
vectorDescriptor(NS::UInteger length, NS::UInteger vectors, NS::UInteger vectorBytes, NS::UInteger dataType)MPS::VectorDescriptorstatic
+ + + + diff --git a/docs/build/html/class_m_p_s_1_1_vector_descriptor.html b/docs/build/html/class_m_p_s_1_1_vector_descriptor.html new file mode 100644 index 000000000..681f3428e --- /dev/null +++ b/docs/build/html/class_m_p_s_1_1_vector_descriptor.html @@ -0,0 +1,178 @@ + + + + + + + +MLX: MPS::VectorDescriptor Class Reference + + + + + + + + + + + +
+
+ + + + + + +
+
MLX +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+ +
MPS::VectorDescriptor Class Reference
+
+
+ +

#include <gemm.h>

+
+Inheritance diagram for MPS::VectorDescriptor:
+
+
+ +
+ + + + + + +

+Static Public Member Functions

static class VectorDescriptorvectorDescriptor (NS::UInteger length, NS::UInteger dataType)
 
static class VectorDescriptorvectorDescriptor (NS::UInteger length, NS::UInteger vectors, NS::UInteger vectorBytes, NS::UInteger dataType)
 
+

Member Function Documentation

+ +

◆ vectorDescriptor() [1/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + +
_MTL_INLINE VectorDescriptor * MPS::VectorDescriptor::vectorDescriptor (NS::UInteger length,
NS::UInteger dataType )
+
+static
+
+ +
+
+ +

◆ vectorDescriptor() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + +
_MTL_INLINE VectorDescriptor * MPS::VectorDescriptor::vectorDescriptor (NS::UInteger length,
NS::UInteger vectors,
NS::UInteger vectorBytes,
NS::UInteger dataType )
+
+static
+
+ +
+
+
The documentation for this class was generated from the following file:
    +
  • mlx/backend/metal/mps/gemm.h
  • +
+
+ + + + diff --git a/docs/build/html/class_m_p_s_1_1_vector_descriptor.png b/docs/build/html/class_m_p_s_1_1_vector_descriptor.png new file mode 100644 index 0000000000000000000000000000000000000000..00b2efd0e245b4a7485a5d74f370f82473449fd6 GIT binary patch literal 794 zcmV+#1LgdQP)vTJr#LVva2S`&=-}Ys|Ns9r%~qrU000SeQchC<|NsC0|NsC0Hv*f~0007| zNklN4wz)Gb z=|vn@4=FdvjE-X)pDT-E61&K9I+HKib0b7g3$o5nbC3*HW+J27QJ(gC8_JAp<$gXm zgYed?>8dO~{2l3i$8r>b6vMqNIU-IhHW@EiY%jhLPky(|1@%(yJy5N&3@dAxVE)SV9P43<1FR z^#XuFG!V<{H4e-`EDOpoFe9A8ZG@+ zF}B}FUl^QxRWH(5NouP0C`rBQWjWTmvP32`VJFK6i~Ko@ojM*@>Tp}3v?_<} z7E99@DoHo$jj8SNfn`k<=BwD`R^=s9!C}f`R-hd#cx@v=sDMR1eb#!yMRk;8lc@q#9cBz;XIu}IP*O%_S=r^zBo{ + + + + + + +MLX: Class Index + + + + + + + + + + + +
+
+ + + + + + +
+
MLX +
+
+
+ + + + + + + +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Class Index
+
+
+
A | B | C | D | E | F | G | 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)
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)
CustomVJP (mlx::core)
+
+
D
+
array::Data (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)
FileReader (mlx::core::io)
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)
Greater
Greater (mlx::core::detail)
Greater (mlx::core)
GreaterEqual
GreaterEqual (mlx::core::detail)
GreaterEqual (mlx::core)
Group (mlx::core::distributed)
+
+
I
+
ImplicitGemmConv2DParams (mlx::steel)
Indices
IntOrFloat (mlx::core::detail)
InTracing (mlx::core::detail)
Inverse (mlx::core)
+
+
K
+
Kernel (MPS)
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< 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)
+
+
M
+
Matmul (mlx::core)
Matrix (MPS)
MatrixDescriptor (MPS)
MatrixMultiplication (MPS)
MatrixVectorMultiplication (MPS)
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)
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)
QuantizedMatmul (mlx::core)
+
+
R
+
RandomBits (mlx::core)
Reader (mlx::core::io)
BlockLoader::ReadVector (mlx::steel)
ReadWriter
Reduce (mlx::core)
ReductionPlan (mlx::core)
Remainder (mlx::core::detail)
Remainder (mlx::core)
Remainder
Reshape (mlx::core)
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
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)
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
+
Vector (MPS)
VectorDescriptor (MPS)
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 new file mode 100644 index 000000000..c4d6a962b --- /dev/null +++ b/docs/build/html/classmlx_1_1core_1_1_abs-members.html @@ -0,0 +1,115 @@ + + + + + + + +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 new file mode 100644 index 000000000..a78741814 --- /dev/null +++ b/docs/build/html/classmlx_1_1core_1_1_abs.html @@ -0,0 +1,463 @@ + + + + + + + +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 new file mode 100644 index 0000000000000000000000000000000000000000..ee6584fe99fc35e9877aa595ed31186df27fcc95 GIT binary patch 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 new file mode 100644 index 000000000..a5a7ad12b --- /dev/null +++ b/docs/build/html/classmlx_1_1core_1_1_add.html @@ -0,0 +1,463 @@ + + + + + + + +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 new file mode 100644 index 0000000000000000000000000000000000000000..39bba292a843ebf0497a42bb6bc0289f5598f73a GIT binary patch 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 new file mode 100644 index 000000000..16d98170e --- /dev/null +++ b/docs/build/html/classmlx_1_1core_1_1_add_m_m.html @@ -0,0 +1,404 @@ + + + + + + + +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 new file mode 100644 index 0000000000000000000000000000000000000000..5e054780b6598dd29eb1019067f39135616a7ba2 GIT binary patch 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@ literal 0 HcmV?d00001 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 new file mode 100644 index 000000000..3d8271ae2 --- /dev/null +++ b/docs/build/html/classmlx_1_1core_1_1_arange-members.html @@ -0,0 +1,115 @@ + + + + + + + +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 new file mode 100644 index 000000000..936235fe3 --- /dev/null +++ b/docs/build/html/classmlx_1_1core_1_1_arange.html @@ -0,0 +1,332 @@ + + + + + + + +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 new file mode 100644 index 0000000000000000000000000000000000000000..b5f5fd908820b268b6341df21e452a303bedbbab GIT binary patch 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 literal 0 HcmV?d00001 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 new file mode 100644 index 000000000..233f33000 --- /dev/null +++ b/docs/build/html/classmlx_1_1core_1_1_arc_cos-members.html @@ -0,0 +1,115 @@ + + + + + + + +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 new file mode 100644 index 000000000..b465b208b --- /dev/null +++ b/docs/build/html/classmlx_1_1core_1_1_arc_cos.html @@ -0,0 +1,463 @@ + + + + + + + +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 new file mode 100644 index 0000000000000000000000000000000000000000..2daeb8d48a2150ddda1796400d1dd81551bf6b6a GIT binary patch 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 literal 0 HcmV?d00001 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 new file mode 100644 index 000000000..29d5b9722 --- /dev/null +++ b/docs/build/html/classmlx_1_1core_1_1_arc_cosh-members.html @@ -0,0 +1,115 @@ + + + + + + + +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 new file mode 100644 index 000000000..54a745725 --- /dev/null +++ b/docs/build/html/classmlx_1_1core_1_1_arc_cosh.html @@ -0,0 +1,463 @@ + + + + + + + +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 new file mode 100644 index 0000000000000000000000000000000000000000..2242caeb7f52244dab16af18cfd137121009a01e GIT binary patch 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 new file mode 100644 index 000000000..8f35ffa70 --- /dev/null +++ b/docs/build/html/classmlx_1_1core_1_1_arc_sin.html @@ -0,0 +1,463 @@ + + + + + + + +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 new file mode 100644 index 0000000000000000000000000000000000000000..644ab73d9f61e878574c75e7c990b56da38092c0 GIT binary patch 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 new file mode 100644 index 000000000..3c5272e30 --- /dev/null +++ b/docs/build/html/classmlx_1_1core_1_1_arc_sinh.html @@ -0,0 +1,463 @@ + + + + + + + +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 new file mode 100644 index 0000000000000000000000000000000000000000..728cb98d33b26311eb475e6419bdc830d42310fc GIT binary patch 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 new file mode 100644 index 000000000..52bf53085 --- /dev/null +++ b/docs/build/html/classmlx_1_1core_1_1_arc_tan.html @@ -0,0 +1,463 @@ + + + + + + + +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 new file mode 100644 index 0000000000000000000000000000000000000000..61bf8d991ceab8d3da11e185d62fa8119883f9aa GIT binary patch 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 literal 0 HcmV?d00001 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 new file mode 100644 index 000000000..0fc8af254 --- /dev/null +++ b/docs/build/html/classmlx_1_1core_1_1_arc_tan2-members.html @@ -0,0 +1,115 @@ + + + + + + + +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 new file mode 100644 index 000000000..2e293234e --- /dev/null +++ b/docs/build/html/classmlx_1_1core_1_1_arc_tan2.html @@ -0,0 +1,463 @@ + + + + + + + +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 new file mode 100644 index 0000000000000000000000000000000000000000..ff2449809de9c29a3400c3f1f7091052e7e901da GIT binary patch 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( literal 0 HcmV?d00001 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 new file mode 100644 index 000000000..64caf5fc1 --- /dev/null +++ b/docs/build/html/classmlx_1_1core_1_1_arc_tanh-members.html @@ -0,0 +1,115 @@ + + + + + + + +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 new file mode 100644 index 000000000..9b55347cc --- /dev/null +++ b/docs/build/html/classmlx_1_1core_1_1_arc_tanh.html @@ -0,0 +1,463 @@ + + + + + + + +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 new file mode 100644 index 0000000000000000000000000000000000000000..59f4ba4f4fc80b3ffcab15b8c7002012d6b8c63c GIT binary patch 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 literal 0 HcmV?d00001 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 new file mode 100644 index 000000000..b3ae98b73 --- /dev/null +++ b/docs/build/html/classmlx_1_1core_1_1_arg_partition-members.html @@ -0,0 +1,115 @@ + + + + + + + +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 new file mode 100644 index 000000000..ecdce6668 --- /dev/null +++ b/docs/build/html/classmlx_1_1core_1_1_arg_partition.html @@ -0,0 +1,391 @@ + + + + + + + +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 new file mode 100644 index 0000000000000000000000000000000000000000..8dcfb003d24a60c695b8e610cc069a2949a22060 GIT binary patch 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 new file mode 100644 index 000000000..1600965aa --- /dev/null +++ b/docs/build/html/classmlx_1_1core_1_1_arg_reduce.html @@ -0,0 +1,418 @@ + + + + + + + +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 new file mode 100644 index 0000000000000000000000000000000000000000..ac897a69d7edec8e1e8739c3ee6c241cd955b53e GIT binary patch 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 new file mode 100644 index 000000000..510709ed7 --- /dev/null +++ b/docs/build/html/classmlx_1_1core_1_1_arg_sort.html @@ -0,0 +1,386 @@ + + + + + + + +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 new file mode 100644 index 0000000000000000000000000000000000000000..523bf16a1f393ec78f0cd6f3df8783e4a793ab99 GIT binary patch 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` literal 0 HcmV?d00001 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 new file mode 100644 index 000000000..63e99012a --- /dev/null +++ b/docs/build/html/classmlx_1_1core_1_1_as_strided-members.html @@ -0,0 +1,115 @@ + + + + + + + +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 new file mode 100644 index 000000000..d9002ed44 --- /dev/null +++ b/docs/build/html/classmlx_1_1core_1_1_as_strided.html @@ -0,0 +1,413 @@ + + + + + + + +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 new file mode 100644 index 0000000000000000000000000000000000000000..7224d5d45d763d83f5d9719c6855149d687d13b9 GIT binary patch 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 new file mode 100644 index 000000000..00bb61d5a --- /dev/null +++ b/docs/build/html/classmlx_1_1core_1_1_as_type.html @@ -0,0 +1,467 @@ + + + + + + + +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 new file mode 100644 index 0000000000000000000000000000000000000000..4b919c285526347e6d43cb082353c9bcdff54692 GIT binary patch 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 literal 0 HcmV?d00001 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 new file mode 100644 index 000000000..f6c72e0c0 --- /dev/null +++ b/docs/build/html/classmlx_1_1core_1_1_bitwise_binary-members.html @@ -0,0 +1,121 @@ + + + + + + + +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)mlx::core::Primitivevirtual
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)mlx::core::Primitivevirtual
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 new file mode 100644 index 000000000..d0a522c28 --- /dev/null +++ b/docs/build/html/classmlx_1_1core_1_1_bitwise_binary.html @@ -0,0 +1,422 @@ + + + + + + + +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.
 
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 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

+ +

◆ 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.

+ +
+
+ +

◆ 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.

+ +
+
+ +

◆ 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 new file mode 100644 index 0000000000000000000000000000000000000000..0e74367fc64baff8773ceeb39e1af8c7c8b01490 GIT binary patch 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 literal 0 HcmV?d00001 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 new file mode 100644 index 000000000..a2891b770 --- /dev/null +++ b/docs/build/html/classmlx_1_1core_1_1_block_masked_m_m-members.html @@ -0,0 +1,115 @@ + + + + + + + +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 new file mode 100644 index 000000000..f447b19b8 --- /dev/null +++ b/docs/build/html/classmlx_1_1core_1_1_block_masked_m_m.html @@ -0,0 +1,365 @@ + + + + + + + +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 new file mode 100644 index 0000000000000000000000000000000000000000..8e5e7a8a40ca12f5d3e6d44b574fc1deea89beea GIT binary patch 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 literal 0 HcmV?d00001 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 new file mode 100644 index 000000000..0f8b3cce0 --- /dev/null +++ b/docs/build/html/classmlx_1_1core_1_1_broadcast-members.html @@ -0,0 +1,115 @@ + + + + + + + +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 new file mode 100644 index 000000000..4b455d2c2 --- /dev/null +++ b/docs/build/html/classmlx_1_1core_1_1_broadcast.html @@ -0,0 +1,437 @@ + + + + + + + +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 new file mode 100644 index 0000000000000000000000000000000000000000..080f3c4554799abdfe0d910acad98ef3142ea320 GIT binary patch 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{?# literal 0 HcmV?d00001 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 new file mode 100644 index 000000000..2cce4f65c --- /dev/null +++ b/docs/build/html/classmlx_1_1core_1_1_ceil-members.html @@ -0,0 +1,115 @@ + + + + + + + +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 new file mode 100644 index 000000000..4d11251f0 --- /dev/null +++ b/docs/build/html/classmlx_1_1core_1_1_ceil.html @@ -0,0 +1,463 @@ + + + + + + + +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 new file mode 100644 index 0000000000000000000000000000000000000000..7894fb3ecc936689693918209af7312a1447a1cb GIT binary patch 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 literal 0 HcmV?d00001 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 new file mode 100644 index 000000000..d95a1a5da --- /dev/null +++ b/docs/build/html/classmlx_1_1core_1_1_cholesky-members.html @@ -0,0 +1,115 @@ + + + + + + + +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 new file mode 100644 index 000000000..ece661cf6 --- /dev/null +++ b/docs/build/html/classmlx_1_1core_1_1_cholesky.html @@ -0,0 +1,327 @@ + + + + + + + +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 new file mode 100644 index 0000000000000000000000000000000000000000..f0f57d4b8bb439f6c553edaf191c18964559e36d GIT binary patch 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 literal 0 HcmV?d00001 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 new file mode 100644 index 000000000..bf0ad0373 --- /dev/null +++ b/docs/build/html/classmlx_1_1core_1_1_compiled-members.html @@ -0,0 +1,108 @@ + + + + + + + +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 new file mode 100644 index 000000000..78b508b6e --- /dev/null +++ b/docs/build/html/classmlx_1_1core_1_1_compiled.html @@ -0,0 +1,493 @@ + + + + + + + +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 new file mode 100644 index 0000000000000000000000000000000000000000..4f12eb20e1be08551a228728beea4ff60e4b1282 GIT binary patch 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 literal 0 HcmV?d00001 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 new file mode 100644 index 000000000..9847df5c1 --- /dev/null +++ b/docs/build/html/classmlx_1_1core_1_1_concatenate-members.html @@ -0,0 +1,115 @@ + + + + + + + +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 new file mode 100644 index 000000000..b96f54f64 --- /dev/null +++ b/docs/build/html/classmlx_1_1core_1_1_concatenate.html @@ -0,0 +1,437 @@ + + + + + + + +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 new file mode 100644 index 0000000000000000000000000000000000000000..3404621456d96f7206bcf97da9f0f3e1ca5feacc GIT binary patch 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?@ literal 0 HcmV?d00001 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 new file mode 100644 index 000000000..3439e670e --- /dev/null +++ b/docs/build/html/classmlx_1_1core_1_1_conjugate-members.html @@ -0,0 +1,115 @@ + + + + + + + +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 new file mode 100644 index 000000000..f7f0de1cf --- /dev/null +++ b/docs/build/html/classmlx_1_1core_1_1_conjugate.html @@ -0,0 +1,382 @@ + + + + + + + +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 new file mode 100644 index 0000000000000000000000000000000000000000..08be44bd1fb347166935e0ebe48e2c691c15f1e8 GIT binary patch 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@ literal 0 HcmV?d00001 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 new file mode 100644 index 000000000..c09690551 --- /dev/null +++ b/docs/build/html/classmlx_1_1core_1_1_convolution-members.html @@ -0,0 +1,115 @@ + + + + + + + +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 new file mode 100644 index 000000000..ac64adff4 --- /dev/null +++ b/docs/build/html/classmlx_1_1core_1_1_convolution.html @@ -0,0 +1,390 @@ + + + + + + + +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 new file mode 100644 index 0000000000000000000000000000000000000000..853ab7ab4adc387b35aedf2bb0fa2701addada34 GIT binary patch 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 literal 0 HcmV?d00001 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 new file mode 100644 index 000000000..3cb46c818 --- /dev/null +++ b/docs/build/html/classmlx_1_1core_1_1_copy-members.html @@ -0,0 +1,115 @@ + + + + + + + +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 new file mode 100644 index 000000000..f233d09c2 --- /dev/null +++ b/docs/build/html/classmlx_1_1core_1_1_copy.html @@ -0,0 +1,463 @@ + + + + + + + +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 new file mode 100644 index 0000000000000000000000000000000000000000..2f4f36d04325b9a6ebae742f7adc17e52b2dfca0 GIT binary patch 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 literal 0 HcmV?d00001 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 new file mode 100644 index 000000000..f07b0309e --- /dev/null +++ b/docs/build/html/classmlx_1_1core_1_1_cos-members.html @@ -0,0 +1,115 @@ + + + + + + + +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 new file mode 100644 index 000000000..1d2e6907d --- /dev/null +++ b/docs/build/html/classmlx_1_1core_1_1_cos.html @@ -0,0 +1,463 @@ + + + + + + + +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 new file mode 100644 index 0000000000000000000000000000000000000000..4724c19a70821cc52ec8dfdb5cc6b7a30befd5a7 GIT binary patch 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 new file mode 100644 index 000000000..385f8d6d8 --- /dev/null +++ b/docs/build/html/classmlx_1_1core_1_1_cosh.html @@ -0,0 +1,463 @@ + + + + + + + +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 new file mode 100644 index 0000000000000000000000000000000000000000..69fffddab9dd68ef284091892a88bda3d72302eb GIT binary patch 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 literal 0 HcmV?d00001 diff --git a/docs/build/html/classmlx_1_1core_1_1_custom_v_j_p-members.html b/docs/build/html/classmlx_1_1core_1_1_custom_v_j_p-members.html new file mode 100644 index 000000000..eee5452e6 --- /dev/null +++ b/docs/build/html/classmlx_1_1core_1_1_custom_v_j_p-members.html @@ -0,0 +1,107 @@ + + + + + + + +MLX: Member List + + + + + + + + + + + +
+
+ + + + + + +
+
MLX +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
mlx::core::CustomVJP Member List
+
+
+ +

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

+ + + + + + + + + + + + + + + + + + +
CustomVJP(Stream stream, std::function< std::vector< array >(const std::vector< array > &, const std::vector< array > &, const std::vector< array > &)> fun)mlx::core::CustomVJPinlineexplicit
device()mlx::core::Primitiveinline
eval_cpu(const std::vector< array > &inputs, std::vector< array > &outputs) overridemlx::core::CustomVJPvirtual
eval_gpu(const std::vector< array > &inputs, std::vector< array > &outputs) overridemlx::core::CustomVJPvirtual
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::CustomVJPinlinevirtual
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::CustomVJPvirtual
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_custom_v_j_p.html b/docs/build/html/classmlx_1_1core_1_1_custom_v_j_p.html new file mode 100644 index 000000000..8ed54c2a1 --- /dev/null +++ b/docs/build/html/classmlx_1_1core_1_1_custom_v_j_p.html @@ -0,0 +1,320 @@ + + + + + + + +MLX: mlx::core::CustomVJP Class Reference + + + + + + + + + + + +
+
+ + + + + + +
+
MLX +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+ +
mlx::core::CustomVJP Class Reference
+
+
+ +

#include <primitives.h>

+
+Inheritance diagram for mlx::core::CustomVJP:
+
+
+ + +mlx::core::Primitive + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 CustomVJP (Stream stream, std::function< std::vector< array >(const std::vector< array > &, const std::vector< array > &, const std::vector< array > &)> fun)
 
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

+ +

◆ CustomVJP()

+ +
+
+ + + + + +
+ + + + + + + + + + + +
mlx::core::CustomVJP::CustomVJP (Stream stream,
std::function< std::vector< array >(const std::vector< array > &, const std::vector< array > &, const std::vector< array > &)> fun )
+
+inlineexplicit
+
+ +
+
+

Member Function Documentation

+ +

◆ eval_cpu()

+ +
+
+ + + + + +
+ + + + + + + + + + + +
void mlx::core::CustomVJP::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::CustomVJP::eval_gpu (const std::vector< array > & inputs,
std::vector< array > & outputs )
+
+overridevirtual
+
+ +

Implements mlx::core::Primitive.

+ +
+
+ +

◆ print()

+ +
+
+ + + + + +
+ + + + + + + +
void mlx::core::CustomVJP::print (std::ostream & os)
+
+inlineoverridevirtual
+
+ +

Print the primitive.

+ +

Implements mlx::core::Primitive.

+ +
+
+ +

◆ vjp()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + +
std::vector< array > mlx::core::CustomVJP::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_custom_v_j_p.png b/docs/build/html/classmlx_1_1core_1_1_custom_v_j_p.png new file mode 100644 index 0000000000000000000000000000000000000000..32bf6e7e9d196669ef036904122ec5e2bbe1cd42 GIT binary patch literal 575 zcmeAS@N?(olHy`uVBq!ia0vp^tw0>W!3-oBzPn8VlF|V_A+G=b{|7Q(y!l$%e`vXd zfo6fk^fNCWJa_;UH$5A+1SrQ@666=m0OW&#In(Sb3=E8?JY5_^Dj46+eZB680!K@` z;mr^K{A;Q%Gu_HHe}3s%3$Ji4>#xoo`vbi+w{y3uK^O*)0`?KJi;ai`i zrOr5>X0fuBm#bQ}b#G0)%eMIC5@t^nkCq+Nd&SlI_HA?27ugCg$4QRwHDbz-?R(+( zWX_>71J7h}jax5&SYLY9yomGVnYS-a$ts?-4+pzP^(eEZm*&$v#slVGnHp|?<>VH5-#~rpIDCFY`c&&E!EE%LVHk8I}W zZAYIa`W?A5(PN|j6Z;*jvI2rsT32O-1X*wiPTc*Kwcjpp#!0D3pr~f>boFyt=akR{ E0N$Gk-2eap literal 0 HcmV?d00001 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 new file mode 100644 index 000000000..8cb2e5547 --- /dev/null +++ b/docs/build/html/classmlx_1_1core_1_1_depends-members.html @@ -0,0 +1,107 @@ + + + + + + + +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 new file mode 100644 index 000000000..45bef7a88 --- /dev/null +++ b/docs/build/html/classmlx_1_1core_1_1_depends.html @@ -0,0 +1,316 @@ + + + + + + + +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 new file mode 100644 index 0000000000000000000000000000000000000000..8c1a6319a8271ffeaf01b756e6339b70e85d5ae0 GIT binary patch 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& literal 0 HcmV?d00001 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 new file mode 100644 index 000000000..bd2f77317 --- /dev/null +++ b/docs/build/html/classmlx_1_1core_1_1_div_mod-members.html @@ -0,0 +1,107 @@ + + + + + + + +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 new file mode 100644 index 000000000..d4455f3ed --- /dev/null +++ b/docs/build/html/classmlx_1_1core_1_1_div_mod.html @@ -0,0 +1,447 @@ + + + + + + + +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 new file mode 100644 index 0000000000000000000000000000000000000000..11583cfa1c44bbfd64b891036eb337407e399283 GIT binary patch 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 new file mode 100644 index 000000000..be3840b28 --- /dev/null +++ b/docs/build/html/classmlx_1_1core_1_1_divide.html @@ -0,0 +1,463 @@ + + + + + + + +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 new file mode 100644 index 0000000000000000000000000000000000000000..f3946b16d3cb369fc9a6e0c8ad4f458ae0854192 GIT binary patch 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 new file mode 100644 index 000000000..0ed4a5122 --- /dev/null +++ b/docs/build/html/classmlx_1_1core_1_1_equal.html @@ -0,0 +1,467 @@ + + + + + + + +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 new file mode 100644 index 0000000000000000000000000000000000000000..7c77a8836e38f9537adaf24606d4538ed3e10cbd GIT binary patch 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 literal 0 HcmV?d00001 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 new file mode 100644 index 000000000..896816975 --- /dev/null +++ b/docs/build/html/classmlx_1_1core_1_1_erf-members.html @@ -0,0 +1,115 @@ + + + + + + + +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 new file mode 100644 index 000000000..07e13bab9 --- /dev/null +++ b/docs/build/html/classmlx_1_1core_1_1_erf.html @@ -0,0 +1,463 @@ + + + + + + + +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 new file mode 100644 index 0000000000000000000000000000000000000000..d21c1648a4e4c8f7a9b66bd2dd232bd7351a90a3 GIT binary patch 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 literal 0 HcmV?d00001 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 new file mode 100644 index 000000000..1b4e58ece --- /dev/null +++ b/docs/build/html/classmlx_1_1core_1_1_erf_inv-members.html @@ -0,0 +1,115 @@ + + + + + + + +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 new file mode 100644 index 000000000..92b8c6bf2 --- /dev/null +++ b/docs/build/html/classmlx_1_1core_1_1_erf_inv.html @@ -0,0 +1,463 @@ + + + + + + + +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 new file mode 100644 index 0000000000000000000000000000000000000000..2ed64aaf6fd6957d8b3f8aa8ecdc8419a58274fd GIT binary patch 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()mlx::core::Eventinline
Event(const Stream &steam)mlx::core::Event
raw_event()mlx::core::Eventinline
set_value(uint64_t v)mlx::core::Eventinline
signal()mlx::core::Event
stream()mlx::core::Eventinline
valid()mlx::core::Eventinline
value()mlx::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 new file mode 100644 index 000000000..0b8a08aa0 --- /dev/null +++ b/docs/build/html/classmlx_1_1core_1_1_event.html @@ -0,0 +1,320 @@ + + + + + + + +MLX: mlx::core::Event Class Reference + + + + + + + + + + + +
+
+ + + + + + +
+
MLX +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+ +
mlx::core::Event Class Reference
+
+
+ +

#include <event.h>

+ + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 Event ()
 
 Event (const Stream &steam)
 
void wait ()
 
void signal ()
 
bool valid ()
 
uint64_t value ()
 
void set_value (uint64_t v)
 
const Streamstream ()
 
const std::shared_ptr< void > & raw_event ()
 
+

Constructor & Destructor Documentation

+ +

◆ Event() [1/2]

+ +
+
+ + + + + +
+ + + + + + + +
mlx::core::Event::Event ()
+
+inline
+
+ +
+
+ +

◆ 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 ()
+
+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 ()
+
+inline
+
+ +
+
+ +

◆ valid()

+ +
+
+ + + + + +
+ + + + + + + +
bool mlx::core::Event::valid ()
+
+inline
+
+ +
+
+ +

◆ value()

+ +
+
+ + + + + +
+ + + + + + + +
uint64_t mlx::core::Event::value ()
+
+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 new file mode 100644 index 000000000..ff9c86910 --- /dev/null +++ b/docs/build/html/classmlx_1_1core_1_1_exp-members.html @@ -0,0 +1,115 @@ + + + + + + + +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 new file mode 100644 index 000000000..7a5acdfdf --- /dev/null +++ b/docs/build/html/classmlx_1_1core_1_1_exp.html @@ -0,0 +1,463 @@ + + + + + + + +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 new file mode 100644 index 0000000000000000000000000000000000000000..5072482beda1fdef29a6eb7ae79e18a80c2ce713 GIT binary patch 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 new file mode 100644 index 000000000..7254a12ad --- /dev/null +++ b/docs/build/html/classmlx_1_1core_1_1_expm1.html @@ -0,0 +1,434 @@ + + + + + + + +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 new file mode 100644 index 0000000000000000000000000000000000000000..da566929f85f62750ede4d52a3cd0d93330543f5 GIT binary patch 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 literal 0 HcmV?d00001 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 new file mode 100644 index 000000000..1b6c9e55c --- /dev/null +++ b/docs/build/html/classmlx_1_1core_1_1_f_f_t-members.html @@ -0,0 +1,115 @@ + + + + + + + +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 new file mode 100644 index 000000000..de279f0ed --- /dev/null +++ b/docs/build/html/classmlx_1_1core_1_1_f_f_t.html @@ -0,0 +1,447 @@ + + + + + + + +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 new file mode 100644 index 0000000000000000000000000000000000000000..aa05d735a5e91509583bd17df54ff4448f9e0141 GIT binary patch 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 new file mode 100644 index 000000000..60f7e423d --- /dev/null +++ b/docs/build/html/classmlx_1_1core_1_1_floor.html @@ -0,0 +1,463 @@ + + + + + + + +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 new file mode 100644 index 0000000000000000000000000000000000000000..2b602e649d0743547bceab9a20478cbbb48a191f GIT binary patch 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 new file mode 100644 index 000000000..7ad00b10e --- /dev/null +++ b/docs/build/html/classmlx_1_1core_1_1_full.html @@ -0,0 +1,433 @@ + + + + + + + +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 new file mode 100644 index 0000000000000000000000000000000000000000..51e2557809e41495c77b03b62b452248d0b92381 GIT binary patch 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 new file mode 100644 index 000000000..09cb2f1de --- /dev/null +++ b/docs/build/html/classmlx_1_1core_1_1_gather.html @@ -0,0 +1,442 @@ + + + + + + + +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 new file mode 100644 index 0000000000000000000000000000000000000000..7840ba3e82ac51e0cf4e3a1471222031e98cc0e2 GIT binary patch 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 new file mode 100644 index 000000000..670b2e62d --- /dev/null +++ b/docs/build/html/classmlx_1_1core_1_1_gather_m_m.html @@ -0,0 +1,361 @@ + + + + + + + +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 new file mode 100644 index 0000000000000000000000000000000000000000..5bcc0fa4eb83fee54b75f653b323a45cdeea51d8 GIT binary patch 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 new file mode 100644 index 000000000..3c2326c8a --- /dev/null +++ b/docs/build/html/classmlx_1_1core_1_1_gather_q_m_m.html @@ -0,0 +1,447 @@ + + + + + + + +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 new file mode 100644 index 0000000000000000000000000000000000000000..4f70f3e7fc8ab3f0b8ad23e0c677b9e6f65cd054 GIT binary patch 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 literal 0 HcmV?d00001 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 new file mode 100644 index 000000000..a88fdac80 --- /dev/null +++ b/docs/build/html/classmlx_1_1core_1_1_greater-members.html @@ -0,0 +1,115 @@ + + + + + + + +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 new file mode 100644 index 000000000..4e738bd6d --- /dev/null +++ b/docs/build/html/classmlx_1_1core_1_1_greater.html @@ -0,0 +1,463 @@ + + + + + + + +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 new file mode 100644 index 0000000000000000000000000000000000000000..ed485df38fc62e9ab723449fd9db6bac6392be4e GIT binary patch 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 new file mode 100644 index 000000000..16aec8e67 --- /dev/null +++ b/docs/build/html/classmlx_1_1core_1_1_greater_equal.html @@ -0,0 +1,463 @@ + + + + + + + +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 new file mode 100644 index 0000000000000000000000000000000000000000..3b6862e595a2eaaf7272cbf9f62d73d8e0bfd547 GIT binary patch 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 literal 0 HcmV?d00001 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 new file mode 100644 index 000000000..1fb2c948d --- /dev/null +++ b/docs/build/html/classmlx_1_1core_1_1_inverse-members.html @@ -0,0 +1,115 @@ + + + + + + + +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)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 new file mode 100644 index 000000000..ec23a1051 --- /dev/null +++ b/docs/build/html/classmlx_1_1core_1_1_inverse.html @@ -0,0 +1,323 @@ + + + + + + + +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)
 
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)
+
+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 new file mode 100644 index 0000000000000000000000000000000000000000..c59ec21c0952e25cd20892230ab773cbd6e43350 GIT binary patch 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 literal 0 HcmV?d00001 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 new file mode 100644 index 000000000..e3f748124 --- /dev/null +++ b/docs/build/html/classmlx_1_1core_1_1_less-members.html @@ -0,0 +1,115 @@ + + + + + + + +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 new file mode 100644 index 000000000..076e7bfb9 --- /dev/null +++ b/docs/build/html/classmlx_1_1core_1_1_less.html @@ -0,0 +1,463 @@ + + + + + + + +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 new file mode 100644 index 0000000000000000000000000000000000000000..5fde4667de943f1ce94b7377e7b1d10bf4c4687d GIT binary patch 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 new file mode 100644 index 000000000..ea0474c76 --- /dev/null +++ b/docs/build/html/classmlx_1_1core_1_1_less_equal.html @@ -0,0 +1,463 @@ + + + + + + + +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 new file mode 100644 index 0000000000000000000000000000000000000000..861844408310aba3ff8e8f7c874c0ab2c3ded067 GIT binary patch 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 new file mode 100644 index 000000000..f37a2c781 --- /dev/null +++ b/docs/build/html/classmlx_1_1core_1_1_load.html @@ -0,0 +1,303 @@ + + + + + + + +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 new file mode 100644 index 0000000000000000000000000000000000000000..cb43b85d486bc02ea789d571682796299adfc197 GIT binary patch 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 literal 0 HcmV?d00001 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 new file mode 100644 index 000000000..b66e45b93 --- /dev/null +++ b/docs/build/html/classmlx_1_1core_1_1_log-members.html @@ -0,0 +1,119 @@ + + + + + + + +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 new file mode 100644 index 000000000..0728bb815 --- /dev/null +++ b/docs/build/html/classmlx_1_1core_1_1_log.html @@ -0,0 +1,496 @@ + + + + + + + +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 new file mode 100644 index 0000000000000000000000000000000000000000..cc9ba7d8505ae19adcd566c6d03b83559df66dd3 GIT binary patch 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 new file mode 100644 index 000000000..0eeaf6c9e --- /dev/null +++ b/docs/build/html/classmlx_1_1core_1_1_log1p.html @@ -0,0 +1,434 @@ + + + + + + + +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 new file mode 100644 index 0000000000000000000000000000000000000000..fc2853680b27706d0125a21079bf0595a721d1e1 GIT binary patch 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 literal 0 HcmV?d00001 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 new file mode 100644 index 000000000..3c05b01b8 --- /dev/null +++ b/docs/build/html/classmlx_1_1core_1_1_log_add_exp-members.html @@ -0,0 +1,115 @@ + + + + + + + +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 new file mode 100644 index 000000000..1cc6326ec --- /dev/null +++ b/docs/build/html/classmlx_1_1core_1_1_log_add_exp.html @@ -0,0 +1,463 @@ + + + + + + + +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 new file mode 100644 index 0000000000000000000000000000000000000000..28cb8ab01bfe36d2661453a2d8e022c8cb461383 GIT binary patch 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 literal 0 HcmV?d00001 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 new file mode 100644 index 000000000..b96dfe648 --- /dev/null +++ b/docs/build/html/classmlx_1_1core_1_1_logical_and-members.html @@ -0,0 +1,115 @@ + + + + + + + +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 new file mode 100644 index 000000000..1ea446dab --- /dev/null +++ b/docs/build/html/classmlx_1_1core_1_1_logical_and.html @@ -0,0 +1,463 @@ + + + + + + + +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 new file mode 100644 index 0000000000000000000000000000000000000000..65d5f0bb4faeb52263141ede1bd0892ba0dcebdc GIT binary patch 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 literal 0 HcmV?d00001 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 new file mode 100644 index 000000000..1b749bde7 --- /dev/null +++ b/docs/build/html/classmlx_1_1core_1_1_logical_not-members.html @@ -0,0 +1,115 @@ + + + + + + + +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 new file mode 100644 index 000000000..a4650332d --- /dev/null +++ b/docs/build/html/classmlx_1_1core_1_1_logical_not.html @@ -0,0 +1,463 @@ + + + + + + + +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 new file mode 100644 index 0000000000000000000000000000000000000000..51f652755cbd67a1549845fe366564f6d1c64051 GIT binary patch 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 new file mode 100644 index 000000000..205a8832d --- /dev/null +++ b/docs/build/html/classmlx_1_1core_1_1_logical_or.html @@ -0,0 +1,463 @@ + + + + + + + +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 new file mode 100644 index 0000000000000000000000000000000000000000..79dcbcb6f02248a88ec94f481a4bd7b3eafc9650 GIT binary patch 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 new file mode 100644 index 000000000..490ff158a --- /dev/null +++ b/docs/build/html/classmlx_1_1core_1_1_matmul.html @@ -0,0 +1,395 @@ + + + + + + + +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 new file mode 100644 index 0000000000000000000000000000000000000000..eddf94c6689334b6ca0636a6709feb8af328d0ee GIT binary patch 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 literal 0 HcmV?d00001 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 new file mode 100644 index 000000000..d185625c2 --- /dev/null +++ b/docs/build/html/classmlx_1_1core_1_1_maximum-members.html @@ -0,0 +1,115 @@ + + + + + + + +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 new file mode 100644 index 000000000..a2374f87c --- /dev/null +++ b/docs/build/html/classmlx_1_1core_1_1_maximum.html @@ -0,0 +1,463 @@ + + + + + + + +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 new file mode 100644 index 0000000000000000000000000000000000000000..d888f70916cb45d503beaa60665bcbe9b4d8d205 GIT binary patch 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 literal 0 HcmV?d00001 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 new file mode 100644 index 000000000..34236c406 --- /dev/null +++ b/docs/build/html/classmlx_1_1core_1_1_minimum-members.html @@ -0,0 +1,115 @@ + + + + + + + +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 new file mode 100644 index 000000000..3407dff49 --- /dev/null +++ b/docs/build/html/classmlx_1_1core_1_1_minimum.html @@ -0,0 +1,463 @@ + + + + + + + +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 new file mode 100644 index 0000000000000000000000000000000000000000..46ca64b2d779f71310a4c06ab7a53f43090b24aa GIT binary patch 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-&+ literal 0 HcmV?d00001 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 new file mode 100644 index 000000000..9754017cd --- /dev/null +++ b/docs/build/html/classmlx_1_1core_1_1_multiply-members.html @@ -0,0 +1,115 @@ + + + + + + + +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 new file mode 100644 index 000000000..85362801c --- /dev/null +++ b/docs/build/html/classmlx_1_1core_1_1_multiply.html @@ -0,0 +1,463 @@ + + + + + + + +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 new file mode 100644 index 0000000000000000000000000000000000000000..518065cfbc82a3186a616f79145caccbddf2a3ee GIT binary patch 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 new file mode 100644 index 000000000..8d4d4cdb3 --- /dev/null +++ b/docs/build/html/classmlx_1_1core_1_1_negative.html @@ -0,0 +1,463 @@ + + + + + + + +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 new file mode 100644 index 0000000000000000000000000000000000000000..f7a0d33a0efb549f57aef90f5e4447729e2f42d9 GIT binary patch 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 literal 0 HcmV?d00001 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 new file mode 100644 index 000000000..93f8795dc --- /dev/null +++ b/docs/build/html/classmlx_1_1core_1_1_not_equal-members.html @@ -0,0 +1,115 @@ + + + + + + + +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 new file mode 100644 index 000000000..c394128dc --- /dev/null +++ b/docs/build/html/classmlx_1_1core_1_1_not_equal.html @@ -0,0 +1,463 @@ + + + + + + + +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 new file mode 100644 index 0000000000000000000000000000000000000000..2067d9710fa43a18393232e768dc93f6d029c187 GIT binary patch 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 new file mode 100644 index 000000000..018531ce9 --- /dev/null +++ b/docs/build/html/classmlx_1_1core_1_1_number_of_elements.html @@ -0,0 +1,396 @@ + + + + + + + +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 new file mode 100644 index 0000000000000000000000000000000000000000..2364d3242ef674772f7577d13debc63a620692ac GIT binary patch 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 new file mode 100644 index 000000000..97fa86571 --- /dev/null +++ b/docs/build/html/classmlx_1_1core_1_1_pad.html @@ -0,0 +1,447 @@ + + + + + + + +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 new file mode 100644 index 0000000000000000000000000000000000000000..13b64cbff9539015259689bb35502cdb3ba44dce GIT binary patch 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 literal 0 HcmV?d00001 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 new file mode 100644 index 000000000..101ee7dc2 --- /dev/null +++ b/docs/build/html/classmlx_1_1core_1_1_partition-members.html @@ -0,0 +1,115 @@ + + + + + + + +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 new file mode 100644 index 000000000..018687d23 --- /dev/null +++ b/docs/build/html/classmlx_1_1core_1_1_partition.html @@ -0,0 +1,472 @@ + + + + + + + +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 new file mode 100644 index 0000000000000000000000000000000000000000..4259b6ba026b79860e910b79b230a581b9e7ee5f GIT binary patch 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 literal 0 HcmV?d00001 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 new file mode 100644 index 000000000..6bb8d6502 --- /dev/null +++ b/docs/build/html/classmlx_1_1core_1_1_power-members.html @@ -0,0 +1,115 @@ + + + + + + + +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 new file mode 100644 index 000000000..7f1bd4ba4 --- /dev/null +++ b/docs/build/html/classmlx_1_1core_1_1_power.html @@ -0,0 +1,463 @@ + + + + + + + +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 new file mode 100644 index 0000000000000000000000000000000000000000..7ae727a295912364d435a4d757bfc1ebac0c8d35 GIT binary patch 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> literal 0 HcmV?d00001 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 new file mode 100644 index 000000000..0e781c800 --- /dev/null +++ b/docs/build/html/classmlx_1_1core_1_1_primitive-members.html @@ -0,0 +1,106 @@ + + + + + + + +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 new file mode 100644 index 000000000..e848be5a2 --- /dev/null +++ b/docs/build/html/classmlx_1_1core_1_1_primitive.html @@ -0,0 +1,632 @@ + + + + + + + +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::CustomVJP +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 + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+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
+
+ +

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.

+ +

Implemented in mlx::core::distributed::AllReduce, mlx::core::distributed::AllGather, mlx::core::fast::RMSNorm, mlx::core::fast::RMSNormVJP, mlx::core::fast::LayerNorm, mlx::core::fast::LayerNormVJP, mlx::core::fast::RoPE, mlx::core::fast::ScaledDotProductAttention, mlx::core::UnaryPrimitive, mlx::core::Compiled, mlx::core::CustomVJP, mlx::core::Depends, mlx::core::DivMod, mlx::core::Split, mlx::core::QRF, and mlx::core::SVD.

+ +
+
+ +

◆ 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::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::Broadcast, mlx::core::Ceil, mlx::core::Compiled, mlx::core::Concatenate, 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::Expm1, mlx::core::FFT, mlx::core::Floor, mlx::core::Full, mlx::core::Gather, mlx::core::Greater, mlx::core::GreaterEqual, 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::CustomVJP, 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::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::CustomVJP, 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::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::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::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::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::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::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::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 new file mode 100644 index 0000000000000000000000000000000000000000..7d680342f4df5c78928d40f2a3857970cac1fabf GIT binary patch literal 4486 zcmdT|eNYo;8ed8+Rt2Uh`5EhW{5S3PxSU77H zft3hUp+OTAC4dR27^#!6XfaJO5Fi``5|f}I#DtIB;z!SR?xvkNZ>E=jve}(|=Y5~w z^ZR&ma_bhN`3##G005Y8+~DI6046X1ytiSxDSBu3FJ&zB%XaJLz;#BW5xpFIsy&>4 zw*vffas2!O!C+5M4|?CVHRyZv*@sE~TLJ*|_sfsld&Q3dV9uP4K3;*TCdw{FURfwG zt+#B$EVc1oi|vd9x&x7dRii5&pP0UxL{+s$9*>$Y`Rqta%=ydF>DjqB-}bqo(B`(|;yVPRM0iMb9tKfh8(7NwbAK17K zXp&Sxf!!CSmB)iH!iTx#Hla|U_fkaaTItbVP5nVaHVO@5k~$J5&yqYF_ror+xXo~c zj_cjBIzvwNrbP(IE$vnT`>v(9H*ng9lq1oNo1n&Hi5P(wnavYJw^=#oVt&pXNuYZb zh&jP9O91zS62U32uG$iO*mc{x)2_+O=Mi&wqgc3Eu@P=xbO*fE6{l-xJX#Ze^>I|Y z5+|eMWD+66ScxO%D3Y_DlUq8yf|n(!c8wI84tsUquXlnf+GK3Sr2D4>>*CTzlIV+` zW^N%N*71SV8>Bgb>g^bz0}})s0x?I3V|ze`=eDUM<{do1+h%?hWR!9p5iqZh@cyuZ zJKyZ0iM#*1tn;6NFX9v~ukVGG$#^>J{x(YX8xY>?utjvyu(^5i60?@zhPPWqy+$SM z9DQNj4r6;UZQT(g(~$sUNB8{&111EO({bhaSV=eHX$U*selrK#<_IGVow|gzP)SQi zzSRBi+0G~|(Sz8Wf#ngWCR)GNP-v#r@{@%%n8(G1%PYky1m?>Rd)M)XaI)a|bIs`~ zA-8Ba?0J4+xnV2zZih1YmPoq@Rvx@$QS6a5(8K=y(k2vmKt_ZZHcaRzw5p?2mk9s z!$+Y>ZSK8fV3lylP#}9XO*81q)2~9}=X09@`xL7^X(jVD;%7H_JMl_8th;>|y&5zc zhB9;I0rO<;nYf1+`LWNEF%m_oCP#Qu!Dq^r`2|y|rH6=P`}c!`zKX({pz&c}ZDFqF zbENk$Epb(P;fg9hT3Us{=M5TmaDV=Ic46X}AcUSeHe`tRr_>>^E24iuO-WT_V`$~Y zBt(l)2F5=}_MIe9JetCFGB3KQPCxj3oR@x%d&PvqBte1HGM4+uc25S%kU$8S+y(*m z%KVz;AIQ^~- z;g0|q-3>#S7WVWWQHE=t+&1tnw|Kcj?kkmYZE{G?Q~Pya0vSemN7U*&PRWh^{up6w zvpW-Y^4XCxp7sXs9;j~p0<~fhJASm;!_>T?(~6vvXqCg9%QJa#McoQty3Z}_y;xO? zBk2X(CK7nt3dA^&|0vS8{ARJdAbk!J#};#$^t&NUUk3r~D(OEe+-Kes=lK;b|M?Vg z7-zRYfX5K&E$wm2$-jUH=vq6B@VnnjETi=QrMV?BTPbBx#)h4>M%}Q!Bcqa!T9__9 zVOM^I!)9kNa!!zS81%S*rNA_!Gh~)J&0av3J%D2HestQma?z5!hR)GG$}dTE9j^*L zun;Xc2Q4_kG|R3Zb>;YF7Pl+7Gh_p&so~Ei{a%@I)(qM6Ok?W6q43Fk5MU{C;;r^% zjtM&6>pF6U8ANH6R`Qirvg`LQctp~jWD^PZBHQ2>SUABBCY+`4-UTA<7vAd73= z2e=#|E_qkk=8szWb)I@cdr7I!P)Z3w26^jmQ^7oB6O<8ZqHaoKB|aj8G!5zu4KGzatZRKF*lz; ziy|1G%GiC;qQZE5nvplkY42jP2@YYCeq(2_4nOO*b4A_v@Oi3>Y;pSdxg0BR>ZEis zt!ht-v7-Mb!(o(2LK41TiSsriiv@5#!gWuqt>o#=;bO<}^ytvLhwRL_T?32a(;|f# z-038?SQ#P0ftt{f2ZDNyAjCG@eybnqk5x?`iOw+((|zocgl)Y}C7T%Z?Qq(zHd^a5 zjkX?=G-Wk~XqY%MFVmW&4M^R!eXJO@Sc&({v+_Q)%ghYZic!GUG(`oVntESaxqhV; z(e*ml7YZ~b{4$s5$|`TokWQs_Z#1pbAi(DK!vEo5@NdbZVZeb9!ve8 zI)em9*?-rE7%I4#1Y@;z_F-O+lkX7;enaq?>iR^ilzJlY5 zKwqGM{G5HwJxTIGcwB+0nBX)TBvZuK#Hy3VT9z5Fu<7{XN8zl`P`2oK3FqAwrdY}* z1@$VdgHN`kD>u=aG*%Z8p zKIgGq;HpJu8fPc@#d1V0N(|rCy@05thW{!st%scQ4({Cp1uhheQGlznQLHtqo^bx+ zgGdf)@jlH1$9OGKM*m=O4I7KNtyiCU`S&y|Y8Ig+`NHgq zEGX37Muk#ua4ktn2&vZ2vEu9l*g!PlmTU)pcIs`JoNxHt?kmdicI`fwzCQt{1= zX5_HeeA@k1w@uyO=spgp04=3X4kMbPl=`RMFkkfG^_Y09Cj1OKCeBc&4)5qOne#+rLF)Lr)EgQ*%h8ysyU4h0BC + + + + + + +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 new file mode 100644 index 000000000..f65f45b1e --- /dev/null +++ b/docs/build/html/classmlx_1_1core_1_1_q_r_f.html @@ -0,0 +1,273 @@ + + + + + + + +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 new file mode 100644 index 0000000000000000000000000000000000000000..29056e86a6af766743e90c1c5ee33e33ffd857c4 GIT binary patch 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 new file mode 100644 index 000000000..dcd295798 --- /dev/null +++ b/docs/build/html/classmlx_1_1core_1_1_quantized_matmul.html @@ -0,0 +1,447 @@ + + + + + + + +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 new file mode 100644 index 0000000000000000000000000000000000000000..6b7d0c3461c419ee15f44d7df60a7ff9e16ef71b GIT binary patch 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 literal 0 HcmV?d00001 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 new file mode 100644 index 000000000..fbd98bb2c --- /dev/null +++ b/docs/build/html/classmlx_1_1core_1_1_random_bits-members.html @@ -0,0 +1,115 @@ + + + + + + + +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 new file mode 100644 index 000000000..08a208df6 --- /dev/null +++ b/docs/build/html/classmlx_1_1core_1_1_random_bits.html @@ -0,0 +1,361 @@ + + + + + + + +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 new file mode 100644 index 0000000000000000000000000000000000000000..59b478af106299b15f4fc209fce70504a5768320 GIT binary patch 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 literal 0 HcmV?d00001 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 new file mode 100644 index 000000000..0d81bee6f --- /dev/null +++ b/docs/build/html/classmlx_1_1core_1_1_reduce-members.html @@ -0,0 +1,122 @@ + + + + + + + +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 new file mode 100644 index 000000000..40838cb85 --- /dev/null +++ b/docs/build/html/classmlx_1_1core_1_1_reduce.html @@ -0,0 +1,472 @@ + + + + + + + +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 new file mode 100644 index 0000000000000000000000000000000000000000..3c46700dbf54fb2d8ebfbe8738d00178b38a3c6c GIT binary patch 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- literal 0 HcmV?d00001 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 new file mode 100644 index 000000000..e2fefec65 --- /dev/null +++ b/docs/build/html/classmlx_1_1core_1_1_remainder-members.html @@ -0,0 +1,115 @@ + + + + + + + +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 new file mode 100644 index 000000000..f0fc852ce --- /dev/null +++ b/docs/build/html/classmlx_1_1core_1_1_remainder.html @@ -0,0 +1,463 @@ + + + + + + + +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 new file mode 100644 index 0000000000000000000000000000000000000000..898cd6373753c3bfca950f19c754d686cb8c04dd GIT binary patch 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#} literal 0 HcmV?d00001 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 new file mode 100644 index 000000000..77ec832ed --- /dev/null +++ b/docs/build/html/classmlx_1_1core_1_1_reshape-members.html @@ -0,0 +1,115 @@ + + + + + + + +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 new file mode 100644 index 000000000..c495d9df9 --- /dev/null +++ b/docs/build/html/classmlx_1_1core_1_1_reshape.html @@ -0,0 +1,437 @@ + + + + + + + +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 new file mode 100644 index 0000000000000000000000000000000000000000..1c30abb02f8afafc67a857ffd76cf9025c6a10e6 GIT binary patch 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 new file mode 100644 index 000000000..61f17205c --- /dev/null +++ b/docs/build/html/classmlx_1_1core_1_1_round.html @@ -0,0 +1,463 @@ + + + + + + + +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 new file mode 100644 index 0000000000000000000000000000000000000000..b24499cb7318ebbba97ad65dbc2da147727e43fe GIT binary patch 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 literal 0 HcmV?d00001 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 new file mode 100644 index 000000000..034664345 --- /dev/null +++ b/docs/build/html/classmlx_1_1core_1_1_s_v_d-members.html @@ -0,0 +1,107 @@ + + + + + + + +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 new file mode 100644 index 000000000..86fe0bf9d --- /dev/null +++ b/docs/build/html/classmlx_1_1core_1_1_s_v_d.html @@ -0,0 +1,307 @@ + + + + + + + +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 new file mode 100644 index 0000000000000000000000000000000000000000..428bbfa87a55b0f396c4a0078a822bf30cd49d9b GIT binary patch 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 literal 0 HcmV?d00001 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 new file mode 100644 index 000000000..55a51b51c --- /dev/null +++ b/docs/build/html/classmlx_1_1core_1_1_scan-members.html @@ -0,0 +1,120 @@ + + + + + + + +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 new file mode 100644 index 000000000..75ead8c56 --- /dev/null +++ b/docs/build/html/classmlx_1_1core_1_1_scan.html @@ -0,0 +1,483 @@ + + + + + + + +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 new file mode 100644 index 0000000000000000000000000000000000000000..6926bd27e6b7ffb21fd93cf477c978b21d4846e5 GIT binary patch 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> literal 0 HcmV?d00001 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 new file mode 100644 index 000000000..f6db8360d --- /dev/null +++ b/docs/build/html/classmlx_1_1core_1_1_scatter-members.html @@ -0,0 +1,121 @@ + + + + + + + +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)mlx::core::Primitivevirtual
~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 new file mode 100644 index 000000000..a46a7ff99 --- /dev/null +++ b/docs/build/html/classmlx_1_1core_1_1_scatter.html @@ -0,0 +1,444 @@ + + + + + + + +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
 
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
 
+

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.

+ +
+
+
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 new file mode 100644 index 0000000000000000000000000000000000000000..bac72d5cb6bd37cdfaea676b634f7946db599a0c GIT binary patch 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#| literal 0 HcmV?d00001 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 new file mode 100644 index 000000000..3b6c6ecf1 --- /dev/null +++ b/docs/build/html/classmlx_1_1core_1_1_select-members.html @@ -0,0 +1,115 @@ + + + + + + + +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 new file mode 100644 index 000000000..40727d22d --- /dev/null +++ b/docs/build/html/classmlx_1_1core_1_1_select.html @@ -0,0 +1,463 @@ + + + + + + + +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 new file mode 100644 index 0000000000000000000000000000000000000000..86b98868b90c6824ae0df2da65743272b576a954 GIT binary patch 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( literal 0 HcmV?d00001 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 new file mode 100644 index 000000000..e598387d7 --- /dev/null +++ b/docs/build/html/classmlx_1_1core_1_1_sigmoid-members.html @@ -0,0 +1,115 @@ + + + + + + + +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 new file mode 100644 index 000000000..66b45144b --- /dev/null +++ b/docs/build/html/classmlx_1_1core_1_1_sigmoid.html @@ -0,0 +1,463 @@ + + + + + + + +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 new file mode 100644 index 0000000000000000000000000000000000000000..31bcd54a18ee3d376419e36e2c1dbbb72cd30266 GIT binary patch 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 literal 0 HcmV?d00001 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 new file mode 100644 index 000000000..0bb890485 --- /dev/null +++ b/docs/build/html/classmlx_1_1core_1_1_sign-members.html @@ -0,0 +1,115 @@ + + + + + + + +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 new file mode 100644 index 000000000..bfa86de85 --- /dev/null +++ b/docs/build/html/classmlx_1_1core_1_1_sign.html @@ -0,0 +1,463 @@ + + + + + + + +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 new file mode 100644 index 0000000000000000000000000000000000000000..1489dbc9cae5c9fc8487cd6c2bbc13582559764e GIT binary patch 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| literal 0 HcmV?d00001 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 new file mode 100644 index 000000000..44d282d97 --- /dev/null +++ b/docs/build/html/classmlx_1_1core_1_1_sin-members.html @@ -0,0 +1,115 @@ + + + + + + + +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 new file mode 100644 index 000000000..d4d021f32 --- /dev/null +++ b/docs/build/html/classmlx_1_1core_1_1_sin.html @@ -0,0 +1,463 @@ + + + + + + + +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 new file mode 100644 index 0000000000000000000000000000000000000000..a532b6c8d31d753c5cce38bc268cc0c5dc6416ec GIT binary patch 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 literal 0 HcmV?d00001 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 new file mode 100644 index 000000000..73748f4b1 --- /dev/null +++ b/docs/build/html/classmlx_1_1core_1_1_sinh-members.html @@ -0,0 +1,115 @@ + + + + + + + +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 new file mode 100644 index 000000000..dbef15193 --- /dev/null +++ b/docs/build/html/classmlx_1_1core_1_1_sinh.html @@ -0,0 +1,463 @@ + + + + + + + +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 new file mode 100644 index 0000000000000000000000000000000000000000..dcfa33426314ef66a6ffe30706d9f8c1bcb34e96 GIT binary patch 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 new file mode 100644 index 000000000..6f6c64555 --- /dev/null +++ b/docs/build/html/classmlx_1_1core_1_1_slice.html @@ -0,0 +1,447 @@ + + + + + + + +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 new file mode 100644 index 0000000000000000000000000000000000000000..965022c8191a02cbad431215834a7a7780b45ed6 GIT binary patch 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 literal 0 HcmV?d00001 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 new file mode 100644 index 000000000..f4abb0ccf --- /dev/null +++ b/docs/build/html/classmlx_1_1core_1_1_slice_update-members.html @@ -0,0 +1,115 @@ + + + + + + + +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 new file mode 100644 index 000000000..b2014c218 --- /dev/null +++ b/docs/build/html/classmlx_1_1core_1_1_slice_update.html @@ -0,0 +1,447 @@ + + + + + + + +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 new file mode 100644 index 0000000000000000000000000000000000000000..25254654e697a978d4225a1dc99bb0259c96b348 GIT binary patch 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 literal 0 HcmV?d00001 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 new file mode 100644 index 000000000..c3e37e9ff --- /dev/null +++ b/docs/build/html/classmlx_1_1core_1_1_softmax-members.html @@ -0,0 +1,115 @@ + + + + + + + +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 new file mode 100644 index 000000000..5a96e8cbb --- /dev/null +++ b/docs/build/html/classmlx_1_1core_1_1_softmax.html @@ -0,0 +1,467 @@ + + + + + + + +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 new file mode 100644 index 0000000000000000000000000000000000000000..643fb0d3d4f172977271cbb763d23f17e0f6a592 GIT binary patch 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 literal 0 HcmV?d00001 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 new file mode 100644 index 000000000..67dcaa64c --- /dev/null +++ b/docs/build/html/classmlx_1_1core_1_1_sort-members.html @@ -0,0 +1,115 @@ + + + + + + + +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 new file mode 100644 index 000000000..197d6fdce --- /dev/null +++ b/docs/build/html/classmlx_1_1core_1_1_sort.html @@ -0,0 +1,467 @@ + + + + + + + +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 new file mode 100644 index 0000000000000000000000000000000000000000..fa624d11082dcef9d7f30c9508a9e6a59d44ea82 GIT binary patch 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* literal 0 HcmV?d00001 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 new file mode 100644 index 000000000..9c7cd09dd --- /dev/null +++ b/docs/build/html/classmlx_1_1core_1_1_split-members.html @@ -0,0 +1,107 @@ + + + + + + + +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 new file mode 100644 index 000000000..2889694e8 --- /dev/null +++ b/docs/build/html/classmlx_1_1core_1_1_split.html @@ -0,0 +1,426 @@ + + + + + + + +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 new file mode 100644 index 0000000000000000000000000000000000000000..5b7fd768bd10378cc696f15ae67363ff8e630223 GIT binary patch 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& literal 0 HcmV?d00001 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 new file mode 100644 index 000000000..4a2e605ce --- /dev/null +++ b/docs/build/html/classmlx_1_1core_1_1_sqrt-members.html @@ -0,0 +1,115 @@ + + + + + + + +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 new file mode 100644 index 000000000..c178fcb3d --- /dev/null +++ b/docs/build/html/classmlx_1_1core_1_1_sqrt.html @@ -0,0 +1,467 @@ + + + + + + + +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 new file mode 100644 index 0000000000000000000000000000000000000000..f30bd2b340d1865b74d6e6fdcac5e73e736c2132 GIT binary patch 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}) literal 0 HcmV?d00001 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 new file mode 100644 index 000000000..a447d33e6 --- /dev/null +++ b/docs/build/html/classmlx_1_1core_1_1_square-members.html @@ -0,0 +1,115 @@ + + + + + + + +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 new file mode 100644 index 000000000..24c7cd1c6 --- /dev/null +++ b/docs/build/html/classmlx_1_1core_1_1_square.html @@ -0,0 +1,463 @@ + + + + + + + +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 new file mode 100644 index 0000000000000000000000000000000000000000..06ae832b851a9a36af05257a13d4b81c8020b4da GIT binary patch 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 new file mode 100644 index 000000000..2913a73b7 --- /dev/null +++ b/docs/build/html/classmlx_1_1core_1_1_stop_gradient.html @@ -0,0 +1,382 @@ + + + + + + + +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 new file mode 100644 index 0000000000000000000000000000000000000000..082cc974a4636d84354974c7330b916159b316d1 GIT binary patch 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 literal 0 HcmV?d00001 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 new file mode 100644 index 000000000..b6f161513 --- /dev/null +++ b/docs/build/html/classmlx_1_1core_1_1_subtract-members.html @@ -0,0 +1,115 @@ + + + + + + + +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 new file mode 100644 index 000000000..d41645a17 --- /dev/null +++ b/docs/build/html/classmlx_1_1core_1_1_subtract.html @@ -0,0 +1,463 @@ + + + + + + + +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 new file mode 100644 index 0000000000000000000000000000000000000000..9a227b3b310114e9007a93c332bf6a8201ca50a1 GIT binary patch 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 literal 0 HcmV?d00001 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 new file mode 100644 index 000000000..92188e869 --- /dev/null +++ b/docs/build/html/classmlx_1_1core_1_1_tan-members.html @@ -0,0 +1,115 @@ + + + + + + + +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 new file mode 100644 index 000000000..b8be27324 --- /dev/null +++ b/docs/build/html/classmlx_1_1core_1_1_tan.html @@ -0,0 +1,463 @@ + + + + + + + +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 new file mode 100644 index 0000000000000000000000000000000000000000..613c47aec160ab22a445a9fd7be7f45f490b37d1 GIT binary patch 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 new file mode 100644 index 000000000..d89fd4ce7 --- /dev/null +++ b/docs/build/html/classmlx_1_1core_1_1_tanh.html @@ -0,0 +1,463 @@ + + + + + + + +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 new file mode 100644 index 0000000000000000000000000000000000000000..8e330c32fba7d8c3f5289e90c42b1130d81805b1 GIT binary patch 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 new file mode 100644 index 000000000..839676ac3 --- /dev/null +++ b/docs/build/html/classmlx_1_1core_1_1_transpose.html @@ -0,0 +1,437 @@ + + + + + + + +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 new file mode 100644 index 0000000000000000000000000000000000000000..77c3b22881f393c2459b0d6d2f2a2bc43e59bdbd GIT binary patch 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 literal 0 HcmV?d00001 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 new file mode 100644 index 000000000..494b399d9 --- /dev/null +++ b/docs/build/html/classmlx_1_1core_1_1_unary_primitive-members.html @@ -0,0 +1,114 @@ + + + + + + + +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 new file mode 100644 index 000000000..5bd92767d --- /dev/null +++ b/docs/build/html/classmlx_1_1core_1_1_unary_primitive.html @@ -0,0 +1,535 @@ + + + + + + + +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::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::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::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 new file mode 100644 index 0000000000000000000000000000000000000000..a0b604e925d5d1b675cf74792168a7805a83a829 GIT binary patch literal 32689 zcmdUYeO!`f`*$x}t~K-CTDe}`yT8rS-hE4`wdKkwzMB@Z+R~*dnyHBbZLM5$<+fIo zh*YKss8pn=h_uXHL!lBPLnJdJFGNzhd_jTdyZ~RicR#u|4J?NW#N>Hk#(Kh~|X6P!jE|?jnTWfEAQb2wiKj@WStBhbiiQSe#RF+yL|PL7QF>f=~wm>mLV zqkc8ioXM|Kg+JE!(Yn!3ckdY8hbeaw(xYHqiInx*wz5Uce>~dr2um9Kj?eh+T7vhq zwTA>Q>o#7fKYwr9_uK4$ed+j$aOk6+LmdM_w5}4e}!&$%CHx*`=G!eA}xlK&hBdY^No%T zAGz`O-cL9kZAZp#&-M1v4pix@hgHwl4H@*QdE|ngP?nKhxIj7~&S4lm431ig(Sw5KPc0@?G}`>DE2Er_lFl z4RNW}M)vm6@6wr$=pG~7DGxFut3Yli>m5%SB;em!Ht1yZDKa5{H`^FN_Gg;GIyndb zFOR!BLLBN>)&@Yd2eVNvucSSW z64}>xk7T&pdoSfM-DZa2H1#FUtW7+{KKD)S0a!_UdA@{&QZbq#PnEwWYi)_9H+tAt z^CeSQh$6+9mjtMuaCg9`(k`Nw%*`f-5Sg1I6!nn;!zVF0TOI!;^KJgsk<$Q237*si zrI&>hFRXx5S9ucAy2Qp5c?(gU!{We^QkI$bAI}K*u)B=en7l;wKZmdn=!?#sTJ&xh zbNc(>5&U0&+%-w9uE_P(k}wq`n7!rGinxomhvee2P#l!jIQ$g$1umoUsA5G?xRE)# z=eq-^`F-{bom#oJ=RoZRlb5FwT^K=RNiLY)s!4M2QpNB)&$Kc%t@^Y2)?hYCad)7% zpWoYis_P3`?5D81v{BMSukTi(we<(WjBRBEVMm(i7sG*r zZOwDT$k1R2=4;>M+_vMoZx6K6mZ z!X`Mx!Vu$r>00tf>#mgxHn45>TM*)Q590G!rrXZJILDJMgZkdI4Rn(_OkL?x0pX%w zIBvF6hdc!9V2=}>i(kFuHxe@QYVgd9pRU_@F?i|;09#MqYn&~ecmGb$^7O97N5OwCaZ#FAbdbcAxU>N8<+FcPG^{}V zKzOw90KYkHUWZl+_YBXL`|%X9g`s3ZefWO(m z?>pGp^O0BPk6<%rR6xrFR|w$9Il+Jb9TX=cx6g6$Wrm%caCK97(YGRtuH=6+WGJcI z$qWQQZ1e(^F?3W@P39@KV=$b?2EC$&L|E7`i|D=%yt1)+ z%qxde)=RM)dyxpKsUS29iV8UYgJp+BSlq~PQToWM0gWlwTlsxiyHgdaONXZQJUA(3 zkvG4H#3tUJ-$R@v{_Sh7T8#Z|09{!Bg~0Y7gXRAk?HU7-Xs0{Tp(%8&jHU04lV#ec zC!Q6TVkm@JX*WDXSnR*A^x)oWArFKFgdg6qnD{-!#E+z`H+cPq&&|UH8H-hDwmOTu zw|eD{N3P{f7}fdqHU>c$EQuM&dbOIAxse#T(WH}R*LPgPv(Rgw#$|f2BhU@d-J^ud zZ6zq^a18vYqAHp#Z`%P4|9oX9+s|l^#6scoMB%mWgD7LH?xy~jEP;G$#*9nxl0dfU zqZe&@;te1T#E}L~<6lLu+X#Ro>;H>CK|Gex5{*AOgnd1b{SSQpg-=PHl;(YuBSB|` z1M^O}-@cl5(C9w$FKBkp+If^f#&CwxzdoSR1!^r4b#?!i^C!!}@CJ12+uK@T+=+;B ztDTo0rTNk%EK^%{6TlqyY6Nqfj=0B&5dH>9P7xZiNZrczL+K^*c{o@-jysAcEZp@u zO~%s1{FNhrL@0|+!86^^p}_55Evj?li4!0=!ds@t+x1hCX4#42u2fy&)AE@5o)1MWSoC~=Vr@=q2 zdYVSnetb!Rz>j$g>cxfP4 zYLp#FY&$V#+v_K6`$!!(DpmPLh9x12?_B|RWq(=$(JH0#hR36K`NkQH&f({D!D2Ul zxr{|lo$wp~7LBH+7x4`OUZkS>8xLYAu1v~Ot!v|VIeC&_1J3#tFA=tEk_$=h9#ucr zYOc5RJ8km${*4-C41cyZ4I&JT{@6+pIn6WcxuY*cNl}aba2JS)F7WReePTX|znNI` zoD%3XH@m)$iMn%+t?ej{Hoi^u%X#%8H%gGO=5a%OvLKwihA5{X$jE}Dh0kMtZ0XA~ zNZOC{<}vUL^{FVB!}>?6X+v6L8Rz{XBXfEbb9(Uq7Z{BIbuGr{MCVYz^q$~DQ84jE zWNLT^+5{J^Pk)1vTXVlRKUfJ&Bh!8`arlWe#KEiupk(Ve{Z$w8)sObL+wb^FG6#Ni zcUaP`kRK5Z1!F#KDXxzJHhtA<(=oUh{m}l7R`Mz#Ib1TF__4Zh6P6d{xPYOy^CQa| zPZ8F0)h>U*iltCXkycV@AbJN|m)vxF@{&KU3^87I$dl!edo&dWYB#?Qe5(;#kaYhb z|Ae}QJdl_#oR+H!kWkxC=u>@RD#;t*z)8q&!eLKgNU{onBniFm1URME`4}Gtv)kjV z(nTqZP@XXjczwbLxmjdYaT2ULo&?e>Z{u~da-4S z^_!z>7s%sb_m*@bAWjA?a8U1u-!kU7y^{@T1c12BH7_O+6K_*AZBzvyA#&hE$54=3 zAs^Hf8$K@zS1T?F_IO?P$}|}6wvayo-sMLCQ2fPu3luEwIbz7__DW`CV|8B3{Q0fJ zo#`^2p-kFB9z3T=sHE;oWR%BBFdpCFm=Wm-%MA7V`{QHb{Ek^kRy?lv(^n8k2C51J zM;ArcJug?CF6QNsKe8>q(Tc@sJmpeI+bxb;ny9ehl*Q2S41kDC~<>^J95{W2rQRSH{j*z}cloH^;Z_5I^b&Qoh zB9P)1IsUpyt@wQ}$>Q$U3;-vyUtgjjvIY$eAh4#d@o=(-YPwDh7m1>Xj_L5{GX5!o z@h+dFco1E#WVF|L$yzHvux&^B_-UxwfZNy`&>P!+lD^WCgl@p5;7gp!WeU%7g3#f@ z7@Dbay&?DXBD;%A@b0*KMcR2`x`B9bHmIbX3q$FEe^d>0vd$U41^h%EJ^WRf^FIO4 z6r}`?A(Q}ubP(S(+y>Z^7VAmb0lj+vH?T3M{%vCxxT~m7SPInlhQB%<(h@4YPn@OI z6!@S!ej%E^$)rFI#2W}1uv6@NxF#`UPipsvq`|o|ybC-d;qs!L!ZQB|uE~tC5icoY z#7n6w?x{CBOg=_s9aRM4wq^e37Q^UQ=QxqeQi>$|A<7#Uovt$tIU=Wi@-xs8%l}87~vIG38$~h7Wes z1hfp>_<~sd+D8X>d8N0~oSyedaWfoy!O_^~o`Fz_;#o8${u_oWCRyGnL7@FNmG{dP z(UIcbF3wd$bEuFbrLgt$9~-o3iJmGqeoK|v+jc4n#|VQelP7saB112*D@io`VdKJ@ z_g^-;UoPs6GM+(5UP`uYLlmr(=zu5j4c)1knYS5|IGOO@SiFgSn4%kS64`(}<*IxX z%Y4aV|FvBz5ArM!BfbR)v_X9GIYJja(SjJ!PZ)e&+tAEH!+^;VSwh28BsAa;pO%Vt zfsfxroY7%V#2IN%X-i!zpeqq2j`%taPc~yUUF%l+X}XQYox~T2p6{7XcU#WFJdfmB z>mKpFF8#a9>H-0si>t9;5(Xvu-DP&-$<6;cbE?q#E@d8g~~I_B_X1b?yMm08L}uJYmm@6^b3PWRU_$$3}h%3F`OtYk#L z;X|WRv2LpB&cYI*Dc-H^u$b4{`#990@9UMI$KeWsWp9=bD4`X4uaap{kVJ3 z!%8^HM}ehZUd@lL+i85#_z4W-j0x9_kv@&J{@wcA{UeLTm^{f~S1l&Ul2s5l`Lwo=hIWb0iu6&0WLdu0MQoUnG)_G6Nu<&PF!KBCzx`dA!bH+{WoRy>VC--;WJyARK1 z<&MByg6q|@6#$3&u!Ti+sLN7LFdg?JItbTJ;W;OsJ|IgNx8B5Y>urKsxp+STRF8@c zw^I1^KJ@b3d(g0V1iZ<~7vRwV6`rjf9$KC3rn!-j5xIos_^Ubs!ePo5fmGmF!S5jK z3wu0Y8Xun?;=tmp%_4?6Jy*g`=JH_tO>^lJ2_$TFSyyXrqV}LUmxx_~m95b01J8!NiKJG~79p*c>% zJb-TY9UGSBoo}xM?o77-dk}$8%?b2Kw@}9y$vW^hMT;y#nr$Nt=M*rfP;LGpn9WUC zWUlw06DLy}ihvI4y1(6;lau{B$=*XN#@1oWY0HG~un9cXHXmcU1Hw_?dXg4bw`8Zd zov&^8=UoPTMg>R`F4^|Oy$Ta(zI5Ra!_czPV}{zf#tK^rU~ut)3ZHzLqQW33nVzPt zM)I)4SLB~j?!?z=oOsR@!(xOpGLYJpC)`rZSMqmC#AJ5st(JKbF3~d_4iJKfglE5G zMD<2MRG&J^$%TZaQkDbtrrGWukfbfCKCv4ppL82y5#`gqMUoT6T-?k6euNSI6Jhlt zq?mZJQwxxbEX%NPL1!3Ub20{QOIs5UsxAA&-N+{ak)WFo4d*<|gdF9%rA&wH`dz9} zy4C69C~PVA0Z0s>zW7uCbCFQO;eb&&v$BtJoW1 z2=~KTi#r%fFGqfpd7Op9{X?ZNMdbEu zGsMwpEtgu?7A(ciV%6Qt4kEu7U1dkZbCs`Tc&D27ufx%Ti7X6NmZE4bT?#}Akv=2- zp*WUQ6(qs^7!L^(Y=!YLxe}I*kEl6RLQ>gES%^yk6)TCQW{8M+v_n4-A_L03Wpcyv zIGK6JKN475L2HUqoOVF{g+x){i2FAK6u7x%2=)hrU~$J^DQ^S(vR&Ah(I-JOBO?<1C=0&c~Q;Ef#5>uOVGgPgOxi=T^nWY8BkJ<0B&=F83f(!Eu zR}PK(+Z+VO-BKgu#lzaa_X&cCS90?a<0X`}C*ii>!=H_jXI5yqrx$nnq^2CmnQ%ZA zF-f&HshBcF?R2j-wUPAK>F?w?fZAtac$0Z_6XF;4p6~*G0b0G+EoIQ7=fH-UKFZ7* z<5h2;7*sHvO#jTdC#7TAfx70j##LN^O%#_~bjf@__!ufCTq5Xot<@}Rf@BUCL4}|_ z5Z4Z@R{v;CVL@)_L?u?T&a%q7a@h{x`$uYRbQpimUvN`bF0fzKB>R28rfUBYH0D{v zy-_)~>2ZBY0`Lee;~wF-x5{hXaZr{hF0_eemNqs8(1iK7 zFoT@LU}8C_>e;+PPK9B>;ZYh;54j6I^C7<}j)C`2AEuVr9B_gKb>r_ruciVaqb~0~ zE8ylHDwRWBapi_@odBx>;5NdlWDM=`to{s_=!O0gW}=Qp!K#5pWi|J~_XM;%qG5Ii zzIc)jc#4*%a*GhU>kNvAXSo4Jh`!?uv-54bug?c3OwLL9!{MAm%*-BnHj)~PBDvk_zeV2b$fNV+l z6wSU7E(5G;i75x1s1S4b@Jwd*2M_Kfc%6B(K-~js(^UUX{T=ubIi_Mv3miqqAs1p# zskH_jGd;3y0nj9(5|Lt$jYIvyV}-LkGbTP4N+B))`LvGi0jSe1Yx$X+@>2NIcWnMt zpz_NF#oKhBWu|8lf!KkC()u^GPggH(dQB3Aq}8(yqH3b^U9nF0BFk!^oTpZn2wC0N z3C1)fZ5ePBVSWleH%+;}426kZ8nc5L7GZU$P3AaT>daVV$rz{r15|gHh6@yLe7ET; z$eQQ;)nDQ9Gz)wImPOHGMYHY?ujcR6oyCE88X$OuT?6p8B+L@8h}jc0exz76MKvv7 zfmC7mXm^T|p5}%sl(Nui3rT$K9yO-Wl=rK1QTNxg(h3SKq(y?C(F^W#5*|*kZ0+@k z0X7T#1%`K3c@30l6o79AhP8_mD8Xfsjiok?eUU}$rmQfa&)QJc@^?XLrD$RWi7QN- z0ZhfcXo(YVQy8X7+`pnz@F7@WR=(Jy;D66N`oXvOA_3X<`Ktygx;e(*Iab_F0wj(M;ek zzhZX)<7i6?0yzI`E6zXNGE{^1IS;Z}!(H!0uYDHNV**x_67|4B`0~p@oFG<4l&IaV z3yI-YiImMnf-)<;39_is@C$xzHG+V0dBXBE-RMjvtM2Yg$@2bUv?)`V5m`UUe5y=QFb6^qa}QQR!hsnbhNfM&|=eNP9uLr`tXzp zx0udPT1Ym_gNWt9oU>p(TmI~N{)1sdkM5l9IJ3s2tM^2IkG@HhL0MD;Yo>=E{%BA+ zzjn?~ko!cJN8ML#ojlPs5kEDV0iw^W3dk&YkwKq$o1$gAd7!8rv8WD}qtI>W*dLb$ zXA2opmZ-RoN3A=LqIvhmWCH<34l{es-2*H2UXoUzy;+}V1SFX!od zw#cNja#?KpZb502Q=c56TJ#8ls^u?Q-hOm2{FyE>k_J-cTtsnWgz1Z#K{?$>p#dgcgLk5-Mw7#TB*BERy{NB$G_^hK}=W=trIlP_aII;w^-Oxyy zG5E^IR{bJ0YnB%T$JyZ(7=$axc(bZ*C`PK@#dTFY34{a2Djn_CoQp&H8NRZbd;>nc zxDU6{{!%=q8Tgw%s_bh|t-H&R;k3d@=!*{fIukww_L>ANu^iFd+ zt?f@IzKLOoapjop$D@@D!#7T=*lG`Iq<4uX(XqIX?dJj{NT0&j_k;7WwA783#(+Bw z-X*5{uv5z3uagb?} z+JUA8`xn#piMOfBr{~%D^qPcJgU7R5=ZnIz?#G4X7Empqf>vJ-lYE)^FynA5c_ia~ z3+vdH@1%6~=PR5TIb7cYp}+r3)XxSD+Vt-mP?w?_mU|k**lKq92#rfP!9{5G-n0&{ zRk4(CDHpI0_}EpUsV$5Ui7JtC7%pOW!#8@=k-@5=FuC?is|=067>f>-YY1>Yo{7$! z9%)g>9vv}ozP?ARAPoPdk3TPE=*CM?mMtEj)wGOn3LX{wJfC5PFToUEW5O@z61#bp&heC@K27 zI3x1C@ITZ=8LRfEZ2`)s@1tP17x|t^y1FTvv3!YSEYVBK2^>%wE0?;3IQU*IR2*3O z!IJTAz(8EK(iBRp%)Maxtk$Z@nB9jY+57#oTZ;_`=O!2* z8jU)I+%aRnwVm}di>lJlj#-6;ZuJFv3e zL(+tx8)_+~P;*H`=Q`&*c~#UF6F4}3V^Ok|AD;IJDIay^%@t|)cRznD>kJiY(q5|az$kOF;5aX%Qn)rYLameVE5$c?9^?j#w0yz6q)#L`E(zUvOTzU$RiX~FU4 zszX`Aa5s5|OgFL|aqrRdKvP;qnTJbs_zA_`s=cC&7J+EMaCiU`*%Qx{hMdABqrkzZknOp^dBDx7Q*5TqjE-Y07624<)ejPo% zV9Y@}C%z)CSnqYg@Y##`Ie43*Lm5tC`%h`FfF%9L*h<7FoUC1f&2COKdy$TfhLku{EHfEem7tb^tm8shTLa}1 zo5oRgijmN50JRK9B&5|Yv1Q$cLADx(q4Cv=px9PuY13<3@0>3x5Mn{o zF}&}iVB>iQz`5=60jtz#(djcXrfFEqt7 z8RmY=f_JwCtQZzMmv44s-^_BSKGd&aQAs+4P2RB=j1-`04igw`Lq=Kj=n_`C3%s?* z4$A5NoiKoTYWA}=68KyFE|tD}S4|`-e9o7#aDT*&wLRv`w)FGmH9(UhxXM};42+-N#p0#M*zFFjt;m1j%81&(t^N)4_=@i2B zIY!BM$<<9dY6w{yvpGyRn8|eh-m)#9jGcqbK`dVA^JqgTOcEX(&;6_GhUTBnjpiNv z8LA1!#9vRihLJKZ>lLOMV_CnIk5-Moy%>UzY4a`+c$hN?nJQ=)=$O&3j3Q>&#KUI| z13FXfzjp57%=z<1swr(@nz~L?4KE&8W7!G=6BP;CoVAUwZnucsiRwL@VbwqB!YRrV z&OpvddNw|QMDw8WvBMpRBKLy&s1uX%TM^1cp~tp^@c52+iz91mf=k-cG@^L4uDfmc z;ej~Q8?sd4SwqgF>uZsr8^zT?c7b(#qV83?GYYh!!tRJk_{33oUEoWJ%5EK)2lwfh z!+U$Ok`2NTE2&6QS=d~2! zHQzfcWxp5bx3M&Cu?rTHmZUxkH&)~PeU{7*c;D}&KC~8*?Y3rk*39LjVo9puw)sZq zK9#=_R*`ot8j};m|JkBTQrF3@IjINS=wk)%^m6>Sj=9mxKVqrEA~#_>-Uak0F{K(q7%z}e+N3# zHTiEN60ap`TYP9})2ht-q09(w%If_|f)#BG7{yw{NRwCs%3-OOS0uQL{ybOCH^x_u zhTPu8Jr#xB#|d;o=Zuu|XwF8JEw?v(Wo99>wfARO=bD|}`XfY`F( z%A&fm*BSCB$jkz_C)(7f{aUX~Zu>=+OOEG81BpSF$0rEMvalzg;DuhCmibr;^PxhLH|%($VfXFf%75+1uNhhqidXdf zmZM|k8i0&C(VJSqQ`RViM@8r(t;)k$Q=o)wVl z#jJDE+Z0tNA`}57pI$fgMrz%us8mJLB62&^qybBsbe1xC#eX3@DAq9wMf%e! zFcLz;bS?ssc1A)n^x459wLiNR@P^6_Rmc#OO6s0;P+l{wYb%Ms)TC?!$G)Jsr}g#K zI~KPevh@XITl)g~>v-p9-LG)8H7**oIvu)G3N9&H)Y_iiy_oQ9@L>yLcrb!NJ~a{~hCvjsu) zUew%SLmH~;4*C-lXwz!~ZF(mv-u20JC6}~Tl70dcjzEVhcV9SCHyV*Yvxj$gxB@{m zinL%*d0wE$!i{5c=&>HXTAec_nzIp1A&j@R1n>_n|HV#_kkS{7J~vjfI9UA#T~2f9 z@7^lMbwze#&V?Iusd~`r%!{eT_<<^GS7Mz6Jdu2Ak^pb25-XNTkb8&H-H9}EUj|6c z6)TUEfoLoW$fK*8u62KXbZ!1Bx8lZKj7|lS;W`tqIzis)#IMDGDGffb(q$<9saw zy`~mq@xHAAeGbLJPWED?hV*#DCO5wRDz-fxLW-w7_u#HzdZeqR^DZ&(1}~(ga>**H z?BwXc6{wzM1__qyf*(betpFlY)nD58itg>IG=A9ijMKPm0LL;OvBB_h{l7)3B_2KTJAwV=Ht$KKp$>_rb;~Jw0klSd26vyp( z|I!U_Nj>mGX$5)mdAv+VNu=svU3}hcKd9xLM!?figj$2UX%^Hij7K_VXeI@R;d)j7 zyeH930aEuXOL)Dsh6s*4(BeTfTU1R+`-Naz?qNfeFGgRkseE%&WTT2)ErOxQlBMU z>-+9Ov)D-pC_Q=bO34>pccZp;dZ=)dr)hGj`S%qOQ?O+ zziOpfWb4=<@3RVq+b^)Eg8^iN)Yj#eA$#0Ie;8CDV6@? zs&j_V5xM*R$#QoQZg1-I>%W-K0GSN7IcjNJ<#x8*ME#zH4u$ODQU8OU_X8!Q8M0WL z)9{C@t&sA`3PKUeh)<4&&!X@)#KS$bywUUN$Dla9eY`j=Z!xd`I^{4lkN6tU$nak> zw}7;^TiPCV1F2o@4XxdZF7KI+3{(MOky-1n+UXHYcWovWW6m#gT?1sWMqfk+n;!gN zXeS=DrY}0UEaQQ)e2H6W31bf6z3dRqGv>Co@<2YlX4k$g1$NQC%XQQ=xl>wlhr#@4 zFxYLMt~tsM`@Ffdy{f!d*c)R$df@)PBGd}IInWVtM#cRCVVk>fzj0)N`L%v)Hl+%b zm=_Dr$~3%3Y16AW3yjJ4%IWKE<5D{cI1Zw%nuiHH7U6NE!{s~)z(SoUvqt!5K%;!m z&=6ePvoo=3`3(xCZTN(!a6P)c`*g!{;ao#17&i$J-Q>aF6K_+L&gXy$LdckiP*1Fzam?`mr6vGb1%UnaiE(PT~YZ0+>bEoE^C`<4LuAp|q$m$}-9Mx#b z5Gu3v|d87g2{ifzR& zhpQT}%2L3xN3WEqeq^5o*>+&gKBoW>m6l2TITZvA z+1&VG!$yz}q1>kPrn67#W83Q7ij7)Ekg(PNfk8bLh^`3Qq9E)gE`^3VL zt{GRN*iJ!iK(u5>d>c-9&x3Qzy;bzq%FGps0n3CE+^=eR*P~6q+;f1r7r$iYo_pTv zazIDlqczfDVD1Sm&tM-=2`cY+n(`qiBSuY()EM&WT^pCy(ocmtLHhfObpyc2M8w{^ zdE4`MWQ7phbO=v8w)_Jpmv7leULngyCML%E{b_jIM)dNewqeTO9TV%>CMLF*%5t1y zJ#!uBMFS4vyYYzJhGkRKK-0lXn5cU9R~%dnl-9*|E0&!%Ttf1$5DaGt_|EQDWrz9i z7k6QbYGu}rodACHK`@0-n6Sw7v>=$Bli-oJBobiu+Y^`_McXjAt|tqqR~(lH*|J?r zM`h~?ZwGHDCaR^e2`D)%(`6c>1Q()B8(A1D0;=ja?-*+ajvupgP{n0TbfWDmi4bKl zWetEPwn+b?o`B}Z(*HS|B^{+S2(MZlOI}z=B1(5IQ z1y?Qo61lqEkwpWankVO-N8OkGc{>_ zHb!o89cxFi62YJyW&cj#vfal z0?0|+cVO1ItHDbTrGS!5$=;zSz)(poNgZeB#srT$h~BEsuh2SjBrxrL@f-aRXXukf5zsHU|iA&>NZ--HrvDV4GR&$Nc z5haVV42UKsOg;#by1&X>AN34dg?Z&Gb*=|j~Of4Z>~5F+9(|-88Db; zG`S&zrxBeLd58NQhj=e#CWMT@a|GQ24tQ@|Mt?QJ^{yQ~o4Jj6a_EYOzoe*r@7-vN z=;*Vg8hG?q{Yi0WVg$I8U|xxErR$fL!CpvP)&3`GkEHNcuKEwcdT;kE_Ng>wPehdQ zQw^@WZ+AHu2;z1|g1_$V?p<}?^r_8D(8s*Q?pS!N)has04ah}@eGI{5%y>0aYv`d> zM`fQze(ubYF!SMpSHc8f)&dziGCvX~fdF?||9+tX^x2JHAY#i$r)b0F?|{)g-=Wbv zB!;L#GT`KHZ>ESrYvmF_KuZcU9hsztTyHY8r+A0N;Vd?s2)ZK*ezXp`JLsM2nc|(i z6+Q(j68Pa5q!+81RFo9g9%1#V_`QKO-u21Tg~FUG=hueHaFqa77kIGi#yEMkw(@+`Cfu6 z9B^`=#v*wUHXRu3sfA7wm%y*AvmoUr1ygiZe@wqn7GVHA{u53ZoejC1GGsz}>N9aO zd9h9Mm1C8BHOF5DHD%`b7<@_;Tr@%Psmg(y`1fYYDId{tkz02_L|dMi2~S7rBzuP* zfp~`c&f_gwu{v0{b}z>=`F^^$l31YPidYhG&&kQ#mRXo@;~B28VrQ|l#4(iK%Z-6g z`RX?UDniktY7tT5~4j-KZ*gVWS+f3>_zSKN@yrY_@0lH3A z(Mv`y%>xQf#HBJ6(Si`95Kp|nc2wm>UH~WcfyCheW2<$TSq|>W{=wZ>fi1oTJ3g9F za$?2HF>PDes8-)*XoYGYG7Y4avsO4Peof}|DU3zzkxJE_2qcd8l}N08B|5+*)ok%1ek zkT|#!>!DKuH|1a702*1h=6|eBMK0WOyWyHH@l}zIidq$C6i$HWDU+UTv{-9XBCyue z&I|Z0m=r;s01N7t+S2y^W@H*4)woSh#eeW5M-*Hs#RLPZRkdX;?z4yCM+2LnedBs> zK)ZpPqYUlw$)4;8PE#hI-u??1%#Mt)SXlj}9gICBot@-fyLiJ-MHM2s=1dE-QPYS= zWS{f}ugfyQ0OKO-M*RB?4pWq#e#`1-WBcGP=Mo<1c1fomRrPu<1OJhc;#&uQh=RtM zpsuP;rw|H*hC!PblV-qo{`%7!G!`PI70(o^n4;|2%e~A(KL>0ONGozIX+=Vbx`yq{ zBH_SAJ8bt3S}U3??WPRPv4LN*ZE#a`jw&#HdJuMfePr#8d+~7I$R|+U0;dpF_@R~` zvh-e@**WtcrS0z{&;lfhVZ{3{WAhY!D;Q@F>>UiVXXk>ME4lvl5eVa^IQqfuJ3#r6 zJigA&Rhcb2;a&7Eh->#h6R%ewf^e*Or>l4t=#a>s7RzLniXS1 zL&j5z$<8>6`=T?}OlNm}0a%EiLDdSR+%Hwt3YmB{2TZ&Ig+K!+1e)6ZZ-u~u`cq)kMf0M|G$TvG8=Erk_n$F> zq$E~T1qOe5O$u=8lj*0OWX{OgE3!hg*f|h+Z6P`t@w=*rE66|VX=>iNxrxXHBjdEqP?|Ao zzbUS^ZZ{|0rtVWjN4bOoUJO2F^}YB>h1aRu@+3ssDM99tVy@KBPrXc}De_GNZY$up zAs>MT`JkRtqje9qOk^H#A{XRYNSz%L-xj85G}>Q3?1Ljmn+jSVj)?mMsI1Qg)sYQAC45H-98Gtk_vSFmjX+^g@Jz1O9f&bwU+hhrqJltAtCOKO zD+itW+X}%DLB`%8EdrqvJw98q0yOc6#<|NSv_zk1;TvZhd}wDdWZ8(31kK)SQHHz= zgdwppQqdd{-<$0gy0}jE^CiHyDL2!a2eU;#gSl5e^j1yL!`@Lr>5}n#UNB=mrw;}1 z?|NDqja))Es0~Lq42xw^#PrA@Vw;`i;=gT4Ck3TqO4sB5Xj&pw_!i@Qi`%6r3Xqk{ zL)fOJFRt{&+Z1&`PTN2ipfbrey(qGF}GJ)uB{LpY9hTUb41#vM2;P)(}!Kg@|8FX>&B5o zGOt3zXHMSMQmoN3SxY@JSqseD3Qz~|PJ;=Y02)miN;U~%Pf_Cib3nXzA8qla;W<8F zs*dD<`Y2#CM zC4qxLc`q}?3%Lscj=OB!6-qCarZXvS*EKWxd1HfOtgQ*r9GPDy;N8b2z!|8of=*6} z<>~{=IEaINQTbw8;)<7WeBo^14_fRQxeyt!JQ3Q5qkJ$}>mR1sb6wsse7b?6sFuwP zbvMS0UDy}O3*kELA?>=Ys3bM@>;g?m>{z(1V^%V9@en)Ghb)HEw;MxqKuI|qYLPX} zSXqd|o-xm<8szLYPLuhMRg!EyAa$U&y;X7kBV7 zPx#j7 z;oKgB_M27tLlNn1M{xzE*0B%4>`3-uML5^s3WH(pm{SDLuvnMB7F#bSV4B*jv5*Uf zAPG@cPoaGEm4_s=?*r&fqz{_0piIl@c-&DU{qDxOo7v zW~vJSZw>2;fRo6j%kHMszy~_;g)emd3ZlEz?n^QG7%-cPB%L-gAhD_5bxHISx;KJB y<2<-;*fv4N>o}e)o&~-Y2h2A6UwyE_Y4$KWZRWd&Fw?-VtzQIuUjEtFKl~rsN4LfR literal 0 HcmV?d00001 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 new file mode 100644 index 000000000..97eece0ca --- /dev/null +++ b/docs/build/html/classmlx_1_1core_1_1_uniform-members.html @@ -0,0 +1,115 @@ + + + + + + + +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 new file mode 100644 index 000000000..45442f1a6 --- /dev/null +++ b/docs/build/html/classmlx_1_1core_1_1_uniform.html @@ -0,0 +1,352 @@ + + + + + + + +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 new file mode 100644 index 0000000000000000000000000000000000000000..1fe539076e6fc06a10e3b315eb56c94130e41238 GIT binary patch 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 literal 0 HcmV?d00001 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 new file mode 100644 index 000000000..53d806c58 --- /dev/null +++ b/docs/build/html/classmlx_1_1core_1_1_view-members.html @@ -0,0 +1,115 @@ + + + + + + + +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 new file mode 100644 index 000000000..e85cb3c95 --- /dev/null +++ b/docs/build/html/classmlx_1_1core_1_1_view.html @@ -0,0 +1,356 @@ + + + + + + + +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 new file mode 100644 index 0000000000000000000000000000000000000000..919b9f6287d88048790792b33f16f1429671e58c GIT binary patch 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
~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 new file mode 100644 index 000000000..4d6d58379 --- /dev/null +++ b/docs/build/html/classmlx_1_1core_1_1allocator_1_1_allocator.html @@ -0,0 +1,338 @@ + + + + + + + +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
 
 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
+
+ +
+
+
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 new file mode 100644 index 0000000000000000000000000000000000000000..a57dd94719d8f701ff258f2887d9d6d2ee95036f GIT binary patch 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 literal 0 HcmV?d00001 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 new file mode 100644 index 000000000..e3bb6d0e3 --- /dev/null +++ b/docs/build/html/classmlx_1_1core_1_1allocator_1_1_buffer-members.html @@ -0,0 +1,94 @@ + + + + + + + +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 new file mode 100644 index 000000000..263092690 --- /dev/null +++ b/docs/build/html/classmlx_1_1core_1_1allocator_1_1_buffer.html @@ -0,0 +1,201 @@ + + + + + + + +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 new file mode 100644 index 000000000..7a70d6422 --- /dev/null +++ b/docs/build/html/classmlx_1_1core_1_1allocator_1_1_common_allocator-members.html @@ -0,0 +1,99 @@ + + + + + + + +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
~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 new file mode 100644 index 000000000..8d6363adb --- /dev/null +++ b/docs/build/html/classmlx_1_1core_1_1allocator_1_1_common_allocator.html @@ -0,0 +1,219 @@ + + + + + + + +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
 
- 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.

+ +
+
+

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 new file mode 100644 index 0000000000000000000000000000000000000000..8b609c844a056c54cc34351188ec30309feafcae GIT binary patch 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
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 new file mode 100644 index 000000000..25f218b83 --- /dev/null +++ b/docs/build/html/classmlx_1_1core_1_1array.html @@ -0,0 +1,2000 @@ + + + + + + + +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
 
std::shared_ptr< Datadata_shared_ptr () const
 
template<typename T >
T * data ()
 
template<typename T >
const T * data () const
 
bool is_available () const
 
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
+
+ +
+
+ +

◆ 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.

+ +
+
+ +

◆ 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()

+ +
+
+ + + + + +
+ + + + + + + +
const 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 new file mode 100644 index 000000000..e12e95fba --- /dev/null +++ b/docs/build/html/classmlx_1_1core_1_1distributed_1_1_all_gather-members.html @@ -0,0 +1,110 @@ + + + + + + + +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(Group group)mlx::core::distributed::AllGatherinline
DEFINE_PRINT(AllGather)mlx::core::distributed::AllGather
device()mlx::core::Primitiveinline
DistPrimitive(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::DistPrimitiveinlinevirtual
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 new file mode 100644 index 000000000..f8dad7500 --- /dev/null +++ b/docs/build/html/classmlx_1_1core_1_1distributed_1_1_all_gather.html @@ -0,0 +1,353 @@ + + + + + + + +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 (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.
 
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 (Group group)
 
void eval_gpu (const std::vector< array > &inputs, std::vector< array > &outputs) override
 
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 (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.

+ +
+
+ +

◆ 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 new file mode 100644 index 0000000000000000000000000000000000000000..c26746b4f7379a296aa27607e96c4b44d62460da GIT binary patch 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 literal 0 HcmV?d00001 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 new file mode 100644 index 000000000..3085a0bb1 --- /dev/null +++ b/docs/build/html/classmlx_1_1core_1_1distributed_1_1_all_reduce-members.html @@ -0,0 +1,116 @@ + + + + + + + +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(Group group, ReduceType reduce_type)mlx::core::distributed::AllReduceinline
And enum valuemlx::core::distributed::AllReduce
device()mlx::core::Primitiveinline
DistPrimitive(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::DistPrimitiveinlinevirtual
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 new file mode 100644 index 000000000..47979c787 --- /dev/null +++ b/docs/build/html/classmlx_1_1core_1_1distributed_1_1_all_reduce.html @@ -0,0 +1,405 @@ + + + + + + + +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 (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.
 
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 (Group group)
 
void eval_gpu (const std::vector< array > &inputs, std::vector< array > &outputs) override
 
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 (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.

+ +
+
+ +

◆ 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 new file mode 100644 index 0000000000000000000000000000000000000000..5546be5c94c4c16c66956ba470a8bbb405f97d13 GIT binary patch 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 literal 0 HcmV?d00001 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 new file mode 100644 index 000000000..24c568c5b --- /dev/null +++ b/docs/build/html/classmlx_1_1core_1_1distributed_1_1_dist_primitive-members.html @@ -0,0 +1,108 @@ + + + + + + + +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(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) overridemlx::core::distributed::DistPrimitiveinlinevirtual
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 new file mode 100644 index 000000000..299952efd --- /dev/null +++ b/docs/build/html/classmlx_1_1core_1_1distributed_1_1_dist_primitive.html @@ -0,0 +1,239 @@ + + + + + + + +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 + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 DistPrimitive (Group group)
 
void eval_gpu (const std::vector< array > &inputs, std::vector< array > &outputs) override
 
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 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 (Group group)
+
+inline
+
+ +
+
+

Member Function Documentation

+ +

◆ eval_gpu()

+ +
+
+ + + + + +
+ + + + + + + + + + + +
void mlx::core::distributed::DistPrimitive::eval_gpu (const std::vector< array > & inputs,
std::vector< array > & outputs )
+
+inlineoverridevirtual
+
+ +

Implements mlx::core::Primitive.

+ +
+
+ +

◆ 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 new file mode 100644 index 0000000000000000000000000000000000000000..d3fe21b05bdaa9bf072dc6aed7860acd5e6b6bd4 GIT binary patch literal 1477 zcmb_cX;4#F6n>FfidHmAM`a0?hKW%GYNYVk)XI|Q^2CrrDl%b@L0L?|05*a$4pAyg zOoE0`=n#U4$R-h@Ql|>R1mds_g(#pVM1qLYG)jV`Z|t9T+8>=x?~i-Wx!;{R_k7=( z?|c{>x@v{}3IG6BLBt>u0H8!j%=yF$*)@#~+mXW|Y(F{JVzD6MiK5#-o-$DaO={fRj}Gx%CRA>{R~ajmOxppXix3yi(-KJ}w@@xO4&?Iel%--ZrAWN( zGbpE$VRmS{JEg-y)NTegWjY)@IJQV72wGuHe8mJ|_(9-T-Sh2{YNH}z!8nD9D`YlE zmySk315p%}|H4}=KRTJ#?tWO+pzrg9opy7_t0PHw& z+fY#PG#Yo0;o^c6M5Cc*5r-qDz(GNzB^!`hl9|#XJ-j`0bknN{i*ZCiKF7Wf>YEA$ z>(I@$<(=z&eZku-||WEdyaVRq1v{p;xMhygib6o5zVUMC%*4h(@D1ig7*d) zhCKB2S4pW@+8w6!J2slniER=6C|Z);hzj5ny#0BtAsg!FdNZOIA~lA=b?BPv(vb@I zAWL;rcTsiATT6CA`8b>cXU+`FeV-qnlB;{E2xY;pw8=@nNb>Y2MB3!33AO9%p0vOlOweEFH_2k2ZOnR&&Lu{+7k3FyC0iIL{xj;%!JQP z>}Uh=jXax^45CU1jv;d_QT9Gwzm9Ef|-yL8R%PGkiU`ok!6lz z?t9}n4w~79Qjzgv3MT5bda>`zu-pu~%qYSCvaR3i-TV_RDb3fV4o*`p@ZVf_re8}f zmU+k-*y%>it|ILF21?PN%%J&iO4NUFhp>lNBy?XZ3+nKicgxwA?d%Z41)yL!=*HJE GXMYFu>a{We literal 0 HcmV?d00001 diff --git a/docs/build/html/classmlx_1_1core_1_1fast_1_1_custom-members.html b/docs/build/html/classmlx_1_1core_1_1fast_1_1_custom-members.html new file mode 100644 index 000000000..2acd0e4fb --- /dev/null +++ b/docs/build/html/classmlx_1_1core_1_1fast_1_1_custom-members.html @@ -0,0 +1,107 @@ + + + + + + + +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 new file mode 100644 index 000000000..35642a556 --- /dev/null +++ b/docs/build/html/classmlx_1_1core_1_1fast_1_1_custom.html @@ -0,0 +1,306 @@ + + + + + + + +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::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 new file mode 100644 index 0000000000000000000000000000000000000000..6d384f81c061b79bb2110491cefc4b5c09b618b1 GIT binary patch literal 2664 zcmd5;dsGuw8b@STnn}SQL>|!b3uWT~nk~ zFjA_55?vMSL=0BsErZEI+64>{!$Zu55RqpfA%p}nnb`?p|KZqk_Uu2q-?=k$=lk7z z=X=kW9}?teh1-lXGc&XD|Mc(?Gqc|*vH1ndwb-3q+L556X4v~O5zWh0^YFDD*T2Tm~xwkA&T3i*6Jg;uJX8rjgAll1&=YAw1dp*$4HAxHi;&JGJ>XCwM zi{x=`gW$GHyu94pT!Qy4rM0giNk-nH<@2~;q(9El+}ymenl76K7YBr6+qkz*$SRo( zq%L%#Qn?*71wPmXj_Ar5#tY+-? ztjNSEUGa=F_067Hfq%yU2_E^AlCiHd zmC`ybSE`7CqLIfl@y@25nSnA!&v?__4u#1dx)K4HHV~>xzaZh=znT|^E-Gt>PC>Mo zoEM2Lie_OCMJ>B2CkBb!CI3F5T1i^chCk)Icaa~}$oC^@^m% zqoxp2#!?BBI`6)?q^lJZy)=D;j9c5ue$QTbX)!*ov|^%vC0rmESRp;8k84AuiA=_e z>!!$HM{$*7J~WQft+1@Bnes~W+N34?@&prd825b9aHBG=)Q*5he|}mdPbM4X5$(P~ z7P$vzm@?A7j{wJeobFhH(__jvE~K~J>Z?N&IM%aythdnzg=|dH&sQW3r(zl!7%Kv; zGUw|2{tfusxJ`{~jRj$iu=*U9S-H8jE3xlW7P#4%ROY3{Cfycj^EoC?7T`7i2i2{xeCr#(-Z{j5*YRx0|Cp(KSMFKJ zefXY$Lc93)U>F;eErPJj%+EyMUsN*}GY|zvQX+sk^ zP)ASJbpufnnI*ia)Mq1x4;+ate^av4JW^_;6Z`r~m$K#1(O2s#=o%j5pVVuHJ>^k4 zq5hPcU-%6DyR^tB24b01ePQg0y}o>=SRzf9B;Q|bT!&*2TSKUZ$nrs&n082%1swI@L?9kNwj^hzG+JntsNESf|oORsc0gH5}#r@<+Thp>b;sIB7q# z6RsESt;6!h2_}hsH|Me(mNcg~U94o;?}gAncpVet_fI}1CAtb(r9Z0S@p*rGh zp%90@w5w~U2g%6ge+I1V?ZTAJa~)1&f|e*5dWgIV(Im z%9>>_RoWqw{iCyZhQYEfWq^uf&~+b?Yw0p}N^`*$BDYsurO(m3wqNyWjS1JC-mnOx zOeXYN9KNklC%*qjjf*YfaJVIVk{zKFHV_z*I$=R-M5|!XFkRRZ{=|EHB(xrw2`0eu zn?rlOpc_{b6YHZXo>~PIf0<9$dkA)oQ4%tA$3~}csD@Qk^u4?v01Uruz@ah@MM7_K zsabl?4bySIr)i&~2V`7oG@(~PcXO#hf^le%r6B8iQL3)QF|5;N*nL`NL1Z)=NSh~3D=f$!Lu)mouF(O1WA{5`BDm;5nz~}%jWx| z{1%~)u@qtb##!rNH%MDH4^8V|sHdZYou>U^*XtoH} ow4F{U-jB5qWyXRqyB8ttb-~@*k%(KwdO|aQ-=M<}4#s}-FS^1b`2YX_ literal 0 HcmV?d00001 diff --git a/docs/build/html/classmlx_1_1core_1_1fast_1_1_layer_norm-members.html b/docs/build/html/classmlx_1_1core_1_1fast_1_1_layer_norm-members.html new file mode 100644 index 000000000..7c29baf14 --- /dev/null +++ b/docs/build/html/classmlx_1_1core_1_1fast_1_1_layer_norm-members.html @@ -0,0 +1,109 @@ + + + + + + + +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 new file mode 100644 index 000000000..dd9db97ac --- /dev/null +++ b/docs/build/html/classmlx_1_1core_1_1fast_1_1_layer_norm.html @@ -0,0 +1,327 @@ + + + + + + + +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 new file mode 100644 index 0000000000000000000000000000000000000000..202a404d0d3ee549d25154cfcb6d4a2a78cd694a GIT binary patch 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 new file mode 100644 index 000000000..81a4b6e49 --- /dev/null +++ b/docs/build/html/classmlx_1_1core_1_1fast_1_1_layer_norm_v_j_p.html @@ -0,0 +1,284 @@ + + + + + + + +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 new file mode 100644 index 0000000000000000000000000000000000000000..e81afc1426049bda9e0cf122b880207911ac2fe1 GIT binary patch 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^ literal 0 HcmV?d00001 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 new file mode 100644 index 000000000..ab88c81d7 --- /dev/null +++ b/docs/build/html/classmlx_1_1core_1_1fast_1_1_r_m_s_norm-members.html @@ -0,0 +1,109 @@ + + + + + + + +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 new file mode 100644 index 000000000..c476b2c96 --- /dev/null +++ b/docs/build/html/classmlx_1_1core_1_1fast_1_1_r_m_s_norm.html @@ -0,0 +1,327 @@ + + + + + + + +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 new file mode 100644 index 0000000000000000000000000000000000000000..0cb8e0a310f3b7a732e96136a5e706655baa4d09 GIT binary patch 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 new file mode 100644 index 000000000..4b010e9d1 --- /dev/null +++ b/docs/build/html/classmlx_1_1core_1_1fast_1_1_r_m_s_norm_v_j_p.html @@ -0,0 +1,284 @@ + + + + + + + +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 new file mode 100644 index 0000000000000000000000000000000000000000..39e2b0d047114e829281dfb67b725699313f8a94 GIT binary patch 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 new file mode 100644 index 000000000..745b490be --- /dev/null +++ b/docs/build/html/classmlx_1_1core_1_1fast_1_1_ro_p_e.html @@ -0,0 +1,352 @@ + + + + + + + +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 new file mode 100644 index 0000000000000000000000000000000000000000..62648d9411cecb26a750282334d3053f4627966a GIT binary patch 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% literal 0 HcmV?d00001 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 new file mode 100644 index 000000000..f75d5bd4d --- /dev/null +++ b/docs/build/html/classmlx_1_1core_1_1fast_1_1_scaled_dot_product_attention-members.html @@ -0,0 +1,110 @@ + + + + + + + +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 new file mode 100644 index 000000000..e5b515790 --- /dev/null +++ b/docs/build/html/classmlx_1_1core_1_1fast_1_1_scaled_dot_product_attention.html @@ -0,0 +1,333 @@ + + + + + + + +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 new file mode 100644 index 0000000000000000000000000000000000000000..65f61e4a0d67c4cbc125902d2b8d2bc41e4f01a9 GIT binary patch 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::FileReader Member List
+
+
+ +

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

+ + + + + + + + + +
FileReader(std::ifstream is)mlx::core::io::FileReaderinlineexplicit
FileReader(std::string file_path)mlx::core::io::FileReaderinlineexplicit
good() const overridemlx::core::io::FileReaderinlinevirtual
is_open() const overridemlx::core::io::FileReaderinlinevirtual
label() const overridemlx::core::io::FileReaderinlinevirtual
read(char *data, size_t n) overridemlx::core::io::FileReaderinlinevirtual
seek(int64_t off, std::ios_base::seekdir way=std::ios_base::beg) overridemlx::core::io::FileReaderinlinevirtual
tell() overridemlx::core::io::FileReaderinlinevirtual
+ + + + diff --git a/docs/build/html/classmlx_1_1core_1_1io_1_1_file_reader.html b/docs/build/html/classmlx_1_1core_1_1io_1_1_file_reader.html new file mode 100644 index 000000000..1ae86019b --- /dev/null +++ b/docs/build/html/classmlx_1_1core_1_1io_1_1_file_reader.html @@ -0,0 +1,346 @@ + + + + + + + +MLX: mlx::core::io::FileReader Class Reference + + + + + + + + + + + +
+
+ + + + + + +
+
MLX +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+ +
mlx::core::io::FileReader Class Reference
+
+
+ +

#include <load.h>

+
+Inheritance diagram for mlx::core::io::FileReader:
+
+
+ + +mlx::core::io::Reader + +
+ + + + + + + + + + + + + + + + + + +

+Public Member Functions

 FileReader (std::ifstream is)
 
 FileReader (std::string file_path)
 
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 read (char *data, size_t n) override
 
std::string label () const override
 
+

Constructor & Destructor Documentation

+ +

◆ FileReader() [1/2]

+ +
+
+ + + + + +
+ + + + + + + +
mlx::core::io::FileReader::FileReader (std::ifstream is)
+
+inlineexplicit
+
+ +
+
+ +

◆ FileReader() [2/2]

+ +
+
+ + + + + +
+ + + + + + + +
mlx::core::io::FileReader::FileReader (std::string file_path)
+
+inlineexplicit
+
+ +
+
+

Member Function Documentation

+ +

◆ good()

+ +
+
+ + + + + +
+ + + + + + + +
bool mlx::core::io::FileReader::good () const
+
+inlineoverridevirtual
+
+ +

Implements mlx::core::io::Reader.

+ +
+
+ +

◆ is_open()

+ +
+
+ + + + + +
+ + + + + + + +
bool mlx::core::io::FileReader::is_open () const
+
+inlineoverridevirtual
+
+ +

Implements mlx::core::io::Reader.

+ +
+
+ +

◆ label()

+ +
+
+ + + + + +
+ + + + + + + +
std::string mlx::core::io::FileReader::label () const
+
+inlineoverridevirtual
+
+ +

Implements mlx::core::io::Reader.

+ +
+
+ +

◆ read()

+ +
+
+ + + + + +
+ + + + + + + + + + + +
void mlx::core::io::FileReader::read (char * data,
size_t n )
+
+inlineoverridevirtual
+
+ +

Implements mlx::core::io::Reader.

+ +
+
+ +

◆ seek()

+ +
+
+ + + + + +
+ + + + + + + + + + + +
void mlx::core::io::FileReader::seek (int64_t off,
std::ios_base::seekdir way = std::ios_base::beg )
+
+inlineoverridevirtual
+
+ +

Implements mlx::core::io::Reader.

+ +
+
+ +

◆ tell()

+ +
+
+ + + + + +
+ + + + + + + +
size_t mlx::core::io::FileReader::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_file_reader.png b/docs/build/html/classmlx_1_1core_1_1io_1_1_file_reader.png new file mode 100644 index 0000000000000000000000000000000000000000..0a31de8a66d013e62136badc3528dffbeead85e6 GIT binary patch literal 642 zcmV-|0)737P)vTJr#LVva2S`&=-}Ys|Ns9r%~qrU000SeQchC<|NsC0|NsC0Hv*f~0006F zNklRq;%F|M7%XCZ0VWtHp?bf+c@N0~TR)D~@w7Y8FruOA}W z4jzy?r}wra8D5fh1xS1SZ>rSAb^d39;r>2#`aP0s?~9V(U)-Z!B1x}DNXI4mi94R{ zJ^S}Q?hWK7jwGG(4}~NnB@#(SN+gnult?5QX+f&B)~N&lzoQob%%%B|Ua#qx=0jSD zW@DNVDJKp9VkHs)L`oz8h?GbG5Gj!WAW|X$K%_(hfJli10Fe?203sz407Ob80Em=G z01)X-8(}nfNNRr$#;Rfkr;ya|W zpQ}9>-|c++*4)gITS)i5?dMlV#xB|Ww`^*Mv{-hmBH3lO)yJ567js)f^q8z2&Zq9G zWU~yXE|Pk=YV>X6kxrvY*q?U1xaUZ=SqCIvrK8tfq_bMyk4Sb}K2*sf-y!+-_Q~w6 z21u^GFRFWgasS^-F_N2^b1du_^ + + + + + + +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::ofstream os)mlx::core::io::FileWriterinlineexplicit
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
+ + + + 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 new file mode 100644 index 000000000..7367b3b87 --- /dev/null +++ b/docs/build/html/classmlx_1_1core_1_1io_1_1_file_writer.html @@ -0,0 +1,346 @@ + + + + + + + +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::ofstream os)
 
 FileWriter (std::string file_path)
 
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
 
+

Constructor & Destructor Documentation

+ +

◆ FileWriter() [1/2]

+ +
+
+ + + + + +
+ + + + + + + +
mlx::core::io::FileWriter::FileWriter (std::ofstream os)
+
+inlineexplicit
+
+ +
+
+ +

◆ FileWriter() [2/2]

+ +
+
+ + + + + +
+ + + + + + + +
mlx::core::io::FileWriter::FileWriter (std::string file_path)
+
+inlineexplicit
+
+ +
+
+

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 new file mode 100644 index 0000000000000000000000000000000000000000..3f1679897f3bd4c71bcf9d4034cc9a56cc8686ac GIT binary patch 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 literal 0 HcmV?d00001 diff --git a/docs/build/html/classmlx_1_1core_1_1io_1_1_reader-members.html b/docs/build/html/classmlx_1_1core_1_1io_1_1_reader-members.html new file mode 100644 index 000000000..98887ab2b --- /dev/null +++ b/docs/build/html/classmlx_1_1core_1_1io_1_1_reader-members.html @@ -0,0 +1,96 @@ + + + + + + + +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
seek(int64_t off, std::ios_base::seekdir way=std::ios_base::beg)=0mlx::core::io::Readerpure virtual
tell()=0mlx::core::io::Readerpure virtual
+ + + + 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 new file mode 100644 index 000000000..2cd2194a8 --- /dev/null +++ b/docs/build/html/classmlx_1_1core_1_1io_1_1_reader.html @@ -0,0 +1,291 @@ + + + + + + + +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::FileReader + +
+ + + + + + + + + + + + + + +

+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 std::string label () const =0
 
+

Member Function Documentation

+ +

◆ good()

+ +
+
+ + + + + +
+ + + + + + + +
virtual bool mlx::core::io::Reader::good () const
+
+pure virtual
+
+ +

Implemented in mlx::core::io::FileReader.

+ +
+
+ +

◆ is_open()

+ +
+
+ + + + + +
+ + + + + + + +
virtual bool mlx::core::io::Reader::is_open () const
+
+pure virtual
+
+ +

Implemented in mlx::core::io::FileReader.

+ +
+
+ +

◆ label()

+ +
+
+ + + + + +
+ + + + + + + +
virtual std::string mlx::core::io::Reader::label () const
+
+pure virtual
+
+ +

Implemented in mlx::core::io::FileReader.

+ +
+
+ +

◆ read()

+ +
+
+ + + + + +
+ + + + + + + + + + + +
virtual void mlx::core::io::Reader::read (char * data,
size_t n )
+
+pure virtual
+
+ +

Implemented in mlx::core::io::FileReader.

+ +
+
+ +

◆ 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::FileReader.

+ +
+
+ +

◆ tell()

+ +
+
+ + + + + +
+ + + + + + + +
virtual size_t mlx::core::io::Reader::tell ()
+
+pure virtual
+
+ +

Implemented in mlx::core::io::FileReader.

+ +
+
+
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 new file mode 100644 index 0000000000000000000000000000000000000000..a28b37482fca676db602abbbf3248d03471d1b56 GIT binary patch literal 647 zcmeAS@N?(olHy`uVBq!ia0vp^lYlsYgBeI3ZM_4cqyv0HT>t<74`jZ0^R=}9&~gg{ z%>s$(XI?yb@Bk=odNyncP>!=C$S;@y$Oi*+rrB2*7?^}ST^vIy7~jsl+xOalqvd$= z%30s*A5FHZPgt&4y-oaD*C}Onkr(MauXMdMQ}q^lT=MZ!@$8!7F-hbl-^=z5d#h*5 zc}kVc|IzI+=}y+e>6UdpA@>yXv#Sj_w>iI$E;cUBP`ta_RBpC$Uro42_wBw=mEC8) zeKTBkFST0o@h!_5G0(Etu#^8B%ClBxOzA9k&AoW6qR_ze(=XLYZyzwOERNbPd-8+V zCT)jXuj_-C>aF{1FU<4(`^wAjC&pCAPxoPcTfM8`R()Svu=~->aE%Dru1?er@4o`@O{Ope`DSr{E_$k z_V#CKeRrI8eb2SuZ)H?=^4k4PD`hVw-Q38PIsN86yJJ^&&$unM=y=N80=v?1)!C^Q zrHVIChc3>S?k|z@J@jwO + + + + + + +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
+ + + + 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 new file mode 100644 index 000000000..991f1a823 --- /dev/null +++ b/docs/build/html/classmlx_1_1core_1_1io_1_1_writer.html @@ -0,0 +1,291 @@ + + + + + + + +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
 
+

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 new file mode 100644 index 0000000000000000000000000000000000000000..70dfa5f6882969907fbe781de58cc2ae5b58d14a GIT binary patch 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* literal 0 HcmV?d00001 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 new file mode 100644 index 000000000..0d522e267 --- /dev/null +++ b/docs/build/html/classmlx_1_1core_1_1metal_1_1_device-members.html @@ -0,0 +1,112 @@ + + + + + + + +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, const std::function< std::string(const std::string &)> &lib_path_func=get_colocated_mtllib_path)mlx::core::metal::Device
~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 new file mode 100644 index 000000000..9d6e636ad --- /dev/null +++ b/docs/build/html/classmlx_1_1core_1_1metal_1_1_device.html @@ -0,0 +1,635 @@ + + + + + + + +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, const std::function< std::string(const std::string &)> &lib_path_func=get_colocated_mtllib_path)
 
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,
const std::function< std::string(const std::string &)> & lib_path_func = get_colocated_mtllib_path )
+
+ +
+
+ +

◆ 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 new file mode 100644 index 000000000..6ddf10230 --- /dev/null +++ b/docs/build/html/classmlx_1_1core_1_1metal_1_1_metal_allocator-members.html @@ -0,0 +1,106 @@ + + + + + + + +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 new file mode 100644 index 000000000..b19a22a49 --- /dev/null +++ b/docs/build/html/classmlx_1_1core_1_1metal_1_1_metal_allocator.html @@ -0,0 +1,388 @@ + + + + + + + +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
 
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 )
+
+ +
+
+

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 new file mode 100644 index 0000000000000000000000000000000000000000..c82190d6222eabf8781259a9fd6bce166fb65348 GIT binary patch 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 literal 0 HcmV?d00001 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 new file mode 100644 index 000000000..a3e82b9eb --- /dev/null +++ b/docs/build/html/classmlx_1_1core_1_1random_1_1_key_sequence-members.html @@ -0,0 +1,94 @@ + + + + + + + +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 new file mode 100644 index 000000000..4662bb44f --- /dev/null +++ b/docs/build/html/classmlx_1_1core_1_1random_1_1_key_sequence.html @@ -0,0 +1,197 @@ + + + + + + + +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 new file mode 100644 index 000000000..7a145e396 --- /dev/null +++ b/docs/build/html/classmlx_1_1core_1_1scheduler_1_1_scheduler-members.html @@ -0,0 +1,104 @@ + + + + + + + +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 new file mode 100644 index 000000000..b9ec8053b --- /dev/null +++ b/docs/build/html/classmlx_1_1core_1_1scheduler_1_1_scheduler.html @@ -0,0 +1,478 @@ + + + + + + + +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)
 
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)
+
+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 new file mode 100644 index 000000000..91ebfde05 --- /dev/null +++ b/docs/build/html/classpocketfft_1_1detail_1_1_t__dcst23-members.html @@ -0,0 +1,93 @@ + + + + + + + +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 new file mode 100644 index 000000000..c7c55e2aa --- /dev/null +++ b/docs/build/html/classpocketfft_1_1detail_1_1_t__dcst23.html @@ -0,0 +1,210 @@ + + + + + + + +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 new file mode 100644 index 000000000..3df2ebce9 --- /dev/null +++ b/docs/build/html/classpocketfft_1_1detail_1_1_t__dcst4-members.html @@ -0,0 +1,93 @@ + + + + + + + +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 new file mode 100644 index 000000000..8d03410d4 --- /dev/null +++ b/docs/build/html/classpocketfft_1_1detail_1_1_t__dcst4.html @@ -0,0 +1,210 @@ + + + + + + + +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 new file mode 100644 index 000000000..306b02f42 --- /dev/null +++ b/docs/build/html/classpocketfft_1_1detail_1_1_t__dct1-members.html @@ -0,0 +1,93 @@ + + + + + + + +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 new file mode 100644 index 000000000..ad8c292fc --- /dev/null +++ b/docs/build/html/classpocketfft_1_1detail_1_1_t__dct1.html @@ -0,0 +1,210 @@ + + + + + + + +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 new file mode 100644 index 000000000..5f72dd266 --- /dev/null +++ b/docs/build/html/classpocketfft_1_1detail_1_1_t__dst1-members.html @@ -0,0 +1,93 @@ + + + + + + + +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 new file mode 100644 index 000000000..678dde855 --- /dev/null +++ b/docs/build/html/classpocketfft_1_1detail_1_1_t__dst1.html @@ -0,0 +1,210 @@ + + + + + + + +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 new file mode 100644 index 000000000..0a83715c7 --- /dev/null +++ b/docs/build/html/classpocketfft_1_1detail_1_1arr-members.html @@ -0,0 +1,100 @@ + + + + + + + +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 new file mode 100644 index 000000000..d81388ba2 --- /dev/null +++ b/docs/build/html/classpocketfft_1_1detail_1_1arr.html @@ -0,0 +1,391 @@ + + + + + + + +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 new file mode 100644 index 000000000..38eb5333c --- /dev/null +++ b/docs/build/html/classpocketfft_1_1detail_1_1arr__info-members.html @@ -0,0 +1,99 @@ + + + + + + + +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 new file mode 100644 index 000000000..08df02140 --- /dev/null +++ b/docs/build/html/classpocketfft_1_1detail_1_1arr__info.html @@ -0,0 +1,357 @@ + + + + + + + +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 new file mode 100644 index 0000000000000000000000000000000000000000..8cf1d3ced302b69089d970e4947289599f2076c4 GIT binary patch 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 literal 0 HcmV?d00001 diff --git a/docs/build/html/classpocketfft_1_1detail_1_1cfftp-members.html b/docs/build/html/classpocketfft_1_1detail_1_1cfftp-members.html new file mode 100644 index 000000000..65676b3eb --- /dev/null +++ b/docs/build/html/classpocketfft_1_1detail_1_1cfftp-members.html @@ -0,0 +1,92 @@ + + + + + + + +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 new file mode 100644 index 000000000..77e4017fe --- /dev/null +++ b/docs/build/html/classpocketfft_1_1detail_1_1cfftp.html @@ -0,0 +1,171 @@ + + + + + + + +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 new file mode 100644 index 000000000..1d2ac7085 --- /dev/null +++ b/docs/build/html/classpocketfft_1_1detail_1_1cndarr-members.html @@ -0,0 +1,102 @@ + + + + + + + +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 new file mode 100644 index 000000000..742ba67f6 --- /dev/null +++ b/docs/build/html/classpocketfft_1_1detail_1_1cndarr.html @@ -0,0 +1,229 @@ + + + + + + + +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 new file mode 100644 index 0000000000000000000000000000000000000000..268d77cafbb0952a67dfc3b44e99ea88660ca187 GIT binary patch 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 literal 0 HcmV?d00001 diff --git a/docs/build/html/classpocketfft_1_1detail_1_1fftblue-members.html b/docs/build/html/classpocketfft_1_1detail_1_1fftblue-members.html new file mode 100644 index 000000000..ba6b7bcdd --- /dev/null +++ b/docs/build/html/classpocketfft_1_1detail_1_1fftblue-members.html @@ -0,0 +1,93 @@ + + + + + + + +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 new file mode 100644 index 000000000..519a05ae5 --- /dev/null +++ b/docs/build/html/classpocketfft_1_1detail_1_1fftblue.html @@ -0,0 +1,212 @@ + + + + + + + +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 new file mode 100644 index 000000000..fc671bdf6 --- /dev/null +++ b/docs/build/html/classpocketfft_1_1detail_1_1multi__iter-members.html @@ -0,0 +1,101 @@ + + + + + + + +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 new file mode 100644 index 000000000..1558f0d92 --- /dev/null +++ b/docs/build/html/classpocketfft_1_1detail_1_1multi__iter.html @@ -0,0 +1,437 @@ + + + + + + + +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 new file mode 100644 index 000000000..695ada829 --- /dev/null +++ b/docs/build/html/classpocketfft_1_1detail_1_1ndarr-members.html @@ -0,0 +1,104 @@ + + + + + + + +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 new file mode 100644 index 000000000..515d2c773 --- /dev/null +++ b/docs/build/html/classpocketfft_1_1detail_1_1ndarr.html @@ -0,0 +1,209 @@ + + + + + + + +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 new file mode 100644 index 0000000000000000000000000000000000000000..96f688ccda63c89376608b377f575b96caf2c9a8 GIT binary patch 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 literal 0 HcmV?d00001 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 new file mode 100644 index 000000000..cd88f36a7 --- /dev/null +++ b/docs/build/html/classpocketfft_1_1detail_1_1pocketfft__c-members.html @@ -0,0 +1,93 @@ + + + + + + + +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 new file mode 100644 index 000000000..8eac32ad6 --- /dev/null +++ b/docs/build/html/classpocketfft_1_1detail_1_1pocketfft__c.html @@ -0,0 +1,200 @@ + + + + + + + +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 new file mode 100644 index 000000000..14d5e1b2f --- /dev/null +++ b/docs/build/html/classpocketfft_1_1detail_1_1pocketfft__r-members.html @@ -0,0 +1,93 @@ + + + + + + + +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 new file mode 100644 index 000000000..7cf6d4e6d --- /dev/null +++ b/docs/build/html/classpocketfft_1_1detail_1_1pocketfft__r.html @@ -0,0 +1,200 @@ + + + + + + + +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 new file mode 100644 index 000000000..39dfa4688 --- /dev/null +++ b/docs/build/html/classpocketfft_1_1detail_1_1rev__iter-members.html @@ -0,0 +1,95 @@ + + + + + + + +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 new file mode 100644 index 000000000..3775ffc19 --- /dev/null +++ b/docs/build/html/classpocketfft_1_1detail_1_1rev__iter.html @@ -0,0 +1,240 @@ + + + + + + + +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 new file mode 100644 index 000000000..778f37aa0 --- /dev/null +++ b/docs/build/html/classpocketfft_1_1detail_1_1rfftp-members.html @@ -0,0 +1,92 @@ + + + + + + + +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 new file mode 100644 index 000000000..deddc38d0 --- /dev/null +++ b/docs/build/html/classpocketfft_1_1detail_1_1rfftp.html @@ -0,0 +1,171 @@ + + + + + + + +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 new file mode 100644 index 000000000..0bd71a255 --- /dev/null +++ b/docs/build/html/classpocketfft_1_1detail_1_1simple__iter-members.html @@ -0,0 +1,94 @@ + + + + + + + +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 new file mode 100644 index 000000000..973bde1d8 --- /dev/null +++ b/docs/build/html/classpocketfft_1_1detail_1_1simple__iter.html @@ -0,0 +1,209 @@ + + + + + + + +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 new file mode 100644 index 000000000..8220ef462 --- /dev/null +++ b/docs/build/html/classpocketfft_1_1detail_1_1sincos__2pibyn-members.html @@ -0,0 +1,92 @@ + + + + + + + +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 new file mode 100644 index 000000000..c39332681 --- /dev/null +++ b/docs/build/html/classpocketfft_1_1detail_1_1sincos__2pibyn.html @@ -0,0 +1,159 @@ + + + + + + + +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 new file mode 100644 index 000000000..119b98e56 --- /dev/null +++ b/docs/build/html/classpocketfft_1_1detail_1_1threading_1_1concurrent__queue-members.html @@ -0,0 +1,93 @@ + + + + + + + +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 new file mode 100644 index 000000000..624dd5302 --- /dev/null +++ b/docs/build/html/classpocketfft_1_1detail_1_1threading_1_1concurrent__queue.html @@ -0,0 +1,187 @@ + + + + + + + +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 new file mode 100644 index 000000000..1a1651f32 --- /dev/null +++ b/docs/build/html/classpocketfft_1_1detail_1_1threading_1_1latch-members.html @@ -0,0 +1,94 @@ + + + + + + + +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 new file mode 100644 index 000000000..b4bc2ced1 --- /dev/null +++ b/docs/build/html/classpocketfft_1_1detail_1_1threading_1_1latch.html @@ -0,0 +1,209 @@ + + + + + + + +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 new file mode 100644 index 000000000..a0affd7d6 --- /dev/null +++ b/docs/build/html/classpocketfft_1_1detail_1_1threading_1_1thread__pool-members.html @@ -0,0 +1,96 @@ + + + + + + + +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 new file mode 100644 index 000000000..d09be49b4 --- /dev/null +++ b/docs/build/html/classpocketfft_1_1detail_1_1threading_1_1thread__pool.html @@ -0,0 +1,263 @@ + + + + + + + +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 new file mode 100644 index 000000000..42c1fb0e0 --- /dev/null +++ b/docs/build/html/clipboard.js @@ -0,0 +1,61 @@ +/** + +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 new file mode 100644 index 0000000000000000000000000000000000000000..98cc2c909da37a6df914fbf67780eebd99c597f5 GIT binary patch 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 literal 0 HcmV?d00001 diff --git a/docs/build/html/common_2arange_8h.html b/docs/build/html/common_2arange_8h.html new file mode 100644 index 000000000..c78de6f00 --- /dev/null +++ b/docs/build/html/common_2arange_8h.html @@ -0,0 +1,107 @@ + + + + + + + +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 new file mode 100644 index 000000000..70d6fc512 --- /dev/null +++ b/docs/build/html/common_2arange_8h_source.html @@ -0,0 +1,192 @@ + + + + + + + +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:60
+
constexpr Dtype uint64
Definition dtype.h:65
+
constexpr Dtype uint16
Definition dtype.h:63
+
void arange(const std::vector< array > &inputs, array &out, double start, double step)
Definition arange.h:24
+
constexpr Dtype bfloat16
Definition dtype.h:74
+
constexpr Dtype int32
Definition dtype.h:69
+
constexpr Dtype float32
Definition dtype.h:73
+
constexpr Dtype int16
Definition dtype.h:68
+
constexpr Dtype int8
Definition dtype.h:67
+
constexpr Dtype int64
Definition dtype.h:70
+
constexpr Dtype uint8
Definition dtype.h:62
+
constexpr Dtype float16
Definition dtype.h:72
+
constexpr Dtype uint32
Definition dtype.h:64
+
constexpr Dtype complex64
Definition dtype.h:75
+
+ + + + diff --git a/docs/build/html/common_2binary_8h.html b/docs/build/html/common_2binary_8h.html new file mode 100644 index 000000000..ae0648736 --- /dev/null +++ b/docs/build/html/common_2binary_8h.html @@ -0,0 +1,118 @@ + + + + + + + +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 new file mode 100644 index 000000000..96ff5fab0 --- /dev/null +++ b/docs/build/html/common_2binary_8h_source.html @@ -0,0 +1,767 @@ + + + + + + + +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 switch (bopt) {
+
47 case BinaryOpType::ScalarScalar:
+
48 out.set_data(
+
49 allocator::malloc_or_wait(out.itemsize()), 1, a.strides(), a.flags());
+
50 break;
+
51 case BinaryOpType::ScalarVector:
+
52 if (b.is_donatable() && b.itemsize() == out.itemsize()) {
+
53 if (donate_with_move) {
+
54 out.move_shared_buffer(b);
+
55 } else {
+
56 out.copy_shared_buffer(b);
+
57 }
+
58 } else {
+
59 out.set_data(
+
60 allocator::malloc_or_wait(b.data_size() * out.itemsize()),
+
61 b.data_size(),
+
62 b.strides(),
+
63 b.flags());
+
64 }
+
65 break;
+
66 case BinaryOpType::VectorScalar:
+
67 if (a.is_donatable() && a.itemsize() == out.itemsize()) {
+
68 if (donate_with_move) {
+
69 out.move_shared_buffer(a);
+
70 } else {
+
71 out.copy_shared_buffer(a);
+
72 }
+
73 } else {
+
74 out.set_data(
+
75 allocator::malloc_or_wait(a.data_size() * out.itemsize()),
+
76 a.data_size(),
+
77 a.strides(),
+
78 a.flags());
+
79 }
+
80 break;
+
81 case BinaryOpType::VectorVector:
+
82 if (a.is_donatable() && a.itemsize() == out.itemsize()) {
+
83 if (donate_with_move) {
+
84 out.move_shared_buffer(a);
+
85 } else {
+
86 out.copy_shared_buffer(a);
+
87 }
+
88 } else if (b.is_donatable() && b.itemsize() == out.itemsize()) {
+
89 if (donate_with_move) {
+
90 out.move_shared_buffer(b);
+
91 } else {
+
92 out.copy_shared_buffer(b);
+
93 }
+
94 } else {
+
95 out.set_data(
+
96 allocator::malloc_or_wait(a.data_size() * out.itemsize()),
+
97 a.data_size(),
+
98 a.strides(),
+
99 a.flags());
+
100 }
+
101 break;
+
102 case BinaryOpType::General:
+
103 if (a.is_donatable() && a.flags().row_contiguous &&
+
104 a.itemsize() == out.itemsize() && a.size() == out.size()) {
+
105 if (donate_with_move) {
+
106 out.move_shared_buffer(a);
+
107 } else {
+
108 out.copy_shared_buffer(a);
+
109 }
+
110 } else if (
+
111 b.is_donatable() && b.flags().row_contiguous &&
+
112 b.itemsize() == out.itemsize() && 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:60
+
constexpr Dtype uint64
Definition dtype.h:65
+
constexpr Dtype uint16
Definition dtype.h:63
+
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:74
+
constexpr Dtype int32
Definition dtype.h:69
+
constexpr Dtype float32
Definition dtype.h:73
+
constexpr Dtype int16
Definition dtype.h:68
+
constexpr Dtype int8
Definition dtype.h:67
+
constexpr Dtype int64
Definition dtype.h:70
+
constexpr Dtype uint8
Definition dtype.h:62
+ +
constexpr Dtype float16
Definition dtype.h:72
+
constexpr Dtype uint32
Definition dtype.h:64
+
constexpr Dtype complex64
Definition dtype.h:75
+
+ + + + diff --git a/docs/build/html/common_2binary__two_8h.html b/docs/build/html/common_2binary__two_8h.html new file mode 100644 index 000000000..23b7b3718 --- /dev/null +++ b/docs/build/html/common_2binary__two_8h.html @@ -0,0 +1,101 @@ + + + + + + + +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 new file mode 100644 index 000000000..5f8c12ac7 --- /dev/null +++ b/docs/build/html/common_2binary__two_8h_source.html @@ -0,0 +1,647 @@ + + + + + + + +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:60
+
constexpr Dtype uint64
Definition dtype.h:65
+
constexpr Dtype uint16
Definition dtype.h:63
+
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:74
+
constexpr Dtype int32
Definition dtype.h:69
+
constexpr Dtype float32
Definition dtype.h:73
+
constexpr Dtype int16
Definition dtype.h:68
+
constexpr Dtype int8
Definition dtype.h:67
+
constexpr Dtype int64
Definition dtype.h:70
+
constexpr Dtype uint8
Definition dtype.h:62
+
constexpr Dtype float16
Definition dtype.h:72
+
constexpr Dtype uint32
Definition dtype.h:64
+
constexpr Dtype complex64
Definition dtype.h:75
+
+ + + + diff --git a/docs/build/html/common_2copy_8h.html b/docs/build/html/common_2copy_8h.html new file mode 100644 index 000000000..2a90f4911 --- /dev/null +++ b/docs/build/html/common_2copy_8h.html @@ -0,0 +1,122 @@ + + + + + + + +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 new file mode 100644 index 000000000..050fc5aa9 --- /dev/null +++ b/docs/build/html/common_2copy_8h_source.html @@ -0,0 +1,145 @@ + + + + + + + +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_2reduce_8h.html b/docs/build/html/common_2reduce_8h.html new file mode 100644 index 000000000..951bd9ebd --- /dev/null +++ b/docs/build/html/common_2reduce_8h.html @@ -0,0 +1,136 @@ + + + + + + + +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
 
+ + + + + +

+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 +
+ }
 
+

Variable Documentation

+ +

◆ op

+ +
+
+ + + + +
Op op
+
+ +
+
+
+ + + + diff --git a/docs/build/html/common_2reduce_8h_source.html b/docs/build/html/common_2reduce_8h_source.html new file mode 100644 index 000000000..4fe0ffc3f --- /dev/null +++ b/docs/build/html/common_2reduce_8h_source.html @@ -0,0 +1,484 @@ + + + + + + + +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
+
52namespace {
+
53
+
54// Helper for the ndimensional strided loop
+
55// Should this be in utils?
+
56inline void nd_loop(
+
57 std::function<void(int)> callback,
+
58 const std::vector<int>& shape,
+
59 const std::vector<size_t>& strides) {
+
60 std::function<void(int, int)> loop_inner;
+
61 loop_inner = [&](int dim, int offset) {
+
62 if (dim < shape.size() - 1) {
+
63 int size = shape[dim];
+
64 size_t stride = strides[dim];
+
65 for (int i = 0; i < size; i++) {
+
66 loop_inner(dim + 1, offset + i * stride);
+
67 }
+
68 } else {
+
69 int size = shape[dim];
+
70 size_t stride = strides[dim];
+
71 for (int i = 0; i < size; i++) {
+
72 callback(offset + i * stride);
+
73 }
+
74 }
+
75 };
+
76 loop_inner(0, 0);
+
77}
+
78
+
79std::pair<std::vector<int>, std::vector<size_t>> shapes_without_reduction_axes(
+
80 const array& x,
+
81 const std::vector<int>& axes) {
+
82 std::vector<int> shape = x.shape();
+
83 std::vector<size_t> strides = x.strides();
+
84
+
85 for (int i = axes.size() - 1; i >= 0; i--) {
+
86 int a = axes[i];
+
87 shape.erase(shape.begin() + a);
+
88 strides.erase(strides.begin() + a);
+
89 }
+
90
+
91 return std::make_pair(shape, strides);
+
92}
+
93
+
94template <typename T, typename U, typename Op>
+
95struct DefaultStridedReduce {
+
96 Op op;
+
97
+
98 DefaultStridedReduce(Op op_) : op(op_) {}
+
99
+
100 void operator()(const T* x, U* accumulator, int size, size_t stride) {
+
101 for (int i = 0; i < size; i++) {
+
102 U* moving_accumulator = accumulator;
+
103 for (int j = 0; j < stride; j++) {
+
104 op(moving_accumulator, *x);
+
105 moving_accumulator++;
+
106 x++;
+
107 }
+
108 }
+
109 }
+
110};
+
111
+
112template <typename T, typename U, typename Op>
+
113struct DefaultContiguousReduce {
+
114 Op op;
+
115
+
116 DefaultContiguousReduce(Op op_) : op(op_) {}
+
117
+
118 void operator()(const T* x, U* accumulator, int size) {
+
119 while (size-- > 0) {
+
120 op(accumulator, *x);
+
121 x++;
+
122 }
+
123 }
+
124};
+
125
+
126ReductionPlan get_reduction_plan(const array& x, const std::vector<int> axes) {
+
127 // The data is all there and we are reducing over everything
+
128 if (x.size() == x.data_size() && axes.size() == x.ndim() &&
+
129 x.flags().contiguous) {
+
130 return ContiguousAllReduce;
+
131 }
+
132
+
133 // Row contiguous input so the output is row contiguous
+
134 if (x.flags().row_contiguous) {
+
135 // Merge consecutive axes
+
136 std::vector<int> shape = {x.shape(axes[0])};
+
137 std::vector<size_t> strides = {x.strides()[axes[0]]};
+
138 for (int i = 1; i < axes.size(); i++) {
+
139 if (axes[i] - 1 == axes[i - 1]) {
+
140 shape.back() *= x.shape(axes[i]);
+
141 strides.back() = x.strides()[axes[i]];
+
142 } else {
+
143 shape.push_back(x.shape(axes[i]));
+
144 strides.push_back(x.strides()[axes[i]]);
+
145 }
+
146 }
+
147
+
148 if (strides.back() == 1) {
+
149 return ReductionPlan(ContiguousReduce, shape, strides);
+
150 } else if (strides.back() > 1) {
+
151 return ReductionPlan(ContiguousStridedReduce, shape, strides);
+
152 }
+
153 }
+
154
+
155 // Let's check if we can optimize our access patterns
+
156 //
+
157 // 1. We have a reduction axis with stride 1. Simply call
+
158 // GeneralContiguousReduce and be done with it.
+
159 // 2. We have transpositions and we are not reducing over the axis with
+
160 // stride 1. However, we are reducing over an axis where everything is
+
161 // contiguous in memory to the right of that axis. We can call strided
+
162 // reduce and be done with it.
+
163 // 2. We have weird transpositions and expands. Copy the strides to the
+
164 // output, then call strided reduce.
+
165
+
166 // Sort reduction axes by stride in order to merge them and figure out if we
+
167 // have a contiguous reduction.
+
168 std::vector<std::pair<int, size_t>> reductions;
+
169 for (auto a : axes) {
+
170 reductions.push_back(std::make_pair(x.shape(a), x.strides()[a]));
+
171 }
+
172 std::sort(reductions.begin(), reductions.end(), [](auto a, auto b) {
+
173 return a.second > b.second;
+
174 });
+
175 // Extract the two smallest and try to merge them in case the contiguous
+
176 // reduction can be bigger than just the last axis.
+
177 for (int i = reductions.size() - 1; i >= 1; i--) {
+
178 auto a = reductions[i];
+
179 auto b = reductions[i - 1];
+
180
+
181 // b.stride = a.shape * a.stride then a and b are contiguous
+
182 if (b.second == a.first * a.second) {
+
183 reductions.erase(reductions.begin() + i);
+
184 reductions[i - 1] = std::make_pair(a.first * b.first, a.second);
+
185 }
+
186 }
+
187
+
188 std::vector<int> shape;
+
189 std::vector<size_t> strides;
+
190 for (auto r : reductions) {
+
191 shape.push_back(r.first);
+
192 strides.push_back(r.second);
+
193 }
+
194
+
195 // We can call the contiguous reduction op for every weird way the input is
+
196 // structured in the rest of the axes.
+
197 if (strides.back() == 1) {
+
198 return ReductionPlan(GeneralContiguousReduce, shape, strides);
+
199 }
+
200
+
201 // Delegate to the general strided reduction op if the axes after
+
202 // strides.back() are contiguous.
+
203 if (strides.back() > 1) {
+
204 int size = 1;
+
205 for (int i = x.ndim() - 1; i >= 0; i--) {
+
206 if (axes.back() == i) {
+
207 continue;
+
208 }
+
209 if (x.strides()[i] != size) {
+
210 break;
+
211 }
+
212 size *= x.shape(i);
+
213 }
+
214 if (size >= strides.back()) {
+
215 return ReductionPlan(GeneralStridedReduce, shape, strides);
+
216 }
+
217 }
+
218
+
219 return ReductionPlan(GeneralReduce, shape, strides);
+
220}
+
221
+
222template <typename T, typename U, typename OpS, typename OpC, typename Op>
+
223void reduction_op(
+
224 const array& x,
+
225 array& out,
+
226 const std::vector<int>& axes,
+
227 U init,
+
228 OpS ops,
+
229 OpC opc,
+
230 Op op) {
+
231 out.set_data(allocator::malloc_or_wait(out.nbytes()));
+
232 ReductionPlan plan = get_reduction_plan(x, axes);
+
233
+
234 if (plan.type == ContiguousAllReduce) {
+
235 U* out_ptr = out.data<U>();
+
236 *out_ptr = init;
+
237 opc(x.data<T>(), out_ptr, x.size());
+
238 return;
+
239 }
+
240
+
241 std::vector<int> shape;
+
242 std::vector<size_t> strides;
+
243
+
244 if (plan.type == ContiguousReduce && plan.shape.size() == 1) {
+
245 int reduction_size = plan.shape[0];
+
246 const T* x_ptr = x.data<T>();
+
247 U* out_ptr = out.data<U>();
+
248 for (int i = 0; i < out.size(); i++, out_ptr++, x_ptr += reduction_size) {
+
249 *out_ptr = init;
+
250 opc(x_ptr, out_ptr, reduction_size);
+
251 }
+
252 return;
+
253 }
+
254
+
255 if (plan.type == GeneralContiguousReduce || plan.type == ContiguousReduce) {
+
256 int reduction_size = plan.shape.back();
+
257 plan.shape.pop_back();
+
258 plan.strides.pop_back();
+
259 const T* x_ptr = x.data<T>();
+
260 U* out_ptr = out.data<U>();
+
261 // Unrolling the following loop (and implementing it in order for
+
262 // ContiguousReduce) should hold extra performance boost.
+
263 std::tie(shape, strides) = shapes_without_reduction_axes(x, axes);
+
264 if (plan.shape.size() == 0) {
+
265 for (int i = 0; i < out.size(); i++, out_ptr++) {
+
266 int offset = elem_to_loc(i, shape, strides);
+
267 *out_ptr = init;
+
268 opc(x_ptr + offset, out_ptr, reduction_size);
+
269 }
+
270 } else {
+
271 for (int i = 0; i < out.size(); i++, out_ptr++) {
+
272 int offset = elem_to_loc(i, shape, strides);
+
273 *out_ptr = init;
+
274 nd_loop(
+
275 [&](int extra_offset) {
+
276 opc(x_ptr + offset + extra_offset, out_ptr, reduction_size);
+
277 },
+
278 plan.shape,
+
279 plan.strides);
+
280 }
+
281 }
+
282 return;
+
283 }
+
284
+
285 if (plan.type == ContiguousStridedReduce && plan.shape.size() == 1) {
+
286 int reduction_size = plan.shape.back();
+
287 size_t reduction_stride = plan.strides.back();
+
288 plan.shape.pop_back();
+
289 plan.strides.pop_back();
+
290 const T* x_ptr = x.data<T>();
+
291 U* out_ptr = out.data<U>();
+
292 for (int i = 0; i < out.size(); i += reduction_stride) {
+
293 std::fill_n(out_ptr, reduction_stride, init);
+
294 ops(x_ptr, out_ptr, reduction_size, reduction_stride);
+
295 x_ptr += reduction_stride * reduction_size;
+
296 out_ptr += reduction_stride;
+
297 }
+
298 return;
+
299 }
+
300
+
301 if (plan.type == GeneralStridedReduce ||
+
302 plan.type == ContiguousStridedReduce) {
+
303 int reduction_size = plan.shape.back();
+
304 size_t reduction_stride = plan.strides.back();
+
305 plan.shape.pop_back();
+
306 plan.strides.pop_back();
+
307 const T* x_ptr = x.data<T>();
+
308 U* out_ptr = out.data<U>();
+
309 std::tie(shape, strides) = shapes_without_reduction_axes(x, axes);
+
310 if (plan.shape.size() == 0) {
+
311 for (int i = 0; i < out.size(); i += reduction_stride) {
+
312 int offset = elem_to_loc(i, shape, strides);
+
313 std::fill_n(out_ptr, reduction_stride, init);
+
314 ops(x_ptr + offset, out_ptr, reduction_size, reduction_stride);
+
315 out_ptr += reduction_stride;
+
316 }
+
317 } else {
+
318 for (int i = 0; i < out.size(); i += reduction_stride) {
+
319 int offset = elem_to_loc(i, shape, strides);
+
320 std::fill_n(out_ptr, reduction_stride, init);
+
321 nd_loop(
+
322 [&](int extra_offset) {
+
323 ops(x_ptr + offset + extra_offset,
+
324 out_ptr,
+
325 reduction_size,
+
326 reduction_stride);
+
327 },
+
328 plan.shape,
+
329 plan.strides);
+
330 out_ptr += reduction_stride;
+
331 }
+
332 }
+
333 return;
+
334 }
+
335
+
336 if (plan.type == GeneralReduce) {
+
337 const T* x_ptr = x.data<T>();
+
338 U* out_ptr = out.data<U>();
+
339 std::tie(shape, strides) = shapes_without_reduction_axes(x, axes);
+
340 for (int i = 0; i < out.size(); i++, out_ptr++) {
+
341 int offset = elem_to_loc(i, shape, strides);
+
342 U val = init;
+
343 nd_loop(
+
344 [&](int extra_offset) { op(&val, *(x_ptr + offset + extra_offset)); },
+
345 plan.shape,
+
346 plan.strides);
+
347 *out_ptr = val;
+
348 }
+
349 }
+
350}
+
351
+
352template <typename T, typename U, typename Op>
+
353void reduction_op(
+
354 const array& x,
+
355 array& out,
+
356 const std::vector<int>& axes,
+
357 U init,
+
358 Op op) {
+
359 DefaultStridedReduce<T, U, Op> ops(op);
+
360 DefaultContiguousReduce<T, U, Op> opc(op);
+
361 reduction_op<T, U>(x, out, axes, init, ops, opc, op);
+
362}
+
363
+
364} // namespace
+
365
+
366} // namespace mlx::core
+ +
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)
+
Group init(bool strict=false)
Initialize the distributed backend and return the group containing all discoverable processes.
+
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
+
stride_t elem_to_loc(int elem, const std::vector< int > &shape, const std::vector< stride_t > &strides)
Definition utils.h:12
+
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 new file mode 100644 index 000000000..022f278a9 --- /dev/null +++ b/docs/build/html/common_2slicing_8h.html @@ -0,0 +1,108 @@ + + + + + + + +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, std::vector< int > &start_indices, std::vector< int > &strides)
 
void mlx::core::shared_buffer_slice (const array &in, const std::vector< size_t > &out_strides, size_t data_offset, array &out)
 
+
+ + + + diff --git a/docs/build/html/common_2slicing_8h_source.html b/docs/build/html/common_2slicing_8h_source.html new file mode 100644 index 000000000..ae5d3220e --- /dev/null +++ b/docs/build/html/common_2slicing_8h_source.html @@ -0,0 +1,117 @@ + + + + + + + +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 std::vector<int>& start_indices,
+
12 std::vector<int>& strides);
+
13
+ +
15 const array& in,
+
16 const std::vector<size_t>& out_strides,
+
17 size_t data_offset,
+
18 array& out);
+
19
+
20} // 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, std::vector< int > &start_indices, std::vector< int > &strides)
+
void shared_buffer_slice(const array &in, const std::vector< size_t > &out_strides, size_t data_offset, array &out)
+
+ + + + diff --git a/docs/build/html/common_2ternary_8h.html b/docs/build/html/common_2ternary_8h.html new file mode 100644 index 000000000..2bdd394cc --- /dev/null +++ b/docs/build/html/common_2ternary_8h.html @@ -0,0 +1,103 @@ + + + + + + + +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 new file mode 100644 index 000000000..f4d7f6db6 --- /dev/null +++ b/docs/build/html/common_2ternary_8h_source.html @@ -0,0 +1,327 @@ + + + + + + + +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 General,
+
16};
+
17
+
18TernaryOpType
+
19get_ternary_op_type(const array& a, const array& b, const array& c) {
+
20 TernaryOpType topt;
+
21 if (a.data_size() == 1 && b.data_size() == 1 && c.data_size() == 1) {
+
22 topt = TernaryOpType::ScalarScalarScalar;
+
23 } else {
+
24 topt = TernaryOpType::General;
+
25 }
+
26 return topt;
+
27}
+
28
+
29void set_ternary_op_output_data(
+
30 const array& a,
+
31 const array& b,
+
32 const array& c,
+
33 array& out,
+
34 TernaryOpType topt,
+
35 bool donate_with_move = false) {
+
36 switch (topt) {
+
37 case TernaryOpType::ScalarScalarScalar:
+
38 out.set_data(
+
39 allocator::malloc_or_wait(out.itemsize()), 1, b.strides(), b.flags());
+
40 break;
+
41 case TernaryOpType::General:
+
42 out.set_data(allocator::malloc_or_wait(out.nbytes()));
+
43 break;
+
44 }
+
45}
+
46
+
47template <typename T1, typename T2, typename T3, typename U, typename Op>
+
48void ternary_op_dims1(
+
49 const array& a,
+
50 const array& b,
+
51 const array& c,
+
52 array& out,
+
53 Op op) {
+
54 const T1* a_ptr = a.data<T1>();
+
55 const T2* b_ptr = b.data<T2>();
+
56 const T3* c_ptr = c.data<T3>();
+
57
+
58 U* dst = out.data<U>();
+
59 size_t a_idx = 0;
+
60 size_t b_idx = 0;
+
61 size_t c_idx = 0;
+
62 for (size_t i = 0; i < out.size(); ++i) {
+
63 dst[i] = op(a_ptr[a_idx], b_ptr[b_idx], c_ptr[c_idx]);
+
64 a_idx += a.strides()[0];
+
65 b_idx += b.strides()[0];
+
66 c_idx += c.strides()[0];
+
67 }
+
68}
+
69
+
70template <typename T1, typename T2, typename T3, typename U, typename Op>
+
71void ternary_op_dims2(
+
72 const array& a,
+
73 const array& b,
+
74 const array& c,
+
75 array& out,
+
76 Op op) {
+
77 const T1* a_ptr = a.data<T1>();
+
78 const T2* b_ptr = b.data<T2>();
+
79 const T3* c_ptr = c.data<T3>();
+
80
+
81 U* dst = out.data<U>();
+
82 size_t a_idx = 0;
+
83 size_t b_idx = 0;
+
84 size_t c_idx = 0;
+
85 size_t out_idx = 0;
+
86 for (size_t i = 0; i < a.shape()[0]; ++i) {
+
87 for (size_t j = 0; j < a.shape()[1]; ++j) {
+
88 dst[out_idx++] = op(a_ptr[a_idx], b_ptr[b_idx], c_ptr[c_idx]);
+
89 a_idx += a.strides()[1];
+
90 b_idx += b.strides()[1];
+
91 c_idx += c.strides()[1];
+
92 }
+
93 a_idx += a.strides()[0] - a.strides()[1] * a.shape()[1];
+
94 b_idx += b.strides()[0] - b.strides()[1] * b.shape()[1];
+
95 c_idx += c.strides()[0] - c.strides()[1] * c.shape()[1];
+
96 }
+
97}
+
98
+
99template <typename T1, typename T2, typename T3, typename U, typename Op>
+
100void ternary_op_dims3(
+
101 const array& a,
+
102 const array& b,
+
103 const array& c,
+
104 array& out,
+
105 Op op) {
+
106 const T1* a_ptr = a.data<T1>();
+
107 const T2* b_ptr = b.data<T2>();
+
108 const T3* c_ptr = c.data<T3>();
+
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 for (size_t k = 0; k < a.shape()[2]; ++k) {
+
117 dst[out_idx++] = op(a_ptr[a_idx], b_ptr[b_idx], c_ptr[c_idx]);
+
118 a_idx += a.strides()[2];
+
119 b_idx += b.strides()[2];
+
120 c_idx += c.strides()[2];
+
121 }
+
122 a_idx += a.strides()[1] - a.strides()[2] * a.shape()[2];
+
123 b_idx += b.strides()[1] - b.strides()[2] * b.shape()[2];
+
124 c_idx += c.strides()[1] - c.strides()[2] * c.shape()[2];
+
125 }
+
126 a_idx += a.strides()[0] - a.strides()[1] * a.shape()[1];
+
127 b_idx += b.strides()[0] - b.strides()[1] * b.shape()[1];
+
128 c_idx += c.strides()[0] - c.strides()[1] * c.shape()[1];
+
129 }
+
130}
+
131
+
132template <typename T1, typename T2, typename T3, typename U, typename Op>
+
133void ternary_op_dims4(
+
134 const array& a,
+
135 const array& b,
+
136 const array& c,
+
137 array& out,
+
138 Op op) {
+
139 const T1* a_ptr = a.data<T1>();
+
140 const T2* b_ptr = b.data<T2>();
+
141 const T3* c_ptr = c.data<T3>();
+
142
+
143 U* dst = out.data<U>();
+
144 size_t a_idx = 0;
+
145 size_t b_idx = 0;
+
146 size_t c_idx = 0;
+
147 size_t out_idx = 0;
+
148 for (size_t i = 0; i < a.shape()[0]; ++i) {
+
149 for (size_t j = 0; j < a.shape()[1]; ++j) {
+
150 for (size_t k = 0; k < a.shape()[2]; ++k) {
+
151 for (size_t ii = 0; ii < a.shape()[3]; ++ii) {
+
152 dst[out_idx++] = op(a_ptr[a_idx], b_ptr[b_idx], c_ptr[c_idx]);
+
153 a_idx += a.strides()[3];
+
154 b_idx += b.strides()[3];
+
155 c_idx += c.strides()[3];
+
156 }
+
157 a_idx += a.strides()[2] - a.strides()[3] * a.shape()[3];
+
158 b_idx += b.strides()[2] - b.strides()[3] * b.shape()[3];
+
159 c_idx += c.strides()[2] - c.strides()[3] * c.shape()[3];
+
160 }
+
161 a_idx += a.strides()[1] - a.strides()[2] * a.shape()[2];
+
162 b_idx += b.strides()[1] - b.strides()[2] * b.shape()[2];
+
163 c_idx += c.strides()[1] - c.strides()[2] * c.shape()[2];
+
164 }
+
165 a_idx += a.strides()[0] - a.strides()[1] * a.shape()[1];
+
166 b_idx += b.strides()[0] - b.strides()[1] * b.shape()[1];
+
167 c_idx += c.strides()[0] - c.strides()[1] * c.shape()[1];
+
168 }
+
169}
+
170
+
171template <typename T1, typename T2, typename T3, typename U, typename Op>
+
172void ternary_op_dispatch_dims(
+
173 const array& a,
+
174 const array& b,
+
175 const array& c,
+
176 array& out,
+
177 Op op) {
+
178 switch (out.ndim()) {
+
179 case 1:
+
180 ternary_op_dims1<T1, T2, T3, U, Op>(a, b, c, out, op);
+
181 return;
+
182 case 2:
+
183 ternary_op_dims2<T1, T2, T3, U, Op>(a, b, c, out, op);
+
184 return;
+
185 case 3:
+
186 ternary_op_dims3<T1, T2, T3, U, Op>(a, b, c, out, op);
+
187 return;
+
188 case 4:
+
189 ternary_op_dims4<T1, T2, T3, U, Op>(a, b, c, out, op);
+
190 return;
+
191 }
+
192
+
193 const T1* a_ptr = a.data<T1>();
+
194 const T2* b_ptr = b.data<T2>();
+
195 const T3* c_ptr = c.data<T3>();
+
196 U* dst = out.data<U>();
+
197 for (size_t i = 0; i < out.size(); i++) {
+
198 int a_idx = elem_to_loc(i, a.shape(), a.strides());
+
199 int b_idx = elem_to_loc(i, b.shape(), b.strides());
+
200 int c_idx = elem_to_loc(i, c.shape(), c.strides());
+
201 dst[i] = op(a_ptr[a_idx], b_ptr[b_idx], c_ptr[c_idx]);
+
202 }
+
203}
+
204
+
205template <typename T1, typename T2, typename T3, typename U, typename Op>
+
206void ternary_op(
+
207 const array& a,
+
208 const array& b,
+
209 const array& c,
+
210 array& out,
+
211 Op op) {
+
212 TernaryOpType topt = get_ternary_op_type(a, b, c);
+
213 set_ternary_op_output_data(a, b, c, out, topt);
+
214
+
215 // The full computation is scalar-scalar-scalar so we call the base op once.
+
216 if (topt == TernaryOpType::ScalarScalarScalar) {
+
217 *(out.data<U>()) = op(*a.data<T1>(), *b.data<T2>(), *c.data<T3>());
+
218 return;
+
219 }
+
220
+
221 ternary_op_dispatch_dims<T1, T2, T3, U>(a, b, c, out, op);
+
222}
+
223
+
224} // namespace
+
225
+
226} // 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
+ +
+ + + + diff --git a/docs/build/html/common_2unary_8h.html b/docs/build/html/common_2unary_8h.html new file mode 100644 index 000000000..c0017b1c4 --- /dev/null +++ b/docs/build/html/common_2unary_8h.html @@ -0,0 +1,103 @@ + + + + + + + +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 new file mode 100644 index 000000000..b73caa45e --- /dev/null +++ b/docs/build/html/common_2unary_8h_source.html @@ -0,0 +1,230 @@ + + + + + + + +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 (in.is_donatable() && in.itemsize() == out.itemsize()) {
+
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:60
+
constexpr Dtype uint64
Definition dtype.h:65
+
constexpr Dtype uint16
Definition dtype.h:63
+
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:74
+
constexpr Dtype int32
Definition dtype.h:69
+
constexpr Dtype float32
Definition dtype.h:73
+
constexpr Dtype int16
Definition dtype.h:68
+
constexpr Dtype int8
Definition dtype.h:67
+
constexpr Dtype int64
Definition dtype.h:70
+
constexpr Dtype uint8
Definition dtype.h:62
+
constexpr Dtype float16
Definition dtype.h:72
+
constexpr Dtype uint32
Definition dtype.h:64
+
constexpr Dtype complex64
Definition dtype.h:75
+ +
+ + + + diff --git a/docs/build/html/compile_8h.html b/docs/build/html/compile_8h.html new file mode 100644 index 000000000..3689b75f0 --- /dev/null +++ b/docs/build/html/compile_8h.html @@ -0,0 +1,130 @@ + + + + + + + +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 new file mode 100644 index 000000000..8960d1ddc --- /dev/null +++ b/docs/build/html/compile_8h_source.html @@ -0,0 +1,123 @@ + + + + + + + +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 new file mode 100644 index 000000000..cfe23b4a1 --- /dev/null +++ b/docs/build/html/compile__impl_8h.html @@ -0,0 +1,108 @@ + + + + + + + +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 new file mode 100644 index 000000000..83d84e37d --- /dev/null +++ b/docs/build/html/compile__impl_8h_source.html @@ -0,0 +1,107 @@ + + + + + + + +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 new file mode 100644 index 000000000..aae146e42 --- /dev/null +++ b/docs/build/html/compiled_8h.html @@ -0,0 +1,131 @@ + + + + + + + +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 new file mode 100644 index 000000000..20485752d --- /dev/null +++ b/docs/build/html/compiled_8h_source.html @@ -0,0 +1,195 @@ + + + + + + + +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:525
+
Definition primitives.h:680
+
Definition primitives.h:48
+
Definition primitives.h:1934
+
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:489
+
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:15
+
+ + + + diff --git a/docs/build/html/compiled__preamble_8h.html b/docs/build/html/compiled__preamble_8h.html new file mode 100644 index 000000000..ffb11123c --- /dev/null +++ b/docs/build/html/compiled__preamble_8h.html @@ -0,0 +1,118 @@ + + + + + + + +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 new file mode 100644 index 000000000..3e318c42d --- /dev/null +++ b/docs/build/html/compiled__preamble_8h_source.html @@ -0,0 +1,107 @@ + + + + + + + +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 new file mode 100644 index 000000000..f5125528c --- /dev/null +++ b/docs/build/html/conv_2loader_8h.html @@ -0,0 +1,91 @@ + + + + + + + +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 new file mode 100644 index 000000000..b3bb84bc8 --- /dev/null +++ b/docs/build/html/conv_2loader_8h_source.html @@ -0,0 +1,100 @@ + + + + + + + +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 new file mode 100644 index 000000000..72736b010 --- /dev/null +++ b/docs/build/html/conv_2params_8h.html @@ -0,0 +1,111 @@ + + + + + + + +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 new file mode 100644 index 000000000..deb4bf9a4 --- /dev/null +++ b/docs/build/html/conv_2params_8h_source.html @@ -0,0 +1,202 @@ + + + + + + + +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 new file mode 100644 index 000000000..bcb720e12 --- /dev/null +++ b/docs/build/html/conv_8h.html @@ -0,0 +1,94 @@ + + + + + + + +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 new file mode 100644 index 000000000..b05a494ba --- /dev/null +++ b/docs/build/html/conv_8h_source.html @@ -0,0 +1,112 @@ + + + + + + + +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 new file mode 100644 index 000000000..53ad21d98 --- /dev/null +++ b/docs/build/html/cookie.js @@ -0,0 +1,58 @@ +/*! + 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 0d32ea1a3..1a169e689 100644 --- a/docs/build/html/cpp/ops.html +++ b/docs/build/html/cpp/ops.html @@ -8,7 +8,7 @@ - Operations — MLX 0.14.0 documentation + Operations — MLX 0.15.0 documentation @@ -36,7 +36,7 @@ - + @@ -131,8 +131,8 @@ - MLX 0.14.0 documentation - Home - + MLX 0.15.0 documentation - Home + @@ -163,6 +163,7 @@
  • Function Transforms
  • Compilation
  • Conversion to NumPy and Other Frameworks
  • +
  • Distributed Communication
  • Using Streams
  • Examples

    @@ -392,6 +393,7 @@
  • mlx.core.tril
  • mlx.core.triu
  • mlx.core.var
  • +
  • mlx.core.view
  • mlx.core.where
  • mlx.core.zeros
  • mlx.core.zeros_like
  • @@ -506,10 +508,15 @@
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • mlx.nn.GELU
  • +
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • mlx.nn.GRU
  • +
  • mlx.nn.HardShrink
  • +
  • mlx.nn.HardTanh
  • +
  • mlx.nn.Hardswish
  • mlx.nn.InstanceNorm
  • mlx.nn.LayerNorm
  • +
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • @@ -521,14 +528,20 @@
  • mlx.nn.QuantizedLinear
  • mlx.nn.RMSNorm
  • mlx.nn.ReLU
  • +
  • mlx.nn.ReLU6
  • mlx.nn.RNN
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • +
  • mlx.nn.Softmin
  • mlx.nn.Softshrink
  • +
  • mlx.nn.Softsign
  • +
  • mlx.nn.Softmax
  • +
  • mlx.nn.Softplus
  • mlx.nn.Step
  • +
  • mlx.nn.Tanh
  • mlx.nn.Transformer
  • mlx.nn.Upsample
  • @@ -539,6 +552,8 @@
  • 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
  • @@ -551,6 +566,7 @@
  • mlx.nn.sigmoid
  • mlx.nn.silu
  • mlx.nn.softmax
  • +
  • mlx.nn.softmin
  • mlx.nn.softplus
  • mlx.nn.softshrink
  • mlx.nn.step
  • @@ -618,7 +634,15 @@
  • mlx.optimizers.clip_grad_norm
  • -
  • Tree Utils
      +
    • Distributed Communication +
    • +
    • Tree Utils @@ -2397,7 +2425,67 @@ document.write(`
      array scatter(const array &a, const std::vector<array> &indices, const array &updates, const std::vector<int> &axes, StreamOrDevice s = {})#
      -

      Scatter updates to given linear indices.

      +

      Scatter updates to the given indices.

      +

      The parameters indices and axes determine the locations of a that are updated with the values in updates. Assuming 1-d indices for simplicity, indices[i] are the indices on axis axes[i] to which the values in updates will be applied. Note each array in indices is assigned to a corresponding axis and hence indices.size() == axes.size(). If an index/axis pair is not provided then indices along that axis are assumed to be zero.

      +

      Note the rank of updates must be equal to the sum of the rank of the broadcasted indices and the rank of a. In other words, assuming the arrays in indices have the same shape, updates.ndim() == indices[0].ndim() + a.ndim(). The leading dimensions of updates correspond to the indices, and the remaining a.ndim() dimensions are the values that will be applied to the given location in a.

      +

      For example:

      +
      auto in = zeros({4, 4}, float32);
      +auto indices = array({2});
      +auto updates = reshape(arange(1, 3, float32), {1, 1, 2});
      +std::vector<int> axes{0};
      +
      +auto out = scatter(in, {indices}, updates, axes);
      +
      +
      +

      will produce:

      +
      array([[0, 0, 0, 0],
      +       [0, 0, 0, 0],
      +       [1, 2, 0, 0],
      +       [0, 0, 0, 0]], dtype=float32)
      +
      +
      +

      This scatters the two-element row vector [1, 2] starting at the (2, 0) position of a.

      +

      Adding another element to indices will scatter into another location of a. We also have to add an another update for the new index:

      +
      auto in = zeros({4, 4}, float32);
      +auto indices = array({2, 0});
      +auto updates = reshape(arange(1, 5, float32), {2, 1, 2});
      +std::vector<int> axes{0};
      +
      +auto out = scatter(in, {indices}, updates, axes):
      +
      +
      +

      will produce:

      +
      array([[3, 4, 0, 0],
      +       [0, 0, 0, 0],
      +       [1, 2, 0, 0],
      +       [0, 0, 0, 0]], dtype=float32)
      +
      +
      +

      To control the scatter location on an additional axis, add another index array to indices and another axis to axes:

      +
      auto in = zeros({4, 4}, float32);
      +auto indices = std::vector{array({2, 0}), array({1, 2})};
      +auto updates = reshape(arange(1, 5, float32), {2, 1, 2});
      +std::vector<int> axes{0, 1};
      +
      +auto out = scatter(in, indices, updates, axes);
      +
      +
      +

      will produce:

      +
      array([[0, 0, 3, 4],
      +      [0, 0, 0, 0],
      +      [0, 1, 2, 0],
      +      [0, 0, 0, 0]], dtype=float32)
      +
      +
      +

      Items in indices are broadcasted together. This means:

      +
      auto indices = std::vector{array({2, 0}), array({1})};
      +
      +
      +

      is equivalent to:

      +
      auto indices = std::vector{array({2, 0}), array({1, 1})};
      +
      +
      +

      Note, scatter does not perform bounds checking on the indices and updates. Out-of-bounds accesses on a are undefined and typically result in unintended or invalid memory writes.

      @@ -2558,8 +2646,8 @@ document.write(`
      -
      -array block_sparse_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 = {})#
      +
      +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.

      @@ -2599,8 +2687,8 @@ document.write(`
      -
      -array block_sparse_mm(array a, array b, std::optional<array> lhs_indices = std::nullopt, std::optional<array> rhs_indices = std::nullopt, StreamOrDevice s = {})#
      +
      +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.

      @@ -2616,6 +2704,22 @@ document.write(`

      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<array> depends(const std::vector<array> &inputs, const std::vector<array> &dependencies)#
      @@ -2721,6 +2825,11 @@ document.write(` array operator>>(const array &a, const array &b)#
      +
      +
      +array view(const array &a, const Dtype &dtype, StreamOrDevice s = {})#
      +
      + @@ -3025,16 +3134,19 @@ document.write(`
    • quantized_matmul()
    • quantize()
    • dequantize()
    • -
    • block_sparse_qmm()
    • +
    • gather_qmm()
    • tensordot()
    • tensordot()
    • outer()
    • inner()
    • addmm()
    • block_masked_mm()
    • -
    • block_sparse_mm()
    • +
    • gather_mm()
    • diagonal()
    • diag()
    • +
    • trace()
    • +
    • trace()
    • +
    • trace()
    • depends()
    • atleast_1d()
    • atleast_1d()
    • @@ -3054,6 +3166,7 @@ document.write(`
    • operator<<()
    • right_shift()
    • operator>>()
    • +
    • view()
    diff --git a/docs/build/html/defines_8h.html b/docs/build/html/defines_8h.html new file mode 100644 index 000000000..1bf11960c --- /dev/null +++ b/docs/build/html/defines_8h.html @@ -0,0 +1,237 @@ + + + + + + + +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
     
    + + + + + + + + + + + +

    +Variables

    static constexpr int MAX_REDUCE_SPECIALIZED_DIMS = 4
     
    static constexpr int REDUCE_N_READS = 16
     
    static constexpr int SOFTMAX_N_READS = 4
     
    static constexpr int RMS_N_READS = 4
     
    static constexpr int RMS_LOOPED_LIMIT = 4096
     
    +

    Macro Definition Documentation

    + +

    ◆ 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 = 16
    +
    +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 new file mode 100644 index 000000000..5e4d90278 --- /dev/null +++ b/docs/build/html/defines_8h_source.html @@ -0,0 +1,113 @@ + + + + + + + +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 = 16;
    +
    13static MTL_CONST constexpr int SOFTMAX_N_READS = 4;
    +
    14static MTL_CONST constexpr int RMS_N_READS = 4;
    +
    15static MTL_CONST constexpr int RMS_LOOPED_LIMIT = 4096;
    +
    static constexpr int MAX_REDUCE_SPECIALIZED_DIMS
    Definition defines.h:11
    +
    static constexpr int REDUCE_N_READS
    Definition defines.h:12
    +
    static constexpr int RMS_LOOPED_LIMIT
    Definition defines.h:15
    +
    static constexpr int SOFTMAX_N_READS
    Definition defines.h:13
    +
    #define MTL_CONST
    Definition defines.h:8
    +
    static constexpr int RMS_N_READS
    Definition defines.h:14
    +
    + + + + diff --git a/docs/build/html/dev/extensions.html b/docs/build/html/dev/extensions.html index e97d6ac09..3f29f87a4 100644 --- a/docs/build/html/dev/extensions.html +++ b/docs/build/html/dev/extensions.html @@ -8,7 +8,7 @@ - Custom Extensions in MLX — MLX 0.14.0 documentation + Custom Extensions in MLX — MLX 0.15.0 documentation @@ -36,7 +36,7 @@ - + @@ -131,8 +131,8 @@ - MLX 0.14.0 documentation - Home - + MLX 0.15.0 documentation - Home + @@ -163,6 +163,7 @@
  • Function Transforms
  • Compilation
  • Conversion to NumPy and Other Frameworks
  • +
  • Distributed Communication
  • Using Streams
  • Examples

    @@ -392,6 +393,7 @@
  • mlx.core.tril
  • mlx.core.triu
  • mlx.core.var
  • +
  • mlx.core.view
  • mlx.core.where
  • mlx.core.zeros
  • mlx.core.zeros_like
  • @@ -506,10 +508,15 @@
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • mlx.nn.GELU
  • +
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • mlx.nn.GRU
  • +
  • mlx.nn.HardShrink
  • +
  • mlx.nn.HardTanh
  • +
  • mlx.nn.Hardswish
  • mlx.nn.InstanceNorm
  • mlx.nn.LayerNorm
  • +
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • @@ -521,14 +528,20 @@
  • mlx.nn.QuantizedLinear
  • mlx.nn.RMSNorm
  • mlx.nn.ReLU
  • +
  • mlx.nn.ReLU6
  • mlx.nn.RNN
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • +
  • mlx.nn.Softmin
  • mlx.nn.Softshrink
  • +
  • mlx.nn.Softsign
  • +
  • mlx.nn.Softmax
  • +
  • mlx.nn.Softplus
  • mlx.nn.Step
  • +
  • mlx.nn.Tanh
  • mlx.nn.Transformer
  • mlx.nn.Upsample
  • @@ -539,6 +552,8 @@
  • 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
  • @@ -551,6 +566,7 @@
  • mlx.nn.sigmoid
  • mlx.nn.silu
  • mlx.nn.softmax
  • +
  • mlx.nn.softmin
  • mlx.nn.softplus
  • mlx.nn.softshrink
  • mlx.nn.step
  • @@ -618,7 +634,15 @@
  • mlx.optimizers.clip_grad_norm
  • -
  • Tree Utils @@ -538,6 +551,8 @@
  • 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
  • @@ -550,6 +565,7 @@
  • mlx.nn.sigmoid
  • mlx.nn.silu
  • mlx.nn.softmax
  • +
  • mlx.nn.softmin
  • mlx.nn.softplus
  • mlx.nn.softshrink
  • mlx.nn.step
  • @@ -617,7 +633,15 @@
  • mlx.optimizers.clip_grad_norm
  • -
  • Tree Utils
      +
    • Distributed Communication +
    • +
    • Tree Utils
      • mlx.utils.tree_flatten
      • mlx.utils.tree_unflatten
      • mlx.utils.tree_map
      • diff --git a/docs/build/html/device_8h.html b/docs/build/html/device_8h.html new file mode 100644 index 000000000..5d75480d3 --- /dev/null +++ b/docs/build/html/device_8h.html @@ -0,0 +1,117 @@ + + + + + + + +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 new file mode 100644 index 000000000..fb18620b4 --- /dev/null +++ b/docs/build/html/device_8h_source.html @@ -0,0 +1,139 @@ + + + + + + + +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_1683daa6c50d5a1449f58a10604f9f12.html b/docs/build/html/dir_1683daa6c50d5a1449f58a10604f9f12.html new file mode 100644 index 000000000..8ca45a8f9 --- /dev/null +++ b/docs/build/html/dir_1683daa6c50d5a1449f58a10604f9f12.html @@ -0,0 +1,93 @@ + + + + + + + +MLX: mlx/backend/metal/mps Directory Reference + + + + + + + + + + + +
        +
        + + + + + + +
        +
        MLX +
        +
        +
        + + + + + + + + +
        +
        + + +
        +
        +
        +
        +
        +
        Loading...
        +
        Searching...
        +
        No Matches
        +
        +
        +
        +
        + + +
        +
        +
        mps Directory Reference
        +
        +
        + + + + +

        +Files

         gemm.h
         
        +
        + + + + diff --git a/docs/build/html/dir_1d446c9bd3c99228254c9484e0bc5c06.html b/docs/build/html/dir_1d446c9bd3c99228254c9484e0bc5c06.html new file mode 100644 index 000000000..d0cb9438c --- /dev/null +++ b/docs/build/html/dir_1d446c9bd3c99228254c9484e0bc5c06.html @@ -0,0 +1,97 @@ + + + + + + + +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 new file mode 100644 index 000000000..8ffdf18d2 --- /dev/null +++ b/docs/build/html/dir_2193406f5b2eae6fc53753d8a9a80df3.html @@ -0,0 +1,95 @@ + + + + + + + +MLX: mlx/io Directory Reference + + + + + + + + + + + +
        +
        + + + + + + +
        +
        MLX +
        +
        +
        + + + + + + + + +
        +
        + + +
        +
        +
        +
        +
        +
        Loading...
        +
        Searching...
        +
        No Matches
        +
        +
        +
        +
        + + +
        +
        +
        io Directory Reference
        +
        +
        + + + + + + +

        +Files

         gguf.h
         
         load.h
         
        +
        + + + + diff --git a/docs/build/html/dir_23833761034051b43bb6c170b56e2cce.html b/docs/build/html/dir_23833761034051b43bb6c170b56e2cce.html new file mode 100644 index 000000000..6a3ff54db --- /dev/null +++ b/docs/build/html/dir_23833761034051b43bb6c170b56e2cce.html @@ -0,0 +1,97 @@ + + + + + + + +MLX: mlx/distributed Directory Reference + + + + + + + + + + + +
        +
        + + + + + + +
        +
        MLX +
        +
        +
        + + + + + + + + +
        +
        + + +
        +
        +
        +
        +
        +
        Loading...
        +
        Searching...
        +
        No Matches
        +
        +
        +
        +
        + + +
        +
        +
        distributed Directory Reference
        +
        +
        + + + + + + + + +

        +Files

         distributed.h
         
         ops.h
         
         primitives.h
         
        +
        + + + + diff --git a/docs/build/html/dir_4336740ec0075891704443b417fef6cb.html b/docs/build/html/dir_4336740ec0075891704443b417fef6cb.html new file mode 100644 index 000000000..06e32723c --- /dev/null +++ b/docs/build/html/dir_4336740ec0075891704443b417fef6cb.html @@ -0,0 +1,121 @@ + + + + + + + +MLX: mlx/backend/metal/jit Directory Reference + + + + + + + + + + + +
        +
        + + + + + + +
        +
        MLX +
        +
        +
        + + + + + + + + +
        +
        + + +
        +
        +
        +
        +
        +
        Loading...
        +
        Searching...
        +
        No Matches
        +
        +
        +
        +
        + + +
        +
        +
        jit Directory Reference
        +
        +
        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

        +Files

         arange.h
         
         binary.h
         
         binary_two.h
         
         copy.h
         
         fft.h
         
         includes.h
         
         indexing.h
         
         reduce.h
         
         scan.h
         
         softmax.h
         
         sort.h
         
         steel_conv.h
         
         steel_gemm.h
         
         ternary.h
         
         unary.h
         
        +
        + + + + diff --git a/docs/build/html/dir_47795aa8999234f6f402f7e89d34d08e.html b/docs/build/html/dir_47795aa8999234f6f402f7e89d34d08e.html new file mode 100644 index 000000000..4a8dfe119 --- /dev/null +++ b/docs/build/html/dir_47795aa8999234f6f402f7e89d34d08e.html @@ -0,0 +1,99 @@ + + + + + + + +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 new file mode 100644 index 000000000..61e4556aa --- /dev/null +++ b/docs/build/html/dir_6379e541ea5051a09bc0e3fdd92fcd3b.html @@ -0,0 +1,95 @@ + + + + + + + +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 new file mode 100644 index 000000000..97a165c59 --- /dev/null +++ b/docs/build/html/dir_6768c99e6145fb9510ccdb40db8ede25.html @@ -0,0 +1,106 @@ + + + + + + + +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 new file mode 100644 index 000000000..91c1e00d2 --- /dev/null +++ b/docs/build/html/dir_70a37effa88bcbd6b791977fa1e64356.html @@ -0,0 +1,154 @@ + + + + + + + +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
         
         indexing.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 new file mode 100644 index 000000000..2cc62c387 --- /dev/null +++ b/docs/build/html/dir_76215a6c54e2b67053e723fc2395583c.html @@ -0,0 +1,102 @@ + + + + + + + +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 new file mode 100644 index 000000000..257878673 --- /dev/null +++ b/docs/build/html/dir_86b95e7b1d0d6e25466bb9213752d32f.html @@ -0,0 +1,93 @@ + + + + + + + +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 new file mode 100644 index 000000000..311f78eda --- /dev/null +++ b/docs/build/html/dir_8c751ccfa9f494753d976761a9d60a84.html @@ -0,0 +1,95 @@ + + + + + + + +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 new file mode 100644 index 000000000..6d7a7c574 --- /dev/null +++ b/docs/build/html/dir_938ab0ecf10b8b860ff766c820f665fd.html @@ -0,0 +1,148 @@ + + + + + + + +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
         
         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 new file mode 100644 index 000000000..5b3dfd779 --- /dev/null +++ b/docs/build/html/dir_9c555e3d0f5b8c3fb3a7397c81fd5bf9.html @@ -0,0 +1,97 @@ + + + + + + + +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 new file mode 100644 index 000000000..ddbfad246 --- /dev/null +++ b/docs/build/html/dir_ad00dcd1517bfdbe01f68ec9b4eff877.html @@ -0,0 +1,93 @@ + + + + + + + +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 new file mode 100644 index 000000000..686f32888 --- /dev/null +++ b/docs/build/html/dir_ba4426224ef60f409462a2a12fa18f06.html @@ -0,0 +1,97 @@ + + + + + + + +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 new file mode 100644 index 000000000..1d1c52ee4 --- /dev/null +++ b/docs/build/html/dir_d0c977ea65824390717cdb7efc36c157.html @@ -0,0 +1,126 @@ + + + + + + + +MLX: mlx/backend/metal Directory Reference + + + + + + + + + + + +
        +
        + + + + + + +
        +
        MLX +
        +
        +
        + + + + + + + + +
        +
        + + +
        +
        +
        +
        +
        +
        Loading...
        +
        Searching...
        +
        No Matches
        +
        +
        +
        +
        + + +
        +
        +
        metal Directory Reference
        +
        +
        + + + + + + + + +

        +Directories

         jit
         
         kernels
         
         mps
         
        + + + + + + + + + + + + + + + + + + + + + + + + + + + +

        +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 new file mode 100644 index 000000000..65f2b6bd4 --- /dev/null +++ b/docs/build/html/dir_df9494e83ef22ae6150a0e080d9709ed.html @@ -0,0 +1,104 @@ + + + + + + + +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 new file mode 100644 index 000000000..f60937beb --- /dev/null +++ b/docs/build/html/dir_f149b24a1b5be11cd70151abe517e3f8.html @@ -0,0 +1,119 @@ + + + + + + + +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
         
         lapack_helper.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 new file mode 100644 index 000000000..734d57934 --- /dev/null +++ b/docs/build/html/dir_f60cd69d27fd3faa641c79056fff0e2d.html @@ -0,0 +1,101 @@ + + + + + + + +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 new file mode 100644 index 000000000..b078120a3 --- /dev/null +++ b/docs/build/html/distributed_2ops_8h.html @@ -0,0 +1,111 @@ + + + + + + + +MLX: mlx/distributed/ops.h File Reference + + + + + + + + + + + +
        +
        + + + + + + +
        +
        MLX +
        +
        +
        + + + + + + + + +
        +
        + + +
        +
        +
        +
        +
        +
        Loading...
        +
        Searching...
        +
        No Matches
        +
        +
        +
        +
        + + +
        +
        + +
        ops.h File Reference
        +
        +
        +
        #include <optional>
        +#include "mlx/distributed/distributed.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)
         
        array mlx::core::distributed::all_gather (const array &x, std::optional< Group > group=std::nullopt)
         
        +
        + + + + diff --git a/docs/build/html/distributed_2ops_8h_source.html b/docs/build/html/distributed_2ops_8h_source.html new file mode 100644 index 000000000..657c02b94 --- /dev/null +++ b/docs/build/html/distributed_2ops_8h_source.html @@ -0,0 +1,111 @@ + + + + + + + +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
        + +
        10
        +
        11array all_sum(const array& x, std::optional<Group> group = std::nullopt);
        +
        12array all_gather(const array& x, std::optional<Group> group = std::nullopt);
        +
        13
        +
        14} // namespace mlx::core::distributed
        +
        Definition array.h:20
        + +
        Definition distributed.h:9
        +
        array all_gather(const array &x, std::optional< Group > group=std::nullopt)
        +
        array all_sum(const array &x, std::optional< Group > group=std::nullopt)
        +
        + + + + diff --git a/docs/build/html/distributed_2primitives_8h.html b/docs/build/html/distributed_2primitives_8h.html new file mode 100644 index 000000000..133953021 --- /dev/null +++ b/docs/build/html/distributed_2primitives_8h.html @@ -0,0 +1,113 @@ + + + + + + + +MLX: mlx/distributed/primitives.h File Reference + + + + + + + + + + + +
        +
        + + + + + + +
        +
        MLX +
        +
        +
        + + + + + + + + +
        +
        + + +
        +
        +
        +
        +
        +
        Loading...
        +
        Searching...
        +
        No Matches
        +
        +
        +
        +
        + + +
        +
        + +
        primitives.h File Reference
        +
        +
        + +

        Go to the source code of this file.

        + + + + + + + + +

        +Classes

        class  mlx::core::distributed::DistPrimitive
         
        class  mlx::core::distributed::AllReduce
         
        class  mlx::core::distributed::AllGather
         
        + + + + + + + +

        +Namespaces

        namespace  mlx
         
        namespace  mlx::core
         
        namespace  mlx::core::distributed
         
        +
        + + + + diff --git a/docs/build/html/distributed_2primitives_8h_source.html b/docs/build/html/distributed_2primitives_8h_source.html new file mode 100644 index 000000000..17ea05b28 --- /dev/null +++ b/docs/build/html/distributed_2primitives_8h_source.html @@ -0,0 +1,239 @@ + + + + + + + +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
        + +
        6#include "mlx/primitives.h"
        +
        7
        + +
        9
        +
        +
        10class DistPrimitive : public Primitive {
        +
        11 public:
        +
        + +
        13 : Primitive(detail::communication_stream()), group_(group) {}
        +
        +
        14
        +
        +
        15 void eval_gpu(const std::vector<array>& inputs, std::vector<array>& outputs)
        +
        16 override {
        +
        17 throw std::runtime_error(
        +
        18 "Communication primitives cannot be run on the GPU");
        +
        19 }
        +
        +
        20
        +
        +
        21 const Group& group() const {
        +
        22 return group_;
        +
        23 }
        +
        +
        24
        +
        25 private:
        +
        26 Group group_;
        +
        27};
        +
        +
        28
        +
        +
        29class AllReduce : public DistPrimitive {
        +
        30 public:
        +
        31 enum ReduceType { And, Or, Sum, Prod, Min, Max };
        +
        32
        +
        + +
        34 : DistPrimitive(group), reduce_type_(reduce_type) {}
        +
        +
        35
        +
        36 void eval_cpu(const std::vector<array>& inputs, std::vector<array>& outputs)
        +
        37 override;
        +
        38 std::pair<std::vector<array>, std::vector<int>> vmap(
        +
        39 const std::vector<array>& inputs,
        +
        40 const std::vector<int>& axes) override;
        +
        41 std::vector<array> jvp(
        +
        42 const std::vector<array>& primals,
        +
        43 const std::vector<array>& tangents,
        +
        44 const std::vector<int>& argnums) override;
        +
        45 std::vector<array> vjp(
        +
        46 const std::vector<array>& primals,
        +
        47 const std::vector<array>& cotangents,
        +
        48 const std::vector<int>& argnums,
        +
        49 const std::vector<array>& outputs) override;
        +
        50
        +
        +
        51 void print(std::ostream& os) override {
        +
        52 switch (reduce_type_) {
        +
        53 case And:
        +
        54 os << "And";
        +
        55 case Or:
        +
        56 os << "And";
        +
        57 break;
        +
        58 case Sum:
        +
        59 os << "Sum";
        +
        60 break;
        +
        61 case Prod:
        +
        62 os << "Prod";
        +
        63 break;
        +
        64 case Min:
        +
        65 os << "Min";
        +
        66 break;
        +
        67 case Max:
        +
        68 os << "Max";
        +
        69 break;
        +
        70 }
        +
        71 os << " AllReduce";
        +
        72 }
        +
        +
        73
        +
        74 private:
        +
        75 ReduceType reduce_type_;
        +
        76};
        +
        +
        77
        +
        +
        78class AllGather : public DistPrimitive {
        +
        79 public:
        + +
        81
        +
        82 void eval_cpu(const std::vector<array>& inputs, std::vector<array>& outputs)
        +
        83 override;
        +
        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
        +
        100} // namespace mlx::core::distributed
        +
        Definition primitives.h:48
        +
        Definition primitives.h:78
        + +
        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...
        +
        AllGather(Group group)
        Definition primitives.h:80
        +
        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.
        +
        Definition primitives.h:29
        +
        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.
        Definition primitives.h:51
        +
        AllReduce(Group group, ReduceType reduce_type)
        Definition primitives.h:33
        +
        ReduceType
        Definition primitives.h:31
        +
        @ Sum
        Definition primitives.h:31
        +
        @ Min
        Definition primitives.h:31
        +
        @ Or
        Definition primitives.h:31
        +
        @ And
        Definition primitives.h:31
        +
        @ Max
        Definition primitives.h:31
        +
        @ Prod
        Definition primitives.h:31
        +
        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:10
        +
        void eval_gpu(const std::vector< array > &inputs, std::vector< array > &outputs) override
        Definition primitives.h:15
        +
        const Group & group() const
        Definition primitives.h:21
        +
        DistPrimitive(Group group)
        Definition primitives.h:12
        + +
        Definition distributed.h:9
        + +
        Definition ops.h:159
        +
        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 new file mode 100644 index 000000000..4467411df --- /dev/null +++ b/docs/build/html/distributed_8h.html @@ -0,0 +1,127 @@ + + + + + + + +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
         
        namespace  mlx::core::distributed::detail
         
        + + + + + + + + + + + + +

        +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.
         
        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)
         
        +
        + + + + diff --git a/docs/build/html/distributed_8h_source.html b/docs/build/html/distributed_8h_source.html new file mode 100644 index 000000000..0a2da513e --- /dev/null +++ b/docs/build/html/distributed_8h_source.html @@ -0,0 +1,160 @@ + + + + + + + +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
        +
        +
        53namespace detail {
        +
        54
        +
        55/* Return the communication stream. */
        + +
        57
        +
        58/* Perform an all reduce sum operation */
        +
        59void all_sum(Group group, const array& input, array& output);
        +
        60
        +
        61/* Perform an all reduce sum operation */
        +
        62void all_gather(Group group, const array& input, array& output);
        +
        63
        +
        64} // namespace detail
        +
        +
        65
        +
        66} // namespace mlx::core::distributed
        +
        + +
        Definition array.h:20
        +
        void all_sum(Group group, const array &input, array &output)
        + +
        void all_gather(Group group, const array &input, array &output)
        +
        Definition distributed.h:9
        +
        Group init(bool strict=false)
        Initialize the distributed backend and return the group containing all discoverable processes.
        + +
        Definition stream.h:9
        +
        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/doc.svg b/docs/build/html/doc.svg new file mode 100644 index 000000000..0b928a531 --- /dev/null +++ b/docs/build/html/doc.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + diff --git a/docs/build/html/docd.svg b/docs/build/html/docd.svg new file mode 100644 index 000000000..ac18b2755 --- /dev/null +++ b/docs/build/html/docd.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + diff --git a/docs/build/html/doxygen.css b/docs/build/html/doxygen.css new file mode 100644 index 000000000..7b7d851b8 --- /dev/null +++ b/docs/build/html/doxygen.css @@ -0,0 +1,2225 @@ +/* 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 new file mode 100644 index 000000000..79a763540 --- /dev/null +++ b/docs/build/html/doxygen.svg @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/build/html/doxygen_crawl.html b/docs/build/html/doxygen_crawl.html new file mode 100644 index 000000000..08f43decd --- /dev/null +++ b/docs/build/html/doxygen_crawl.html @@ -0,0 +1,1301 @@ + + + +Validator / crawler helper + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/build/html/dtype_8h.html b/docs/build/html/dtype_8h.html new file mode 100644 index 000000000..f16755c74 --- /dev/null +++ b/docs/build/html/dtype_8h.html @@ -0,0 +1,181 @@ + + + + + + + +MLX: mlx/dtype.h File Reference + + + + + + + + + + + + +
        + +
        dtype.h File Reference
        +
        +
        +
        #include <complex>
        +#include <cstdint>
        +#include <ostream>
        +#include <string>
        +#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)
         
        std::string mlx::core::dtype_to_array_protocol (const Dtype &t)
         
        Dtype mlx::core::dtype_from_array_protocol (std::string_view 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 new file mode 100644 index 000000000..7109bf00a --- /dev/null +++ b/docs/build/html/dtype_8h_source.html @@ -0,0 +1,282 @@ + + + + + + + +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#include <ostream>
        +
        8#include <string>
        +
        9
        +
        10#include "mlx/types/complex.h"
        + +
        12
        +
        13namespace mlx::core {
        +
        14
        +
        +
        15struct Dtype {
        +
        +
        16 enum class Val {
        +
        17 bool_,
        +
        18 uint8,
        +
        19 uint16,
        +
        20 uint32,
        +
        21 uint64,
        +
        22 int8,
        +
        23 int16,
        +
        24 int32,
        +
        25 int64,
        +
        26 float16,
        +
        27 float32,
        + + +
        30 };
        +
        +
        31
        +
        +
        32 enum class Kind {
        +
        33 b, /* bool */
        +
        34 u, /* unsigned int */
        +
        35 i, /* signed int */
        +
        36 f, /* float */
        +
        37 c, /* complex */
        +
        38 V, /* void - used for brain float */
        +
        39 };
        +
        +
        40
        +
        +
        41 enum class Category {
        + + +
        44 inexact,
        + + +
        47 integer,
        +
        48 number,
        +
        49 generic
        +
        50 };
        +
        +
        51
        + +
        53 const uint8_t size;
        +
        54 constexpr explicit Dtype(Val val, uint8_t size) : val(val), size(size) {};
        +
        +
        55 constexpr operator Val() const {
        +
        56 return val;
        +
        57 };
        +
        +
        58};
        +
        +
        59
        +
        60inline constexpr Dtype bool_{Dtype::Val::bool_, sizeof(bool)};
        +
        61
        +
        62inline constexpr Dtype uint8{Dtype::Val::uint8, sizeof(uint8_t)};
        +
        63inline constexpr Dtype uint16{Dtype::Val::uint16, sizeof(uint16_t)};
        +
        64inline constexpr Dtype uint32{Dtype::Val::uint32, sizeof(uint32_t)};
        +
        65inline constexpr Dtype uint64{Dtype::Val::uint64, sizeof(uint64_t)};
        +
        66
        +
        67inline constexpr Dtype int8{Dtype::Val::int8, sizeof(int8_t)};
        +
        68inline constexpr Dtype int16{Dtype::Val::int16, sizeof(int16_t)};
        +
        69inline constexpr Dtype int32{Dtype::Val::int32, sizeof(int32_t)};
        +
        70inline constexpr Dtype int64{Dtype::Val::int64, sizeof(int64_t)};
        +
        71
        +
        72inline constexpr Dtype float16{Dtype::Val::float16, sizeof(uint16_t)};
        +
        73inline constexpr Dtype float32{Dtype::Val::float32, sizeof(float)};
        +
        74inline constexpr Dtype bfloat16{Dtype::Val::bfloat16, sizeof(uint16_t)};
        + +
        76
        + + + + + + + + + +
        86inline constexpr Dtype::Category generic = Dtype::Category::generic;
        +
        87
        +
        88bool issubdtype(const Dtype& a, const Dtype& b);
        +
        89bool issubdtype(const Dtype::Category& a, const Dtype& b);
        +
        90bool issubdtype(const Dtype& a, const Dtype::Category& b);
        + +
        92
        +
        93Dtype promote_types(const Dtype& t1, const Dtype& t2);
        +
        94
        +
        +
        95inline uint8_t size_of(const Dtype& t) {
        +
        96 return t.size;
        +
        97}
        +
        +
        98
        + +
        100
        +
        101template <typename T>
        +
        + +
        103 operator Dtype();
        +
        104};
        +
        +
        105
        +
        106// Array protocol typestring for Dtype
        +
        107std::string dtype_to_array_protocol(const Dtype& t);
        +
        108// Dtype from array protocol type string
        + +
        110
        +
        111} // namespace mlx::core
        + +
        Definition allocator.h:7
        +
        constexpr Dtype::Category number
        Definition dtype.h:85
        +
        constexpr Dtype::Category integer
        Definition dtype.h:84
        +
        constexpr Dtype bool_
        Definition dtype.h:60
        +
        Dtype dtype_from_array_protocol(std::string_view t)
        +
        constexpr Dtype uint64
        Definition dtype.h:65
        +
        constexpr Dtype::Category signedinteger
        Definition dtype.h:81
        +
        constexpr Dtype uint16
        Definition dtype.h:63
        +
        constexpr Dtype::Category unsignedinteger
        Definition dtype.h:82
        +
        Dtype promote_types(const Dtype &t1, const Dtype &t2)
        +
        constexpr Dtype bfloat16
        Definition dtype.h:74
        +
        constexpr Dtype::Category inexact
        Definition dtype.h:80
        +
        constexpr Dtype int32
        Definition dtype.h:69
        +
        constexpr Dtype float32
        Definition dtype.h:73
        +
        constexpr Dtype::Category complexfloating
        Definition dtype.h:77
        +
        constexpr Dtype int16
        Definition dtype.h:68
        +
        std::string dtype_to_array_protocol(const Dtype &t)
        +
        constexpr Dtype int8
        Definition dtype.h:67
        +
        constexpr Dtype int64
        Definition dtype.h:70
        +
        constexpr Dtype uint8
        Definition dtype.h:62
        +
        constexpr Dtype float16
        Definition dtype.h:72
        +
        constexpr Dtype uint32
        Definition dtype.h:64
        +
        constexpr Dtype::Category floating
        Definition dtype.h:79
        +
        bool issubdtype(const Dtype &a, const Dtype &b)
        +
        Dtype::Kind kindof(const Dtype &t)
        +
        uint8_t size_of(const Dtype &t)
        Definition dtype.h:95
        +
        constexpr Dtype complex64
        Definition dtype.h:75
        +
        Definition dtype.h:15
        +
        Category
        Definition dtype.h:41
        + + + + + + + + +
        Val val
        Definition dtype.h:52
        +
        Kind
        Definition dtype.h:32
        + + + + + + +
        const uint8_t size
        Definition dtype.h:53
        +
        Val
        Definition dtype.h:16
        + + + + + + + + + + + + + +
        constexpr Dtype(Val val, uint8_t size)
        Definition dtype.h:54
        +
        Definition dtype.h:102
        +
        Definition complex.h:34
        + +
        + + + + diff --git a/docs/build/html/dynsections.js b/docs/build/html/dynsections.js new file mode 100644 index 000000000..8f493264f --- /dev/null +++ b/docs/build/html/dynsections.js @@ -0,0 +1,194 @@ +/* + @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/erf_8h.html b/docs/build/html/erf_8h.html new file mode 100644 index 000000000..67c255b66 --- /dev/null +++ b/docs/build/html/erf_8h.html @@ -0,0 +1,135 @@ + + + + + + + +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 new file mode 100644 index 000000000..7e4f5982d --- /dev/null +++ b/docs/build/html/erf_8h_source.html @@ -0,0 +1,172 @@ + + + + + + + +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 new file mode 100644 index 000000000..4ab485283 --- /dev/null +++ b/docs/build/html/event_8h.html @@ -0,0 +1,108 @@ + + + + + + + +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 new file mode 100644 index 000000000..62f8131b5 --- /dev/null +++ b/docs/build/html/event_8h_source.html @@ -0,0 +1,174 @@ + + + + + + + +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() {};
        +
        14
        +
        15 Event(const Stream& steam);
        +
        16
        +
        17 // Wait for the event to be signaled at its curent 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() {
        +
        25 return event_ != nullptr;
        +
        26 };
        +
        +
        27
        +
        +
        28 uint64_t value() {
        +
        29 return value_;
        +
        30 };
        +
        +
        31
        +
        +
        32 void set_value(uint64_t v) {
        +
        33 value_ = v;
        +
        34 };
        +
        +
        35
        +
        +
        36 const Stream& stream() {
        +
        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() {
        +
        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_{nullptr};
        +
        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()
        Definition event.h:36
        +
        bool valid()
        Definition event.h:24
        + + +
        const std::shared_ptr< void > & raw_event()
        Definition event.h:44
        +
        Event()
        Definition event.h:13
        +
        uint64_t value()
        Definition event.h:28
        +
        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 a0302285c..33e377d52 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.14.0 documentation + Linear Regression — MLX 0.15.0 documentation @@ -36,7 +36,7 @@ - + @@ -131,8 +131,8 @@ - MLX 0.14.0 documentation - Home - + MLX 0.15.0 documentation - Home + @@ -163,6 +163,7 @@
      • Function Transforms
      • Compilation
      • Conversion to NumPy and Other Frameworks
      • +
      • Distributed Communication
      • Using Streams

      Examples

      @@ -392,6 +393,7 @@
    • mlx.core.tril
    • mlx.core.triu
    • mlx.core.var
    • +
    • mlx.core.view
    • mlx.core.where
    • mlx.core.zeros
    • mlx.core.zeros_like
    • @@ -506,10 +508,15 @@
    • mlx.nn.Dropout3d
    • mlx.nn.Embedding
    • mlx.nn.GELU
    • +
    • mlx.nn.GLU
    • mlx.nn.GroupNorm
    • mlx.nn.GRU
    • +
    • mlx.nn.HardShrink
    • +
    • mlx.nn.HardTanh
    • +
    • mlx.nn.Hardswish
    • mlx.nn.InstanceNorm
    • mlx.nn.LayerNorm
    • +
    • mlx.nn.LeakyReLU
    • mlx.nn.Linear
    • mlx.nn.LSTM
    • mlx.nn.MaxPool1d
    • @@ -521,14 +528,20 @@
    • mlx.nn.QuantizedLinear
    • mlx.nn.RMSNorm
    • mlx.nn.ReLU
    • +
    • mlx.nn.ReLU6
    • mlx.nn.RNN
    • mlx.nn.RoPE
    • mlx.nn.SELU
    • mlx.nn.Sequential
    • mlx.nn.SiLU
    • mlx.nn.SinusoidalPositionalEncoding
    • +
    • mlx.nn.Softmin
    • mlx.nn.Softshrink
    • +
    • mlx.nn.Softsign
    • +
    • mlx.nn.Softmax
    • +
    • mlx.nn.Softplus
    • mlx.nn.Step
    • +
    • mlx.nn.Tanh
    • mlx.nn.Transformer
    • mlx.nn.Upsample
    @@ -539,6 +552,8 @@
  • 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
  • @@ -551,6 +566,7 @@
  • mlx.nn.sigmoid
  • mlx.nn.silu
  • mlx.nn.softmax
  • +
  • mlx.nn.softmin
  • mlx.nn.softplus
  • mlx.nn.softshrink
  • mlx.nn.step
  • @@ -618,7 +634,15 @@
  • mlx.optimizers.clip_grad_norm
  • -
  • Tree Utils @@ -539,6 +552,8 @@
  • 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
  • @@ -551,6 +566,7 @@
  • mlx.nn.sigmoid
  • mlx.nn.silu
  • mlx.nn.softmax
  • +
  • mlx.nn.softmin
  • mlx.nn.softplus
  • mlx.nn.softshrink
  • mlx.nn.step
  • @@ -618,7 +634,15 @@
  • mlx.optimizers.clip_grad_norm
  • -
  • Tree Utils @@ -539,6 +552,8 @@
  • 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
  • @@ -551,6 +566,7 @@
  • mlx.nn.sigmoid
  • mlx.nn.silu
  • mlx.nn.softmax
  • +
  • mlx.nn.softmin
  • mlx.nn.softplus
  • mlx.nn.softshrink
  • mlx.nn.step
  • @@ -618,7 +634,15 @@
  • mlx.optimizers.clip_grad_norm
  • -
  • Tree Utils @@ -536,6 +549,8 @@
  • 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
  • @@ -548,6 +563,7 @@
  • mlx.nn.sigmoid
  • mlx.nn.silu
  • mlx.nn.softmax
  • +
  • mlx.nn.softmin
  • mlx.nn.softplus
  • mlx.nn.softshrink
  • mlx.nn.step
  • @@ -615,7 +631,15 @@
  • mlx.optimizers.clip_grad_norm
  • -
  • Tree Utils

    Examples

    @@ -391,6 +392,7 @@
  • mlx.core.tril
  • mlx.core.triu
  • mlx.core.var
  • +
  • mlx.core.view
  • mlx.core.where
  • mlx.core.zeros
  • mlx.core.zeros_like
  • @@ -505,10 +507,15 @@
  • mlx.nn.Dropout3d
  • mlx.nn.Embedding
  • mlx.nn.GELU
  • +
  • mlx.nn.GLU
  • mlx.nn.GroupNorm
  • mlx.nn.GRU
  • +
  • mlx.nn.HardShrink
  • +
  • mlx.nn.HardTanh
  • +
  • mlx.nn.Hardswish
  • mlx.nn.InstanceNorm
  • mlx.nn.LayerNorm
  • +
  • mlx.nn.LeakyReLU
  • mlx.nn.Linear
  • mlx.nn.LSTM
  • mlx.nn.MaxPool1d
  • @@ -520,14 +527,20 @@
  • mlx.nn.QuantizedLinear
  • mlx.nn.RMSNorm
  • mlx.nn.ReLU
  • +
  • mlx.nn.ReLU6
  • mlx.nn.RNN
  • mlx.nn.RoPE
  • mlx.nn.SELU
  • mlx.nn.Sequential
  • mlx.nn.SiLU
  • mlx.nn.SinusoidalPositionalEncoding
  • +
  • mlx.nn.Softmin
  • mlx.nn.Softshrink
  • +
  • mlx.nn.Softsign
  • +
  • mlx.nn.Softmax
  • +
  • mlx.nn.Softplus
  • mlx.nn.Step
  • +
  • mlx.nn.Tanh
  • mlx.nn.Transformer
  • mlx.nn.Upsample
  • @@ -538,6 +551,8 @@
  • 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
  • @@ -550,6 +565,7 @@
  • mlx.nn.sigmoid
  • mlx.nn.silu
  • mlx.nn.softmax
  • +
  • mlx.nn.softmin
  • mlx.nn.softplus
  • mlx.nn.softshrink
  • mlx.nn.step
  • @@ -617,7 +633,15 @@
  • mlx.optimizers.clip_grad_norm
  • -
  • Tree Utils
      +
    • Distributed Communication +
    • +
    • Tree Utils
      • mlx.utils.tree_flatten
      • mlx.utils.tree_unflatten
      • mlx.utils.tree_map
      • diff --git a/docs/build/html/search/all_0.js b/docs/build/html/search/all_0.js new file mode 100644 index 000000000..f8b83e4a3 --- /dev/null +++ b/docs/build/html/search/all_0.js @@ -0,0 +1,14 @@ +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']]], + ['_5fcontiguous_5fstrided_5freduce_2',['_contiguous_strided_reduce',['../reduce__col_8h.html#a6d72f6a88a37d8e031d0ac33f26ecbb4',1,'reduce_col.h']]], + ['_5fmlx_5fbfloat16_3',['_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_4',['_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)']]], + ['_5fmps_5fprivate_5fcls_5',['_MPS_PRIVATE_CLS',['../mps_2gemm_8h.html#a2986cabc5a9ec53428151949c0369602',1,'gemm.h']]], + ['_5fmps_5fprivate_5fsel_6',['_MPS_PRIVATE_SEL',['../mps_2gemm_8h.html#a10e733259894b7fddd11f46b9eabfe5f',1,'gemm.h']]], + ['_5fmtl_5fprivate_5fdef_5fcls_7',['_MTL_PRIVATE_DEF_CLS',['../namespace_m_t_l_1_1_private_1_1_class.html#af6fc5dd227064897589f56d8912a8fd6',1,'MTL::Private::Class::_MTL_PRIVATE_DEF_CLS(MPSMatrixDescriptor)'],['../namespace_m_t_l_1_1_private_1_1_class.html#a23ba07d1dd78ce20ecba16d88faba5e2',1,'MTL::Private::Class::_MTL_PRIVATE_DEF_CLS(MPSMatrix)'],['../namespace_m_t_l_1_1_private_1_1_class.html#aa94ef8e094d91ad36af140823c15b59d',1,'MTL::Private::Class::_MTL_PRIVATE_DEF_CLS(MPSVectorDescriptor)'],['../namespace_m_t_l_1_1_private_1_1_class.html#aeff20cff997534929deb18ce0b7e947f',1,'MTL::Private::Class::_MTL_PRIVATE_DEF_CLS(MPSVector)'],['../namespace_m_t_l_1_1_private_1_1_class.html#a48f22abaf491778683a68e7db28839c9',1,'MTL::Private::Class::_MTL_PRIVATE_DEF_CLS(MPSKernel)'],['../namespace_m_t_l_1_1_private_1_1_class.html#a24a734c27edbaf99bbb3c3741fe98688',1,'MTL::Private::Class::_MTL_PRIVATE_DEF_CLS(MPSMatrixMultiplication)'],['../namespace_m_t_l_1_1_private_1_1_class.html#ac162f79565a61ed1f2316ca1a38c774d',1,'MTL::Private::Class::_MTL_PRIVATE_DEF_CLS(MPSMatrixVectorMultiplication)']]], + ['_5fmtl_5fprivate_5fdef_5fsel_8',['_MTL_PRIVATE_DEF_SEL',['../namespace_m_t_l_1_1_private_1_1_selector.html#acc50646a91989ebaca3cf945f42f2b62',1,'MTL::Private::Selector::_MTL_PRIVATE_DEF_SEL(matrixDescriptorWithRows_columns_rowBytes_dataType, "matrixDescriptorWithRows:columns:rowBytes:dataType:")'],['../namespace_m_t_l_1_1_private_1_1_selector.html#a11464ac9c57b12981683bf25afc6ae77',1,'MTL::Private::Selector::_MTL_PRIVATE_DEF_SEL(matrixDescriptorWithRows_columns_matrices_rowBytes_matrixBytes_dataType, "matrixDescriptorWithRows:columns:matrices:rowBytes:matrixBytes:dataType:")'],['../namespace_m_t_l_1_1_private_1_1_selector.html#a30c8b5bf66838e00c44d4cef997bee78',1,'MTL::Private::Selector::_MTL_PRIVATE_DEF_SEL(rows, "rows")'],['../namespace_m_t_l_1_1_private_1_1_selector.html#a5628c8d22de5d0339cdfd37cb8e103b6',1,'MTL::Private::Selector::_MTL_PRIVATE_DEF_SEL(initWithBuffer_descriptor, "initWithBuffer:descriptor:")'],['../namespace_m_t_l_1_1_private_1_1_selector.html#ae842530803a52e75c546db1f9424f933',1,'MTL::Private::Selector::_MTL_PRIVATE_DEF_SEL(initWithDevice_, "initWithDevice:transposeLeft:transposeRight:" "resultRows:resultColumns:interiorColumns:alpha:beta:")'],['../namespace_m_t_l_1_1_private_1_1_selector.html#a8631d028899e57b928d1240c4cdda929',1,'MTL::Private::Selector::_MTL_PRIVATE_DEF_SEL(encodeToCommandBuffer_leftMatrix_rightMatrix_resultMatrix, "encodeToCommandBuffer:leftMatrix:rightMatrix:resultMatrix:")'],['../namespace_m_t_l_1_1_private_1_1_selector.html#a071584fae1458eba0ed41e02e640d34b',1,'MTL::Private::Selector::_MTL_PRIVATE_DEF_SEL(setLeftMatrixOrigin_, "setLeftMatrixOrigin:")'],['../namespace_m_t_l_1_1_private_1_1_selector.html#a8534190f99aac6ab3a01c0f6965e8882',1,'MTL::Private::Selector::_MTL_PRIVATE_DEF_SEL(setRightMatrixOrigin_, "setRightMatrixOrigin:")'],['../namespace_m_t_l_1_1_private_1_1_selector.html#a8b1a7f7c97c62753b3cb7447d5aa4798',1,'MTL::Private::Selector::_MTL_PRIVATE_DEF_SEL(setResultMatrixOrigin_, "setResultMatrixOrigin:")'],['../namespace_m_t_l_1_1_private_1_1_selector.html#af84065144e91d5fb295e23b42f3be8cc',1,'MTL::Private::Selector::_MTL_PRIVATE_DEF_SEL(setBatchStart_, "setBatchStart:")'],['../namespace_m_t_l_1_1_private_1_1_selector.html#ac13dc3039959f5f5d970f02cbc89c16d',1,'MTL::Private::Selector::_MTL_PRIVATE_DEF_SEL(setBatchSize_, "setBatchSize:")'],['../namespace_m_t_l_1_1_private_1_1_selector.html#a46fcb509b385834113fe0b0f27ec768b',1,'MTL::Private::Selector::_MTL_PRIVATE_DEF_SEL(vectorDescriptorWithLength_dataType, "vectorDescriptorWithLength:dataType:")'],['../namespace_m_t_l_1_1_private_1_1_selector.html#a4c7a7cb16b14dd691e1211913572c6a8',1,'MTL::Private::Selector::_MTL_PRIVATE_DEF_SEL(vectorDescriptorWithLength_vectors_vectorBytes_dataType, "vectorDescriptorWithLength:vectors:vectorBytes:dataType:")'],['../namespace_m_t_l_1_1_private_1_1_selector.html#ab84cb9467edcc1a5ce32f001cb46c656',1,'MTL::Private::Selector::_MTL_PRIVATE_DEF_SEL(initWithDevice_transpose_rows_columns_alpha_beta, "initWithDevice:transpose:rows:columns:alpha:beta:")'],['../namespace_m_t_l_1_1_private_1_1_selector.html#aec59058ff2c151d67647ad2680074090',1,'MTL::Private::Selector::_MTL_PRIVATE_DEF_SEL(encodeToCommandBuffer_inputMatrix_inputVector_resultVector, "encodeToCommandBuffer:inputMatrix:inputVector:resultVector:")']]], + ['_5fnomask_9',['_NoMask',['../struct___no_mask.html',1,'']]], + ['_5fnumeric_5flimits_5fimpl_3c_20bfloat16_5ft_20_3e_10',['_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 new file mode 100644 index 000000000..83068bb5b --- /dev/null +++ b/docs/build/html/search/all_1.js @@ -0,0 +1,107 @@ +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'],['../classmlx_1_1core_1_1_abs.html#a1247e72feb640fb562d036b2dd1ae4ad',1,'mlx::core::Abs::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()']]], + ['accum_5ftype_2',['accum_type',['../structmlx_1_1steel_1_1_accum_helper.html#ae52abf69e7ba6af1a73d65d57182ed26',1,'mlx::steel::AccumHelper']]], + ['accumhelper_3',['AccumHelper',['../structmlx_1_1steel_1_1_accum_helper.html',1,'mlx::steel']]], + ['acos_4',['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_5',['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_6',['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_7',['add',['../group__ops.html#ga2d32d67cfd76785a72c43d89b94dc7d7',1,'mlx::core']]], + ['add_5fhalf_5fbinops_8',['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_9',['add_vec',['../structpocketfft_1_1detail_1_1add__vec.html',1,'pocketfft::detail']]], + ['add_5fvec_3c_20cmplx_3c_20t_20_3e_20_3e_10',['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_11',['add_vec_t',['../namespacepocketfft_1_1detail.html#a421aa74fbee775a96463246f72b144d6',1,'pocketfft::detail']]], + ['addmm_12',['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_13',['addmm',['../group__ops.html#ga82a53e083205a965387b3c3e2463244a',1,'mlx::core']]], + ['adj_5fimplicit_5fm_14',['adj_implicit_m',['../structmlx_1_1steel_1_1_conv2_d_general_jump_params.html#a5bfca3bc43055013d28430cb1f023756',1,'mlx::steel::Conv2DGeneralJumpParams']]], + ['adj_5fout_5fh_15',['adj_out_h',['../structmlx_1_1steel_1_1_conv2_d_general_jump_params.html#a879cc9757f59605a87d936ec4156040d',1,'mlx::steel::Conv2DGeneralJumpParams']]], + ['adj_5fout_5fhw_16',['adj_out_hw',['../structmlx_1_1steel_1_1_conv2_d_general_jump_params.html#aed0ffd63fbc85fd5d5c4cc7b43f68363',1,'mlx::steel::Conv2DGeneralJumpParams']]], + ['adj_5fout_5fw_17',['adj_out_w',['../structmlx_1_1steel_1_1_conv2_d_general_jump_params.html#ab971bf879079895189331fbeaf33c211',1,'mlx::steel::Conv2DGeneralJumpParams']]], + ['advance_18',['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()']]], + ['align_5fk_19',['align_K',['../steel__gemm__fused_8h.html#a8bdd2cecf97aa5b033152b1d0f0d2416',1,'steel_gemm_fused.h']]], + ['align_5fm_20',['align_M',['../steel__gemm__fused_8h.html#a55af226dc74b0026b7d4b865142a6d21',1,'steel_gemm_fused.h']]], + ['align_5fn_21',['align_N',['../steel__gemm__fused_8h.html#aa3b267252df2dcbfdde8c5f174d27036',1,'steel_gemm_fused.h']]], + ['aligned_5falloc_22',['aligned_alloc',['../namespacepocketfft_1_1detail.html#ae397445c61400f47a8fe3f8e1b6d0b76',1,'pocketfft::detail']]], + ['aligned_5fallocator_23',['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_24',['aligned_dealloc',['../namespacepocketfft_1_1detail.html#aec7820e36a33e0a8bb83aa03b04b81e8',1,'pocketfft::detail']]], + ['all_25',['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_26',['all_gather',['../namespacemlx_1_1core_1_1distributed_1_1detail.html#aeb5a1726358213bc75756506f7b54d04',1,'mlx::core::distributed::detail::all_gather()'],['../namespacemlx_1_1core_1_1distributed.html#abf45499dd1209ba7162908f14634d2ba',1,'mlx::core::distributed::all_gather()']]], + ['all_5freduce_27',['all_reduce',['../reduce__all_8h.html#a8d143d2fea044e4808b69cc3723e33c7',1,'reduce_all.h']]], + ['all_5freduce_5fdispatch_28',['all_reduce_dispatch',['../namespacemlx_1_1core.html#a3ab0fd997d9a35782106ff083a72e098',1,'mlx::core']]], + ['all_5freduce_5fno_5fatomics_29',['all_reduce_no_atomics',['../reduce__all_8h.html#a09d140566cb3e6418a821be1e42db282',1,'reduce_all.h']]], + ['all_5fsum_30',['all_sum',['../namespacemlx_1_1core_1_1distributed_1_1detail.html#aa1d225b25f7b6426c48c5e35860ee960',1,'mlx::core::distributed::detail::all_sum()'],['../namespacemlx_1_1core_1_1distributed.html#ad1c6aa544781765060552cacfa845001',1,'mlx::core::distributed::all_sum()']]], + ['allclose_31',['allclose',['../group__ops.html#gaf0cd4257de7542daf9faf5e605e31020',1,'mlx::core']]], + ['allgather_32',['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#ac9d0f1ba0d9602fa22e8f2b60f1231e0',1,'mlx::core::distributed::AllGather::AllGather()']]], + ['alloc_33',['alloc',['../class_m_p_s_1_1_matrix.html#a906d97b4b2365bec4acf278ef22205b4',1,'MPS::Matrix::alloc()'],['../class_m_p_s_1_1_matrix_multiplication.html#a9f1400b36672bd6f228a80982e5b2717',1,'MPS::MatrixMultiplication::alloc()'],['../class_m_p_s_1_1_vector.html#ac08919c16342247963b14766e65332a3',1,'MPS::Vector::alloc()'],['../class_m_p_s_1_1_matrix_vector_multiplication.html#aeca798759333aae7fdd594835e93d16a',1,'MPS::MatrixVectorMultiplication::alloc()']]], + ['alloc_5ftmp_34',['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_35',['allocate',['../structpocketfft_1_1detail_1_1threading_1_1aligned__allocator.html#a4f785747b898980756af9e5515363826',1,'pocketfft::detail::threading::aligned_allocator']]], + ['allocator_36',['Allocator',['../classmlx_1_1core_1_1allocator_1_1_allocator.html',1,'mlx::core::allocator::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_37',['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'],['../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_38',['allocator.h',['../allocator_8h.html',1,'(Global Namespace)'],['../backend_2metal_2allocator_8h.html',1,'(Global Namespace)']]], + ['allreduce_39',['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#a936b320f7b0a435f96e018c25f35e7ed',1,'mlx::core::distributed::AllReduce::AllReduce()']]], + ['alpha_40',['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_41',['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_42',['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_43',['apply',['../struct_scale_op.html#a69f82bc925843a4e1c14dfe8ad2f3218',1,'ScaleOp::apply()'],['../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_44',['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_45',['apply_epilogue_safe',['../structmlx_1_1steel_1_1_block_m_m_a.html#a9e48f2d51099ec00171506724faab54a',1,'mlx::steel::BlockMMA']]], + ['apply_5finplace_5fop_46',['apply_inplace_op',['../structmlx_1_1steel_1_1_block_loader.html#adb4ca2cc193630a779de552fa8847ddf',1,'mlx::steel::BlockLoader']]], + ['arange_47',['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_48',['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_49',['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_50',['arange_kernels',['../metal_2jit_2arange_8h.html#a2f49fb7bdc0a90230077fe2023e6e5c0',1,'arange.h']]], + ['arccos_51',['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_52',['arccos',['../group__ops.html#ga08bec7cb10c84466487b507fc5bf9776',1,'mlx::core']]], + ['arccosh_53',['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_54',['arccosh',['../group__ops.html#gaafafcfcebdf7248679c8543d0c0497e5',1,'mlx::core']]], + ['arcsin_55',['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_56',['arcsin',['../group__ops.html#ga8770e8c8f23f13343911f4c9d6e1c619',1,'mlx::core']]], + ['arcsinh_57',['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_58',['arcsinh',['../group__ops.html#gac62e2cedc49ef2c90dd8584000317450',1,'mlx::core']]], + ['arctan_59',['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_60',['arctan',['../group__ops.html#gaa041f3f070e68f4946db07516b7d092e',1,'mlx::core']]], + ['arctan2_61',['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_62',['arctan2',['../group__ops.html#ga6caba9c92b5989123501f909cc7da354',1,'mlx::core']]], + ['arctanh_63',['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_64',['arctanh',['../group__ops.html#gab46a35925a04c5a9d2ec7898ee55358e',1,'mlx::core']]], + ['argmax_65',['ArgMax',['../classmlx_1_1core_1_1_arg_reduce.html#a920ed48caaba76683be0d1f1ed4a8bd3acc6659315ab0001abd37cbfcbe837e7e',1,'mlx::core::ArgReduce']]], + ['argmax_66',['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_67',['ArgMin',['../classmlx_1_1core_1_1_arg_reduce.html#a920ed48caaba76683be0d1f1ed4a8bd3a93a8a9221545ae9518d289d9ac4d09e9',1,'mlx::core::ArgReduce']]], + ['argmin_68',['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_69',['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_70',['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_71',['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_72',['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_73',['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_74',['argument_encoder',['../classmlx_1_1core_1_1metal_1_1_device.html#a6e33e2b1287324fb4a6575e0da5e5881',1,'mlx::core::metal::Device']]], + ['arr_75',['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_76',['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_77',['arr< pocketfft::detail::cmplx< Thigh > >',['../classpocketfft_1_1detail_1_1arr.html',1,'pocketfft::detail']]], + ['arr_3c_20t0_20_3e_78',['arr< T0 >',['../classpocketfft_1_1detail_1_1arr.html',1,'pocketfft::detail']]], + ['arr_5finfo_79',['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_80',['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_81',['Core array operations',['../group__ops.html',1,'']]], + ['array_2eh_82',['array.h',['../array_8h.html',1,'']]], + ['array_5fequal_83',['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_84',['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_85',['As_offset',['../structmlx_1_1steel_1_1_block_m_m_a.html#a138ed1bbad2ca88d3a3c7d162cd36562',1,'mlx::steel::BlockMMA']]], + ['as_5fstrided_86',['as_strided',['../group__ops.html#ga8de80ecef30fc560003d40f61a38b99d',1,'mlx::core']]], + ['asimd_87',['Asimd',['../structmlx_1_1steel_1_1_block_m_m_a.html#a92ac4b483cb58c361d7a657e0738c070',1,'mlx::steel::BlockMMA']]], + ['asin_88',['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_89',['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_90',['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_91',['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_92',['astype',['../group__ops.html#ga0e58c24fc5668e5a521e5b45e8370a62',1,'mlx::core']]], + ['async_5feval_93',['async_eval',['../namespacemlx_1_1core.html#a15dda19aa7fa1fc5fca35df5cf963297',1,'mlx::core']]], + ['atan_94',['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_95',['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_96',['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_97',['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_98',['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_99',['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_100',['atomic.h',['../atomic_8h.html',1,'']]], + ['atomic_5fupdate_101',['atomic_update',['../struct_none.html#a9d7414f58b3a526758007a4a1da72c74',1,'None::atomic_update()'],['../struct_and.html#a9ddf6d3f16dee000a5f0a30af4d43a7f',1,'And::atomic_update(device mlx_atomic< unsigned int > *out, bool val, int elem_idx, int offset=0)'],['../struct_and.html#af4a5c9f276d21580c0acaf1ff7064c57',1,'And::atomic_update(device mlx_atomic< bool > *out, bool val, uint offset=0)'],['../struct_or.html#a40840c0506bf4ed9a0771ba42c9ebb0f',1,'Or::atomic_update(device mlx_atomic< unsigned int > *out, bool val, uint elem_idx, uint offset=0)'],['../struct_or.html#aad1e6b5b015cd0910625da725afabdf3',1,'Or::atomic_update(device mlx_atomic< bool > *out, bool val, uint offset=0)'],['../struct_sum.html#a3188318e74823f00b9367317ec22ad6b',1,'Sum::atomic_update()'],['../struct_prod.html#a7ad8c7c18b1c54ff1d158683744a324d',1,'Prod::atomic_update()'],['../struct_min.html#a2377172960d21faa67b13c6b1eec5c69',1,'Min::atomic_update()'],['../struct_max.html#ac478a5cd1f567164d786240589d9260c',1,'Max::atomic_update()']]], + ['attach_5fevent_102',['attach_event',['../classmlx_1_1core_1_1array.html#a000c3cfe13cb378bf0523b62816190da',1,'mlx::core::array']]], + ['available_103',['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 new file mode 100644 index 000000000..2cba69f64 --- /dev/null +++ b/docs/build/html/search/all_10.js @@ -0,0 +1,70 @@ +var searchData= +[ + ['pad_0',['Pad',['../classmlx_1_1core_1_1_pad.html',1,'mlx::core']]], + ['pad_1',['pad',['../struct_m_l_x_conv_params.html#ae84a9afb3a95b57e0b763bb0ebda0753',1,'MLXConvParams']]], + ['pad_2',['Pad',['../classmlx_1_1core_1_1_pad.html#ad03da2c40b1e1f2fdf2649d00fa4ab43',1,'mlx::core::Pad']]], + ['pad_3',['pad',['../group__ops.html#ga4fd04d6472ae7cdb94a174edfe338ea3',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), StreamOrDevice s={})'],['../group__ops.html#gaca4e00d5e4ed9e9f29d56a17f19c2e31',1,'mlx::core::pad(const array &a, const std::vector< std::pair< int, int > > &pad_width, const array &pad_value=array(0), StreamOrDevice s={})'],['../group__ops.html#ga608164c4f5b4ac2fba374219285d90bc',1,'mlx::core::pad(const array &a, const std::pair< int, int > &pad_width, const array &pad_value=array(0), StreamOrDevice s={})'],['../group__ops.html#ga2e57e26c4d7f3d18802c164656cf915c',1,'mlx::core::pad(const array &a, int pad_width, const array &pad_value=array(0), StreamOrDevice s={})']]], + ['pad_5fgpu_4',['pad_gpu',['../namespacemlx_1_1core.html#a6e2054d396ae487d810642dc19cdd0b0',1,'mlx::core']]], + ['params_5',['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_6',['params.h',['../conv_2params_8h.html',1,'(Global Namespace)'],['../gemm_2params_8h.html',1,'(Global Namespace)']]], + ['partition_7',['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_8',['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_5fall_5freduce_9',['per_thread_all_reduce',['../reduce__all_8h.html#a0895975942131768f280decc854d0ac1',1,'reduce_all.h']]], + ['per_5fthread_5frow_5freduce_10',['per_thread_row_reduce',['../reduce__row_8h.html#a5df83c60214206d584be1587c9b723a5',1,'reduce_row.h']]], + ['perform_5ffft_11',['perform_fft',['../backend_2metal_2kernels_2fft_8h.html#a050ead8fa5cacdaec13d68ca3c0dcb81',1,'fft.h']]], + ['pm_12',['PM',['../namespacepocketfft_1_1detail.html#a8c6ec35091d5136d991577623133fcf2',1,'pocketfft::detail']]], + ['pminplace_13',['PMINPLACE',['../namespacepocketfft_1_1detail.html#aa3477781ef54788c9fa7755cb8ea75fd',1,'pocketfft::detail']]], + ['pocketfft_14',['pocketfft',['../namespacepocketfft.html',1,'']]], + ['pocketfft_2eh_15',['pocketfft.h',['../pocketfft_8h.html',1,'']]], + ['pocketfft_3a_3adetail_16',['detail',['../namespacepocketfft_1_1detail.html',1,'pocketfft']]], + ['pocketfft_3a_3adetail_3a_3athreading_17',['threading',['../namespacepocketfft_1_1detail_1_1threading.html',1,'pocketfft::detail']]], + ['pocketfft_5fc_18',['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_19',['POCKETFFT_CACHE_SIZE',['../pocketfft_8h.html#a9e604bcf20603d70b62b233d3f306714',1,'pocketfft.h']]], + ['pocketfft_5fno_5fvectors_20',['POCKETFFT_NO_VECTORS',['../pocketfft_8h.html#aa9cdaed0819c48f97fcd19f05c289160',1,'pocketfft.h']]], + ['pocketfft_5fnoinline_21',['POCKETFFT_NOINLINE',['../pocketfft_8h.html#a7020984e0ca1d6e565629ca6e7c1a7e0',1,'pocketfft.h']]], + ['pocketfft_5fpartstep11_22',['POCKETFFT_PARTSTEP11',['../pocketfft_8h.html#a1793d0d00f2e13101eb5ad0719c40817',1,'pocketfft.h']]], + ['pocketfft_5fpartstep11a_23',['POCKETFFT_PARTSTEP11a',['../pocketfft_8h.html#ac35e1aa5ae84d655256b7a0afd9051c2',1,'pocketfft.h']]], + ['pocketfft_5fpartstep11a0_24',['POCKETFFT_PARTSTEP11a0',['../pocketfft_8h.html#ab2df44457945ab625fb38a777a46af1b',1,'pocketfft.h']]], + ['pocketfft_5fpartstep3a_25',['POCKETFFT_PARTSTEP3a',['../pocketfft_8h.html#ac112b26e5130636ac1d91c2f0af45e0b',1,'pocketfft.h']]], + ['pocketfft_5fpartstep3b_26',['POCKETFFT_PARTSTEP3b',['../pocketfft_8h.html#a41e646e5535a3a1c6e0d0e67122382f5',1,'pocketfft.h']]], + ['pocketfft_5fpartstep5a_27',['POCKETFFT_PARTSTEP5a',['../pocketfft_8h.html#a078bc2bd38ab0ffb15b981878c9de03c',1,'pocketfft.h']]], + ['pocketfft_5fpartstep5b_28',['POCKETFFT_PARTSTEP5b',['../pocketfft_8h.html#ab8a5da142555e059c5e9c618f75b46fa',1,'pocketfft.h']]], + ['pocketfft_5fpartstep7_29',['POCKETFFT_PARTSTEP7',['../pocketfft_8h.html#af7de1f82911a973d8446cf3f40ff3044',1,'pocketfft.h']]], + ['pocketfft_5fpartstep7a_30',['POCKETFFT_PARTSTEP7a',['../pocketfft_8h.html#a2b27f6e1f0ee131765186870517255c6',1,'pocketfft.h']]], + ['pocketfft_5fpartstep7a0_31',['POCKETFFT_PARTSTEP7a0',['../pocketfft_8h.html#a9c2fc2de74a031c38e9d8a21249ae1cd',1,'pocketfft.h']]], + ['pocketfft_5fprep11_32',['POCKETFFT_PREP11',['../pocketfft_8h.html#a536d2ea61479d4b074bf52ce09fdbc3a',1,'pocketfft.h']]], + ['pocketfft_5fprep3_33',['POCKETFFT_PREP3',['../pocketfft_8h.html#ae2fd9d433c417f0768fe1b58145b2e59',1,'pocketfft.h']]], + ['pocketfft_5fprep5_34',['POCKETFFT_PREP5',['../pocketfft_8h.html#a73077c26d2a82754db2a9c48bc0e11a6',1,'pocketfft.h']]], + ['pocketfft_5fprep7_35',['POCKETFFT_PREP7',['../pocketfft_8h.html#ae7c4d0cda5b3824f84eac54addabd6ec',1,'pocketfft.h']]], + ['pocketfft_5fr_36',['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_37',['POCKETFFT_REARRANGE',['../pocketfft_8h.html#acffdf2e1ab84f36a7a097e1b8b87a9f9',1,'pocketfft.h']]], + ['pocketfft_5frestrict_38',['POCKETFFT_RESTRICT',['../pocketfft_8h.html#abbe177c4872821b32d76d5ce08d6ce82',1,'pocketfft.h']]], + ['post_5fin_39',['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_40',['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_41',['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_42',['power',['../group__ops.html#ga7972058715c26559dff9c9ae2a3ef76d',1,'mlx::core']]], + ['powr_43',['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_44',['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_45',['prepare_slice',['../namespacemlx_1_1core.html#a07ae007c87cf2d723a0fa7b25a2b6a93',1,'mlx::core']]], + ['prev_46',['prev',['../backend_2metal_2allocator_8h.html#aadb9e075b376adbd9ff6ba23663113bd',1,'allocator.h']]], + ['primitive_47',['Primitive',['../classmlx_1_1core_1_1_primitive.html',1,'mlx::core']]], + ['primitive_48',['primitive',['../classmlx_1_1core_1_1array.html#a790548666511d8c6d9f92ee79d2ce14c',1,'mlx::core::array']]], + ['primitive_49',['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_50',['primitive_id',['../classmlx_1_1core_1_1array.html#af5ad83605d4eea81561246873bee1d7c',1,'mlx::core::array']]], + ['primitive_5fptr_51',['primitive_ptr',['../classmlx_1_1core_1_1array.html#a5119cd616ec3c05d65878944b8889469',1,'mlx::core::array']]], + ['primitives_2eh_52',['primitives.h',['../distributed_2primitives_8h.html',1,'(Global Namespace)'],['../primitives_8h.html',1,'(Global Namespace)']]], + ['print_53',['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_v_j_p.html#a1df084da022f3fd50f1d24379ec1c2f5',1,'mlx::core::CustomVJP::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_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_54',['print_complex_constant',['../namespacemlx_1_1core.html#a2b78f270942c6eb185e8045f1c5b4286',1,'mlx::core']]], + ['print_5fconstant_55',['print_constant',['../namespacemlx_1_1core.html#a7d11b000895d44d183260634f4192d92',1,'mlx::core']]], + ['print_5ffloat_5fconstant_56',['print_float_constant',['../namespacemlx_1_1core.html#a93a8ac59c644b801ec8881a58368caf2',1,'mlx::core']]], + ['print_5fgraph_57',['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_58',['print_int_constant',['../namespacemlx_1_1core.html#a948ce3dfc4520d3aa98b33e42f617c64',1,'mlx::core']]], + ['printformatter_59',['PrintFormatter',['../structmlx_1_1core_1_1_print_formatter.html',1,'mlx::core']]], + ['prod_60',['Prod',['../struct_prod.html',1,'']]], + ['prod_61',['prod',['../structpocketfft_1_1detail_1_1util.html#a33acae07b20b28fe4658bc338fce1b89',1,'pocketfft::detail::util']]], + ['prod_62',['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_63',['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_64',['promote_types',['../namespacemlx_1_1core.html#a505922e54acd43114308e3bdbda0e497',1,'mlx::core']]], + ['ptr_65',['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_66',['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 new file mode 100644 index 000000000..1252bc239 --- /dev/null +++ b/docs/build/html/search/all_11.js @@ -0,0 +1,11 @@ +var searchData= +[ + ['q_0',['q',['../structmlx_1_1core_1_1scheduler_1_1_stream_thread.html#adf608e22d0c0397217472408aab52631',1,'mlx::core::scheduler::StreamThread']]], + ['qr_1',['qr',['../namespacemlx_1_1core_1_1linalg.html#ae6d97829459353fe3b31c8a0867c0ca2',1,'mlx::core::linalg']]], + ['qrf_2',['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_3',['quantize',['../group__ops.html#gab43cc28690da7cdd43b43065adbd31da',1,'mlx::core']]], + ['quantized_5fmatmul_4',['quantized_matmul',['../group__ops.html#ga6381c7062b232ac21f3fdc3136aaf86e',1,'mlx::core']]], + ['quantizedmatmul_5',['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_6',['QUERY_SEQUENCE_LENGTH',['../struct_m_l_x_scaled_dot_product_attention_params.html#a46cc2da6a069d822f36983ee18467e5c',1,'MLXScaledDotProductAttentionParams']]], + ['quiet_5fnan_7',['quiet_NaN',['../structmetal_1_1__numeric__limits__impl_3_01bfloat16__t_01_4.html#aebeb07c01984be246bc2d1b8f8e4ac7b',1,'metal::_numeric_limits_impl< bfloat16_t >']]] +]; diff --git a/docs/build/html/search/all_12.js b/docs/build/html/search/all_12.js new file mode 100644 index 000000000..cc8d0e3fc --- /dev/null +++ b/docs/build/html/search/all_12.js @@ -0,0 +1,125 @@ +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_5ffft_5fkernel_16',['rader_fft_kernel',['../backend_2metal_2jit_2fft_8h.html#aca1f201636b6f5a9912fc0502dbe83de',1,'fft.h']]], + ['rader_5fm_5f_17',['rader_m_',['../backend_2metal_2kernels_2fft_8h.html#a5d03e78eedb9a084645f8f63185bcf2f',1,'fft.h']]], + ['radians_18',['radians',['../group__ops.html#ga07aa8059adba5b9a8818027b8aafd31e',1,'mlx::core']]], + ['radix_19',['radix',['../structmetal_1_1__numeric__limits__impl_3_01bfloat16__t_01_4.html#aaefa8c2cadd11ac7e22f7b2c5edbd1cd',1,'metal::_numeric_limits_impl< bfloat16_t >']]], + ['radix_2eh_20',['radix.h',['../radix_8h.html',1,'']]], + ['radix10_21',['radix10',['../radix_8h.html#a27054992e148bfcd9f7a69c96d75d926',1,'radix.h']]], + ['radix11_22',['radix11',['../radix_8h.html#a34f7dcefd29f8a7f6bddf9a17609a8a7',1,'radix.h']]], + ['radix12_23',['radix12',['../radix_8h.html#a3c61aa04a4b38575722d864cc9ffd0b7',1,'radix.h']]], + ['radix13_24',['radix13',['../radix_8h.html#a833b7b31facbd62f6971bb108c54d1db',1,'radix.h']]], + ['radix2_25',['radix2',['../radix_8h.html#a745e50244f1470bba233d8b6b993729c',1,'radix.h']]], + ['radix3_26',['radix3',['../radix_8h.html#a497b31cfa28418e1c2fad53d09f7bc0b',1,'radix.h']]], + ['radix4_27',['radix4',['../radix_8h.html#a12cb26bd3ad635d16a195ccea750256d',1,'radix.h']]], + ['radix5_28',['radix5',['../radix_8h.html#a026e6779e6d2ecdef39ff4aad186091e',1,'radix.h']]], + ['radix6_29',['radix6',['../radix_8h.html#afaaa5de58a97f0a5e6a84fc0d598a884',1,'radix.h']]], + ['radix7_30',['radix7',['../radix_8h.html#a6d37e483d806c550deefabf56caf4ec8',1,'radix.h']]], + ['radix8_31',['radix8',['../radix_8h.html#a6b306e1afe1c5b6af4cd80aa02adb138',1,'radix.h']]], + ['radix_5f11_5fsteps_5f_32',['radix_11_steps_',['../backend_2metal_2kernels_2fft_8h.html#af17a5682878a88283d995f2ca37681e4',1,'fft.h']]], + ['radix_5f13_5fsteps_5f_33',['radix_13_steps_',['../backend_2metal_2kernels_2fft_8h.html#a40c698855591f5d73b0d9258049571a2',1,'fft.h']]], + ['radix_5f2_5fsteps_5f_34',['radix_2_steps_',['../backend_2metal_2kernels_2fft_8h.html#ae76b69e0b030b8cf1ee7ca9011f3e504',1,'fft.h']]], + ['radix_5f3_5fsteps_5f_35',['radix_3_steps_',['../backend_2metal_2kernels_2fft_8h.html#a7b23fe1ca5b7f650cc3e8b03efc55434',1,'fft.h']]], + ['radix_5f4_5fsteps_5f_36',['radix_4_steps_',['../backend_2metal_2kernels_2fft_8h.html#ad28408cc4ff0a4f820afd1aa18ca9646',1,'fft.h']]], + ['radix_5f5_5fsteps_5f_37',['radix_5_steps_',['../backend_2metal_2kernels_2fft_8h.html#a7cea841e54e678c583aeb369ea7bf573',1,'fft.h']]], + ['radix_5f6_5fsteps_5f_38',['radix_6_steps_',['../backend_2metal_2kernels_2fft_8h.html#a92d77e600661bb6f4a7779b6529733b7',1,'fft.h']]], + ['radix_5f7_5fsteps_5f_39',['radix_7_steps_',['../backend_2metal_2kernels_2fft_8h.html#a02e428463b66a6e0f059bf8fc4f3a073',1,'fft.h']]], + ['radix_5f8_5fsteps_5f_40',['radix_8_steps_',['../backend_2metal_2kernels_2fft_8h.html#aadbf4b8812c1489e78ea7d1184a0fdd9',1,'fft.h']]], + ['radix_5fbutterfly_41',['radix_butterfly',['../backend_2metal_2kernels_2fft_8h.html#a278d980ed397e6841ce0af44b9aa4396',1,'fft.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#a84fd13b51b6622e35b4bfbbcd0c9be4f',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()'],['../classmlx_1_1core_1_1io_1_1_file_reader.html#a6a5fa6067fea53ba7dbcddcb7d713a7d',1,'mlx::core::io::FileReader::read()']]], + ['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']]], + ['reduce_62',['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_63',['reduce',['../namespacemlx_1_1core_1_1metal.html#abb997ccbed4c9a9ccd975b1574755fca',1,'mlx::core::metal']]], + ['reduce_2eh_64',['reduce.h',['../common_2reduce_8h.html',1,'(Global Namespace)'],['../metal_2jit_2reduce_8h.html',1,'(Global Namespace)'],['../metal_2kernels_2reduce_8h.html',1,'(Global Namespace)'],['../metal_2reduce_8h.html',1,'(Global Namespace)']]], + ['reduce_5fall_2eh_65',['reduce_all.h',['../reduce__all_8h.html',1,'']]], + ['reduce_5fcol_2eh_66',['reduce_col.h',['../reduce__col_8h.html',1,'']]], + ['reduce_5finit_2eh_67',['reduce_init.h',['../reduce__init_8h.html',1,'']]], + ['reduce_5finit_5fkernels_68',['reduce_init_kernels',['../metal_2jit_2reduce_8h.html#a70a2370dad16f739798f1cb7971639fc',1,'reduce.h']]], + ['reduce_5fkernels_69',['reduce_kernels',['../metal_2jit_2reduce_8h.html#a7c35d2df72c0127d0d17eb9845e62328',1,'reduce.h']]], + ['reduce_5fn_5freads_70',['REDUCE_N_READS',['../defines_8h.html#a2ad505864a2ab786147766900bc18c21',1,'defines.h']]], + ['reduce_5fnon_5fatomic_5fkernels_71',['reduce_non_atomic_kernels',['../metal_2jit_2reduce_8h.html#a67d99d341955f4b7754c272a0106d3a1',1,'reduce.h']]], + ['reduce_5frow_2eh_72',['reduce_row.h',['../reduce__row_8h.html',1,'']]], + ['reduce_5futils_73',['reduce_utils',['../namespacemlx_1_1core_1_1metal.html#a2ec39572806310cf528aea06530e8af8',1,'mlx::core::metal']]], + ['reduce_5futils_2eh_74',['reduce_utils.h',['../reduce__utils_8h.html',1,'']]], + ['reducetype_75',['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_76',['ReductionOpType',['../namespacemlx_1_1core.html#a12412984a1cabfe1189942c898f8fe65',1,'mlx::core']]], + ['reductionplan_77',['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_78',['reference',['../structmlx_1_1core_1_1array_1_1_array_iterator.html#a44e2e1f29191c20ec4390de4fa0bd59f',1,'mlx::core::array::ArrayIterator']]], + ['register_5flibrary_79',['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#a6993ce23a485b725b687628b77751ad2',1,'mlx::core::metal::Device::register_library(const std::string &lib_name, const std::function< std::string(const std::string &)> &lib_path_func=get_colocated_mtllib_path)']]], + ['remainder_80',['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_81',['remainder',['../group__ops.html#ga99f5c904f724156a814d7817188351d2',1,'mlx::core']]], + ['remaining_82',['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_83',['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_84',['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_85',['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_86',['reshape',['../group__ops.html#ga7b0e3d46a39d99b1628b422049790082',1,'mlx::core']]], + ['resize_87',['resize',['../classpocketfft_1_1detail_1_1arr.html#a8d73baaefa02dff8714e4398c83917e0',1,'pocketfft::detail::arr']]], + ['restart_88',['restart',['../classpocketfft_1_1detail_1_1threading_1_1thread__pool.html#a51d252df8d0cd060f15be8ba2bfe3288',1,'pocketfft::detail::threading::thread_pool']]], + ['result_5ftype_89',['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_90',['results',['../structmlx_1_1steel_1_1_block_m_m_a.html#a6dfb5ff1f174951ad7c0630ff190c95a',1,'mlx::steel::BlockMMA']]], + ['rev_5fiter_91',['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_92',['rev_ofs',['../classpocketfft_1_1detail_1_1rev__iter.html#a7f112afa76cb7a4c29cff217a6f5f5a9',1,'pocketfft::detail::rev_iter']]], + ['rfft_93',['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_94',['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_95',['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_96',['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_97',['right_shift',['../group__ops.html#gafa376ad57d38ba87378f0272dc379b23',1,'mlx::core']]], + ['rightshift_98',['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_99',['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_100',['RMS_LOOPED_LIMIT',['../defines_8h.html#a717a175676c3f96d74adfde7e751a541',1,'defines.h']]], + ['rms_5fn_5freads_101',['RMS_N_READS',['../defines_8h.html#a89c0a33ba39a881ad3458ffdde62a24f',1,'defines.h']]], + ['rms_5fnorm_102',['rms_norm',['../namespacemlx_1_1core_1_1fast.html#ac7b620275c6386f822b7aacc6b312e62',1,'mlx::core::fast']]], + ['rmsnorm_103',['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_104',['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_105',['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_106',['rope',['../namespacemlx_1_1core_1_1fast.html#a44a77225d1e90fd5bf81caccf8c20061',1,'mlx::core::fast']]], + ['rot90_107',['ROT90',['../namespacepocketfft_1_1detail.html#a928bad5278df636ee47402c0a75f64ef',1,'pocketfft::detail']]], + ['rotx90_108',['ROTX90',['../namespacepocketfft_1_1detail.html#ab6a43dc0cec4291e163e68a0875ac501',1,'pocketfft::detail']]], + ['round_109',['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_110',['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_111',['round_error',['../structmetal_1_1__numeric__limits__impl_3_01bfloat16__t_01_4.html#afa223448fa4f04c1113a85345dd720c3',1,'metal::_numeric_limits_impl< bfloat16_t >']]], + ['row_5fcontiguous_112',['row_contiguous',['../structmlx_1_1core_1_1array_1_1_flags.html#a3170fa381dc7a90f6eabcc029bdf9bfd',1,'mlx::core::array::Flags']]], + ['row_5freduce_5fgeneral_113',['row_reduce_general',['../reduce__row_8h.html#a917b01e3de3372d276f8dd28f0e9b8f1',1,'reduce_row.h']]], + ['row_5freduce_5fgeneral_5fdispatch_114',['row_reduce_general_dispatch',['../namespacemlx_1_1core.html#ab1eeca8ec6fa31819ee108fa6ed2c41b',1,'mlx::core']]], + ['row_5freduce_5fgeneral_5fmed_115',['row_reduce_general_med',['../reduce__row_8h.html#ad77d444bcfa9e6afcc1ffc1dcb919f1c',1,'reduce_row.h']]], + ['row_5freduce_5fgeneral_5fno_5fatomics_116',['row_reduce_general_no_atomics',['../reduce__row_8h.html#a034fdccc83e66871550c2d42399f0ab5',1,'reduce_row.h']]], + ['row_5freduce_5fgeneral_5fsmall_117',['row_reduce_general_small',['../reduce__row_8h.html#aea2b1ba640fffb71c73550ec747b3148',1,'reduce_row.h']]], + ['rows_118',['rows',['../class_m_p_s_1_1_matrix_descriptor.html#a04ce0dd1d4632ff8c4328e4b62d71fc0',1,'MPS::MatrixDescriptor']]], + ['rsqrt_119',['Rsqrt',['../structmlx_1_1core_1_1detail_1_1_rsqrt.html',1,'mlx::core::detail::Rsqrt'],['../struct_rsqrt.html',1,'Rsqrt']]], + ['rsqrt_120',['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_121',['run',['../structmlx_1_1steel_1_1_g_e_m_m_kernel.html#a00e55d4a161758350ed7310817d2d2a5',1,'mlx::steel::GEMMKernel']]] +]; diff --git a/docs/build/html/search/all_13.js b/docs/build/html/search/all_13.js new file mode 100644 index 000000000..4fe2e4625 --- /dev/null +++ b/docs/build/html/search/all_13.js @@ -0,0 +1,197 @@ +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#a5a48ce1f5ec64ef14fd8a3c42e4fcba9',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,'']]], + ['scan_11',['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_12',['scan',['../namespacemlx_1_1core_1_1metal.html#a81c2cf124b0803098a54a78f8f6873a6',1,'mlx::core::metal']]], + ['scan_2eh_13',['scan.h',['../jit_2scan_8h.html',1,'(Global Namespace)'],['../kernels_2scan_8h.html',1,'(Global Namespace)']]], + ['scan_5fkernels_14',['scan_kernels',['../jit_2scan_8h.html#a35041ee4a053875a2240bdac5a3b4fae',1,'scan.h']]], + ['scatter_15',['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_16',['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_17',['scatter.h',['../scatter_8h.html',1,'']]], + ['scatter_5f1d_5findex_5fimpl_18',['scatter_1d_index_impl',['../scatter_8h.html#a43e2fe7efe7ade51b23c20c1862099b2',1,'scatter.h']]], + ['scatter_5fadd_19',['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_20',['scatter_impl',['../scatter_8h.html#a75f61cc43682a72dd66a1da43a1809fe',1,'scatter.h']]], + ['scatter_5fkernels_21',['scatter_kernels',['../jit_2indexing_8h.html#a768c949cd650a44c6b402fc1440c1a56',1,'indexing.h']]], + ['scatter_5fmax_22',['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_23',['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_24',['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_25',['scheduled',['../classmlx_1_1core_1_1array.html#a199726612fa8a4bcd5c2d05eadad7078af8a6f8eed2395ab89a758dec434393ae',1,'mlx::core::array']]], + ['scheduler_26',['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_27',['scheduler',['../namespacemlx_1_1core_1_1scheduler.html#ae856e468c2f7c8f8ec672522cc13730b',1,'mlx::core::scheduler']]], + ['scheduler_2eh_28',['scheduler.h',['../scheduler_8h.html',1,'']]], + ['seed_29',['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_30',['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_file_reader.html#aab62cc43970bd5de2c0115b1cc0a6af4',1,'mlx::core::io::FileReader::seek()'],['../classmlx_1_1core_1_1io_1_1_file_writer.html#a9646f4ea048ae58719daeb588e2de433',1,'mlx::core::io::FileWriter::seek()']]], + ['select_31',['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()']]], + ['set_32',['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_33',['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_34',['set_compile_mode',['../namespacemlx_1_1core.html#a49445a55f976c4397f25ea18e1e92bef',1,'mlx::core']]], + ['set_5fdata_35',['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_36',['set_default_device',['../namespacemlx_1_1core.html#a312a2de41367fe52caeaf8c0f596a120',1,'mlx::core']]], + ['set_5fdefault_5fstream_37',['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_38',['set_input_array',['../structmlx_1_1core_1_1metal_1_1_command_encoder.html#ab69ff0d7f14b9b59db4df0608193dce4',1,'mlx::core::metal::CommandEncoder']]], + ['set_5fmemory_5flimit_39',['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_40',['set_output_array',['../structmlx_1_1core_1_1metal_1_1_command_encoder.html#a6a2e28e542eaa2886041bddd51ff6522',1,'mlx::core::metal::CommandEncoder']]], + ['set_5fsiblings_41',['set_siblings',['../classmlx_1_1core_1_1array.html#a8fccbe7a4edfd8cca168161124e263b1',1,'mlx::core::array']]], + ['set_5fstatus_42',['set_status',['../classmlx_1_1core_1_1array.html#a63598018999b49f1340b183cb303f05c',1,'mlx::core::array']]], + ['set_5ftracer_43',['set_tracer',['../classmlx_1_1core_1_1array.html#af26e6be1a9e6239471a4c24310c0c7c8',1,'mlx::core::array']]], + ['set_5fvalue_44',['set_value',['../classmlx_1_1core_1_1_event.html#a0d077b11f4b28f882b42440b7ac6d40d',1,'mlx::core::Event']]], + ['setbatchsize_45',['setBatchSize',['../class_m_p_s_1_1_matrix_multiplication.html#ac24cc7d71cdf3fd5bc4291ba2bfcd9e7',1,'MPS::MatrixMultiplication']]], + ['setbatchstart_46',['setBatchStart',['../class_m_p_s_1_1_matrix_multiplication.html#a82008429b4f14b5eba13142886b76cde',1,'MPS::MatrixMultiplication']]], + ['setleftmatrixorigin_47',['setLeftMatrixOrigin',['../class_m_p_s_1_1_matrix_multiplication.html#a8b905b75090af80d97cf09b05cdad528',1,'MPS::MatrixMultiplication']]], + ['setresultmatrixorigin_48',['setResultMatrixOrigin',['../class_m_p_s_1_1_matrix_multiplication.html#a86647678c55adffc51114d036445ba10',1,'MPS::MatrixMultiplication']]], + ['setrightmatrixorigin_49',['setRightMatrixOrigin',['../class_m_p_s_1_1_matrix_multiplication.html#afaa45acd37397737ef4d94e8803be7e2',1,'MPS::MatrixMultiplication']]], + ['shape_50',['shape',['../structmlx_1_1core_1_1_reduction_plan.html#a6cfa8771fa9caf6fdcc3d74c9fca83ae',1,'mlx::core::ReductionPlan::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_51',['shape_t',['../namespacepocketfft_1_1detail.html#a885ee37fcf564a268a5c8ca9ea8603e1',1,'pocketfft::detail']]], + ['shapes_52',['shapes',['../struct_indices.html#a5ab170f1a77636180889ddfffd4f7d2f',1,'Indices']]], + ['shared_5fbuffer_5fslice_53',['shared_buffer_slice',['../namespacemlx_1_1core.html#a427f2c255dfc6e1f83f97587b08e71bc',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_5freduce_73',['simd_reduce',['../struct_and.html#ab4df5517e050cfa7257c34c6b0bd980b',1,'And::simd_reduce()'],['../struct_or.html#aef6b5abbbf3fd22981b8d27562022605',1,'Or::simd_reduce()'],['../struct_sum.html#acf10e0604098391526da3b8271928b5c',1,'Sum::simd_reduce()'],['../struct_prod.html#ab0d7a38360b971b4d99c4ad2db310069',1,'Prod::simd_reduce()'],['../struct_min.html#afe8d7cefac624fd4267c1b252ac38528',1,'Min::simd_reduce()'],['../struct_max.html#a4f74440c6f1ce8247d5a87c2a8882080',1,'Max::simd_reduce()']]], + ['simd_5fscan_74',['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_75',['simd_shuffle',['../namespacemetal.html#a259ed115bc3c58f88eb35830916b26d4',1,'metal']]], + ['simd_5fshuffle_5fand_5ffill_5fdown_76',['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_77',['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_78',['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']]], + ['simd_5fshuffle_5frotate_5fdown_79',['simd_shuffle_rotate_down',['../namespacemetal.html#a4bb203647a421032db47e73cd649841b',1,'metal']]], + ['simd_5fshuffle_5frotate_5fup_80',['simd_shuffle_rotate_up',['../namespacemetal.html#a729b22077d6c944491a6027c18ea80c9',1,'metal']]], + ['simd_5fshuffle_5fup_81',['simd_shuffle_up',['../namespacemetal.html#afe81c5fbde3f4890458b081909242c55',1,'metal']]], + ['simd_5fshuffle_5fxor_82',['simd_shuffle_xor',['../namespacemetal.html#a5017efc9605e069cfb507137cd1a1852',1,'metal']]], + ['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_1array.html#a598f87161926d9e0b516860f0ea2c8f6',1,'mlx::core::array::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#a5ab133d67da9c16621f61690e27fccfd',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_115',['sort',['../struct_thread_sort.html#ad9ab3e6b47f7e9b91c0f3b773596986d',1,'ThreadSort::sort()'],['../struct_block_merge_sort.html#acc970f5eb963f7f2010f5ae5ea8b8bc0',1,'BlockMergeSort::sort()']]], + ['sort_116',['Sort',['../classmlx_1_1core_1_1_sort.html#a62943032dbd72e85ceb9b4b7211f4a44',1,'mlx::core::Sort']]], + ['sort_117',['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_118',['sort.h',['../jit_2sort_8h.html',1,'(Global Namespace)'],['../kernels_2sort_8h.html',1,'(Global Namespace)']]], + ['special_5fmul_119',['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_120',['Split',['../classmlx_1_1core_1_1_split.html',1,'mlx::core::Split'],['../classmlx_1_1core_1_1_split.html#a897c746ecfdff5119cc5ae3f20499385',1,'mlx::core::Split::Split()']]], + ['split_121',['split',['../structmlx_1_1core_1_1distributed_1_1_group.html#abbf40f8979488806bc5bca9ecc4130e9',1,'mlx::core::distributed::Group::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',['../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',['../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#add41975ba47933af8e74dde0cc646ec4',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#a2567b067cb4c7828962363844f67176e',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'],['../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 new file mode 100644 index 000000000..0d0d56035 --- /dev/null +++ b/docs/build/html/search/all_14.js @@ -0,0 +1,83 @@ +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_file_reader.html#aa47428656f87fb1ff89378a6041bf68f',1,'mlx::core::io::FileReader::tell()'],['../classmlx_1_1core_1_1io_1_1_file_writer.html#aa883a722789c962164fd0ddcc5f6ffc5',1,'mlx::core::io::FileWriter::tell()']]], + ['ten_13',['ten',['../classmlx_1_1core_1_1_log.html#a044a23e8b1422984628e1cd5ab506421a394d85b39676763bdf35b8d54b9e43a1',1,'mlx::core::Log']]], + ['tensordot_14',['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_15',['ternary',['../namespacemlx_1_1core_1_1metal.html#a2d1c92ba6897c0a7a428fed63279b61f',1,'mlx::core::metal']]], + ['ternary_2eh_16',['ternary.h',['../common_2ternary_8h.html',1,'(Global Namespace)'],['../metal_2jit_2ternary_8h.html',1,'(Global Namespace)'],['../metal_2kernels_2ternary_8h.html',1,'(Global Namespace)'],['../metal_2ternary_8h.html',1,'(Global Namespace)']]], + ['ternary_5fg_17',['ternary_g',['../metal_2kernels_2ternary_8h.html#ab55f2a7fbbdae6798217f8253e4bacb3',1,'ternary.h']]], + ['ternary_5fg_5fnd_18',['ternary_g_nd',['../metal_2kernels_2ternary_8h.html#a94f4695f471837525e5ca995285bc6aa',1,'ternary.h']]], + ['ternary_5fg_5fnd1_19',['ternary_g_nd1',['../metal_2kernels_2ternary_8h.html#a1bd5918559850f3f80e3adee2391fe6a',1,'ternary.h']]], + ['ternary_5fg_5fnd2_20',['ternary_g_nd2',['../metal_2kernels_2ternary_8h.html#afdf0d9d0cb21fcb3f176500785076af8',1,'ternary.h']]], + ['ternary_5fg_5fnd3_21',['ternary_g_nd3',['../metal_2kernels_2ternary_8h.html#a113df0c8a841b0e986900d580644e047',1,'ternary.h']]], + ['ternary_5fkernels_22',['ternary_kernels',['../metal_2jit_2ternary_8h.html#a33d777cb9a84c5b2571497090e9fc631',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']]], + ['tgp_5fmem_5fsize_28',['tgp_mem_size',['../structmlx_1_1steel_1_1_g_e_m_m_kernel.html#a1ec583584e69dcbbb72106390a4fc5da',1,'mlx::steel::GEMMKernel']]], + ['tgp_5fmem_5fsize_5fa_29',['tgp_mem_size_a',['../structmlx_1_1steel_1_1_g_e_m_m_kernel.html#ac00b149d76a903c2f91b0f477dc5037f',1,'mlx::steel::GEMMKernel']]], + ['tgp_5fmem_5fsize_5fb_30',['tgp_mem_size_b',['../structmlx_1_1steel_1_1_g_e_m_m_kernel.html#a105af1069668028c6f1bc6d6dd162298',1,'mlx::steel::GEMMKernel']]], + ['tgp_5fpadding_5fa_31',['tgp_padding_a',['../structmlx_1_1steel_1_1_g_e_m_m_kernel.html#ad547704ccbff6c2076abeffa6628c5a0',1,'mlx::steel::GEMMKernel']]], + ['tgp_5fpadding_5fb_32',['tgp_padding_b',['../structmlx_1_1steel_1_1_g_e_m_m_kernel.html#ad1b03941e869017558423c08b08bc094',1,'mlx::steel::GEMMKernel']]], + ['tgp_5fsize_33',['tgp_size',['../structmlx_1_1steel_1_1_g_e_m_m_kernel.html#a9058ddb73e30e83fb9c548ba22817d64',1,'mlx::steel::GEMMKernel']]], + ['thread_34',['thread',['../structmlx_1_1core_1_1scheduler_1_1_stream_thread.html#a449de02bf2ac80d8fe2f208fa7eac359',1,'mlx::core::scheduler::StreamThread']]], + ['thread_5fcount_35',['thread_count',['../structpocketfft_1_1detail_1_1util.html#a3b012d5a19215bcd32cf6e228556fa87',1,'pocketfft::detail::util']]], + ['thread_5ffn_36',['thread_fn',['../structmlx_1_1core_1_1scheduler_1_1_stream_thread.html#a06a62c21c1174e4eb4d242e50aad7adf',1,'mlx::core::scheduler::StreamThread']]], + ['thread_5fid_37',['thread_id',['../namespacepocketfft_1_1detail_1_1threading.html#aebe85d6273d92c7d3728e2c621ccc82b',1,'pocketfft::detail::threading']]], + ['thread_5fidx_38',['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_39',['thread_map',['../namespacepocketfft_1_1detail_1_1threading.html#a4fcf674db39f0e2c1c59d48491daed6e',1,'pocketfft::detail::threading']]], + ['thread_5fpool_40',['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()']]], + ['thread_5fsort_5ft_41',['thread_sort_t',['../struct_block_merge_sort.html#ad2474d16721f4ceb954125728a0e2ea2',1,'BlockMergeSort']]], + ['thread_5fswap_42',['thread_swap',['../kernels_2sort_8h.html#a6e8c2da4975a8001fd5ddf211a3058b7',1,'sort.h']]], + ['threads_5fper_5ftg_43',['threads_per_tg',['../struct_read_writer.html#a64c58e358da22358df3075448ea23893',1,'ReadWriter']]], + ['threadsort_44',['ThreadSort',['../struct_thread_sort.html',1,'']]], + ['threefry_2eh_45',['threefry.h',['../threefry_8h.html',1,'']]], + ['threefry2x32_5fhash_46',['threefry2x32_hash',['../namespacemlx_1_1core_1_1random.html#ac7e92c89a2bac1b0bed922a3d4c3c66b',1,'mlx::core::random']]], + ['tile_47',['tile',['../group__ops.html#gab105a57b9a4d84496fe1e4d60e13d361',1,'mlx::core']]], + ['tile_5fstride_48',['tile_stride',['../structmlx_1_1steel_1_1_block_loader.html#ab87876699d55473620c7ea99f9da911d',1,'mlx::steel::BlockLoader']]], + ['tile_5fstride_5fa_49',['tile_stride_a',['../structmlx_1_1steel_1_1_block_m_m_a.html#a8fddaa78913cdc8eea5e1cf7d2776330',1,'mlx::steel::BlockMMA']]], + ['tile_5fstride_5fb_50',['tile_stride_b',['../structmlx_1_1steel_1_1_block_m_m_a.html#ae3f35453b3afbaac9df64ad5966b34a4',1,'mlx::steel::BlockMMA']]], + ['tiles_5fm_51',['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_52',['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_53',['tm',['../structmlx_1_1steel_1_1_block_m_m_a.html#ab84d70540d09ce115794f343849f016f',1,'mlx::steel::BlockMMA']]], + ['tm_54',['TM',['../structmlx_1_1steel_1_1_block_m_m_a.html#aba5f749fdf32d8bd9d9e29f2a9ae4591',1,'mlx::steel::BlockMMA']]], + ['tm_5fstride_55',['TM_stride',['../structmlx_1_1steel_1_1_block_m_m_a.html#a5b0029866f493363942133b55bff7307',1,'mlx::steel::BlockMMA']]], + ['tn_56',['TN',['../structmlx_1_1steel_1_1_block_m_m_a.html#a706ae779c1f8d2eb18f19c248567d424',1,'mlx::steel::BlockMMA']]], + ['tn_57',['tn',['../structmlx_1_1steel_1_1_block_m_m_a.html#ad7a2033983cfbb474c50c2878057d8f1',1,'mlx::steel::BlockMMA']]], + ['tn_5fstride_58',['TN_stride',['../structmlx_1_1steel_1_1_block_m_m_a.html#a8b3690b383afd26563efb38f9c375e50',1,'mlx::steel::BlockMMA']]], + ['to_5fbnns_5fdtype_59',['to_bnns_dtype',['../namespacemlx_1_1core.html#a7a4193f37b1de9c33c31d1da09c77edb',1,'mlx::core']]], + ['to_5fstream_60',['to_stream',['../namespacemlx_1_1core.html#a4734a596e57434492ddfe79f2cb9dbf9',1,'mlx::core']]], + ['topk_61',['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_62',['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_63',['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_64',['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_65',['TransformNone',['../structmlx_1_1steel_1_1_transform_none.html',1,'mlx::steel']]], + ['transforms_2eh_66',['transforms.h',['../backend_2metal_2kernels_2steel_2gemm_2transforms_8h.html',1,'(Global Namespace)'],['../transforms_8h.html',1,'(Global Namespace)']]], + ['transforms_5fimpl_2eh_67',['transforms_impl.h',['../transforms__impl_8h.html',1,'']]], + ['transpose_68',['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_69',['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_70',['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={})']]], + ['tril_71',['tril',['../group__ops.html#ga83e0bb45dc770cf014531d873b78c5a2',1,'mlx::core']]], + ['triu_72',['triu',['../group__ops.html#gaa9df5917876eeb0cb28b7fa81f880412',1,'mlx::core']]], + ['trows_73',['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_74',['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_75',['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_76',['try_pop',['../classpocketfft_1_1detail_1_1threading_1_1concurrent__queue.html#aa3807d46a126d229f9054c779105ea43',1,'pocketfft::detail::threading::concurrent_queue']]], + ['two_77',['two',['../classmlx_1_1core_1_1_log.html#a044a23e8b1422984628e1cd5ab506421a41877eab6fa3db7d7ed2cda9eba14251',1,'mlx::core::Log']]], + ['type_78',['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']]], + ['typetodtype_79',['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 new file mode 100644 index 000000000..e43e9ced1 --- /dev/null +++ b/docs/build/html/search/all_15.js @@ -0,0 +1,28 @@ +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_2jit_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_5fkernels_9',['unary_kernels',['../metal_2jit_2unary_8h.html#a4f56f4dcc6eabd800b1def67a5864cec',1,'unary.h']]], + ['unary_5fop_5fgpu_10',['unary_op_gpu',['../namespacemlx_1_1core.html#aba2b4accc059f30d4dca88db9f7a6e13',1,'mlx::core']]], + ['unary_5fop_5fgpu_5finplace_11',['unary_op_gpu_inplace',['../namespacemlx_1_1core.html#a668fde2bd280a88f63a68b68a343d375',1,'mlx::core']]], + ['unary_5fops_12',['unary_ops',['../namespacemlx_1_1core_1_1metal.html#a17b471fa52ea5f24ee63e081f46528f5',1,'mlx::core::metal']]], + ['unary_5fops_2eh_13',['unary_ops.h',['../unary__ops_8h.html',1,'']]], + ['unary_5fv_14',['unary_v',['../metal_2kernels_2unary_8h.html#ada52df4976078091cd7b47c152f326fb',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']]], + ['update_20',['update',['../struct_and.html#a514334a0fd865164d9c83fc07d499783',1,'And::update()'],['../struct_or.html#a942628b1b3c6be9f486c15081a0cba8e',1,'Or::update()']]], + ['use_5fout_5fsource_21',['use_out_source',['../steel__gemm__fused_8h.html#a3fe4e4382bda8a419557a5e6f77bc084',1,'steel_gemm_fused.h']]], + ['util_22',['util',['../structpocketfft_1_1detail_1_1util.html',1,'pocketfft::detail']]], + ['utils_23',['utils',['../namespacemlx_1_1core_1_1metal.html#a529dc6c2d4a37ba544b66b2c3cd792cc',1,'mlx::core::metal']]], + ['utils_2eh_24',['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 new file mode 100644 index 000000000..75f3db175 --- /dev/null +++ b/docs/build/html/search/all_16.js @@ -0,0 +1,27 @@ +var searchData= +[ + ['v_0',['v',['../structmlx_1_1steel_1_1_block_loader_1_1_read_vector.html#afbef88bfb901a71e8423de911b7c7347',1,'mlx::steel::BlockLoader::ReadVector']]], + ['v_1',['V',['../structmlx_1_1core_1_1_dtype.html#adb1ea8b45a0c53e04a0e73b168702715a5206560a306a2e085a437fd258eb57ce',1,'mlx::core::Dtype']]], + ['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#a60f2883c2979e979d87b1d313a5a563e',1,'mlx::core::Event']]], + ['value_6',['value',['../classmlx_1_1core_1_1_event.html#afaa05ba97269bd5bfd9a2a665d4cc15b',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',['../class_m_p_s_1_1_vector.html',1,'MPS::Vector'],['../namespacemlx_1_1core.html#abd84ff6c5245e4e170b2ef5247594337a57dea6f5039281b7fee517fc43bf3110',1,'mlx::core::Vector']]], + ['vectordescriptor_13',['VectorDescriptor',['../class_m_p_s_1_1_vector_descriptor.html',1,'MPS']]], + ['vectordescriptor_14',['vectorDescriptor',['../class_m_p_s_1_1_vector_descriptor.html#a2bac55ff9bffcebba0755abcca09ec15',1,'MPS::VectorDescriptor::vectorDescriptor(NS::UInteger length, NS::UInteger dataType)'],['../class_m_p_s_1_1_vector_descriptor.html#ab6534f1c9536613d8e78ed72fe12b275',1,'MPS::VectorDescriptor::vectorDescriptor(NS::UInteger length, NS::UInteger vectors, NS::UInteger vectorBytes, NS::UInteger dataType)']]], + ['view_15',['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_16',['view',['../group__ops.html#ga3602aa91b7b124a0b41ec1b2137a1b02',1,'mlx::core']]], + ['vjp_17',['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_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_v_j_p.html#a00a15e67da68356512670913863008f8',1,'mlx::core::CustomVJP::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_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_18',['VLEN',['../structpocketfft_1_1detail_1_1_v_l_e_n.html',1,'pocketfft::detail']]], + ['vmap_19',['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_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_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_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_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_20',['vmap_replace',['../namespacemlx_1_1core_1_1detail.html#a31a5582530faea230eb8acafc0f7e154',1,'mlx::core::detail']]], + ['vmap_5ftrace_21',['vmap_trace',['../namespacemlx_1_1core_1_1detail.html#a5ba794afe1a557e0505887cfb481c515',1,'mlx::core::detail']]], + ['vtype_22',['VTYPE',['../structpocketfft_1_1detail_1_1_v_t_y_p_e.html',1,'pocketfft::detail']]], + ['vtype_5ft_23',['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 new file mode 100644 index 000000000..ab03408d3 --- /dev/null +++ b/docs/build/html/search/all_17.js @@ -0,0 +1,19 @@ +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 new file mode 100644 index 000000000..2581c9061 --- /dev/null +++ b/docs/build/html/search/all_18.js @@ -0,0 +1,5 @@ +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 new file mode 100644 index 000000000..ed5e93322 --- /dev/null +++ b/docs/build/html/search/all_19.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['zero_5fhelper_0',['zero_helper',['../kernels_2sort_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 new file mode 100644 index 000000000..0750436ac --- /dev/null +++ b/docs/build/html/search/all_1a.js @@ -0,0 +1,17 @@ +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']]], + ['_7eintracing_7',['~InTracing',['../structmlx_1_1core_1_1detail_1_1_in_tracing.html#a83d57d7fa63bcb0ff72080191d0f177a',1,'mlx::core::detail::InTracing']]], + ['_7eprimitive_8',['~Primitive',['../classmlx_1_1core_1_1_primitive.html#a29f70eb2d3b7e6c5fe52779c03f03777',1,'mlx::core::Primitive']]], + ['_7escheduler_9',['~Scheduler',['../classmlx_1_1core_1_1scheduler_1_1_scheduler.html#a6626c4a743a2b3004fc14042bc8b0edf',1,'mlx::core::scheduler::Scheduler']]], + ['_7estreamcontext_10',['~StreamContext',['../structmlx_1_1core_1_1_stream_context.html#ac5be1c576d22b3d0b0a6fcc7e6abe659',1,'mlx::core::StreamContext']]], + ['_7estreamthread_11',['~StreamThread',['../structmlx_1_1core_1_1scheduler_1_1_stream_thread.html#a71de50591388b6e2cc6c57827e1a1ad4',1,'mlx::core::scheduler::StreamThread']]], + ['_7ethread_5fpool_12',['~thread_pool',['../classpocketfft_1_1detail_1_1threading_1_1thread__pool.html#a68f71e79fa93379fcc5819e533b45472',1,'pocketfft::detail::threading::thread_pool']]], + ['_7eunaryprimitive_13',['~UnaryPrimitive',['../classmlx_1_1core_1_1_unary_primitive.html#ac0677ab99a5ca660ed6ab7902ea364de',1,'mlx::core::UnaryPrimitive']]] +]; diff --git a/docs/build/html/search/all_2.js b/docs/build/html/search/all_2.js new file mode 100644 index 000000000..cc516690b --- /dev/null +++ b/docs/build/html/search/all_2.js @@ -0,0 +1,96 @@ +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']]], + ['begin_16',['begin',['../classmlx_1_1core_1_1array.html#a76b258b169d7d73419ebbf85340fb914',1,'mlx::core::array']]], + ['bernoulli_17',['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_18',['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_19',['bf16.h',['../backend_2metal_2kernels_2bf16_8h.html',1,'(Global Namespace)'],['../types_2bf16_8h.html',1,'(Global Namespace)']]], + ['bf16_5fmath_2eh_20',['bf16_math.h',['../bf16__math_8h.html',1,'']]], + ['bfloat16_21',['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_22',['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_23',['bfloat16_to_uint16',['../bf16__math_8h.html#a51cfdd4502e755310f6f3456f039bea7',1,'bf16_math.h']]], + ['bfloat_5fbinop_24',['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_25',['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_26',['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_27',['bfloat_bitop',['../types_2bf16_8h.html#aac9ba86d4bf05bcda1936494f9b9b4d3',1,'bf16.h']]], + ['bfloat_5fbits_5fto_5ffloat_28',['bfloat_bits_to_float',['../backend_2metal_2kernels_2bf16_8h.html#a3b33ae338dc4f223d0f3c748de07bad1',1,'bf16.h']]], + ['bfloat_5fcompop_29',['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_30',['bfloat_inplace_bitop',['../types_2bf16_8h.html#af13b46bc58e6e6f675ae47aabec37711',1,'bf16.h']]], + ['bfloat_5finplace_5fop_31',['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_32',['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_33',['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_34',['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']]], + ['binary_35',['binary',['../namespacemlx_1_1core_1_1metal.html#a269d591ec02e2f7c0f7a718fbfa37f73',1,'mlx::core::metal']]], + ['binary_2eh_36',['binary.h',['../common_2binary_8h.html',1,'(Global Namespace)'],['../metal_2binary_8h.html',1,'(Global Namespace)'],['../metal_2jit_2binary_8h.html',1,'(Global Namespace)'],['../metal_2kernels_2binary_8h.html',1,'(Global Namespace)']]], + ['binary_5fg_37',['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_38',['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_39',['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_40',['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_41',['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_5fkernels_42',['binary_kernels',['../metal_2jit_2binary_8h.html#ad7ec0d6a6a45dcdb2fbcade272c5b538',1,'binary.h']]], + ['binary_5fop_5fgpu_43',['binary_op_gpu',['../namespacemlx_1_1core.html#a63f3c166ea4916faa5d038668cfe16b1',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#a6437ced86c227e0807352ae6b16da796',1,'mlx::core::binary_op_gpu(const std::vector< array > &inputs, array &out, const std::string op, const Stream &s)']]], + ['binary_5fop_5fgpu_5finplace_44',['binary_op_gpu_inplace',['../namespacemlx_1_1core.html#afee8898eaceab6dd5e90357f4a0613c4',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#ad53410af1488f83d74035e3132fa16af',1,'mlx::core::binary_op_gpu_inplace(const std::vector< array > &inputs, array &out, const std::string op, const Stream &s)']]], + ['binary_5fops_45',['binary_ops',['../namespacemlx_1_1core_1_1metal.html#a8db7f9cc781d4bfb08423a401665f322',1,'mlx::core::metal']]], + ['binary_5fops_2eh_46',['binary_ops.h',['../binary__ops_8h.html',1,'']]], + ['binary_5fss_47',['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_48',['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_5ftwo_49',['binary_two',['../namespacemlx_1_1core_1_1metal.html#aed047eec38b030ec5f29b9da54abf8cb',1,'mlx::core::metal']]], + ['binary_5ftwo_2eh_50',['binary_two.h',['../common_2binary__two_8h.html',1,'(Global Namespace)'],['../metal_2jit_2binary__two_8h.html',1,'(Global Namespace)'],['../metal_2kernels_2binary__two_8h.html',1,'(Global Namespace)']]], + ['binary_5ftwo_5fkernels_51',['binary_two_kernels',['../metal_2jit_2binary__two_8h.html#a49e70c16d6cf40830993f932f28b4b50',1,'binary_two.h']]], + ['binary_5fvs_52',['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_5fvv_53',['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']]], + ['bits_54',['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_55',['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_56',['bits_to_bfloat',['../struct___m_l_x___b_float16.html#a91ccb774773b65f8d4c1aea3f1c6e1ca',1,'_MLX_BFloat16']]], + ['bits_5fto_5fbfloat_5fstruct_57',['bits_to_bfloat_struct',['../struct___m_l_x___b_float16_1_1bits__to__bfloat__struct.html',1,'_MLX_BFloat16']]], + ['bitwise_5fand_58',['bitwise_and',['../group__ops.html#ga752fd2707dabb05d0308ba3d55346ada',1,'mlx::core']]], + ['bitwise_5for_59',['bitwise_or',['../group__ops.html#ga8af4f22c08c11c4ffab7e3d45e0f3cd6',1,'mlx::core']]], + ['bitwise_5fxor_60',['bitwise_xor',['../group__ops.html#ga3188638fba3a60e264baf69956a1e08b',1,'mlx::core']]], + ['bitwiseand_61',['BitwiseAnd',['../struct_bitwise_and.html',1,'BitwiseAnd'],['../structmlx_1_1core_1_1detail_1_1_bitwise_and.html',1,'mlx::core::detail::BitwiseAnd']]], + ['bitwisebinary_62',['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_63',['BitwiseOr',['../struct_bitwise_or.html',1,'BitwiseOr'],['../structmlx_1_1core_1_1detail_1_1_bitwise_or.html',1,'mlx::core::detail::BitwiseOr']]], + ['bitwisexor_64',['BitwiseXor',['../struct_bitwise_xor.html',1,'BitwiseXor'],['../structmlx_1_1core_1_1detail_1_1_bitwise_xor.html',1,'mlx::core::detail::BitwiseXor']]], + ['bj_65',['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_66',['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_67',['block_masked_mm',['../group__ops.html#ga6b76c8ea46b19e6866af155fa5910be6',1,'mlx::core']]], + ['block_5fmerge_5fsort_5ft_68',['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_69',['block_sort',['../struct_kernel_merge_sort.html#a9cd55b08c2fd235254e23ed1585da5ae',1,'KernelMergeSort::block_sort()'],['../struct_kernel_multi_block_merge_sort.html#a322ed2eac315a561e0fd90af2fd577eb',1,'KernelMultiBlockMergeSort::block_sort()'],['../kernels_2sort_8h.html#ab31b85cfb26430a7bb04cab989a2cda0',1,'block_sort(const device T *inp, device U *out, const constant int &size_sorted_axis, const constant int &stride_sorted_axis, const constant int &stride_segment_axis, uint3 tid, uint3 lid): sort.h']]], + ['block_5fsort_5fkernels_70',['block_sort_kernels',['../jit_2sort_8h.html#afbac3937817ade990efe8f5ccc7702c9',1,'sort.h']]], + ['block_5fsort_5fnc_71',['block_sort_nc',['../kernels_2sort_8h.html#a4b06549a9678ccc9bf9901a5b8f238f5',1,'sort.h']]], + ['blockloader_72',['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()']]], + ['blockmaskedmm_73',['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_74',['BlockMergeSort',['../struct_block_merge_sort.html',1,'']]], + ['blockmma_75',['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()']]], + ['blockswizzle_76',['BlockSwizzle',['../structmlx_1_1steel_1_1_block_swizzle.html',1,'mlx::steel']]], + ['bluestein_5ffft_77',['bluestein_fft',['../backend_2metal_2kernels_2fft_8h.html#a0abc609e9756475800e996775a96a87e',1,'fft.h']]], + ['bluestein_5ffft_5fkernel_78',['bluestein_fft_kernel',['../backend_2metal_2jit_2fft_8h.html#a8252118504948e9781d8a3bf6d482081',1,'fft.h']]], + ['bool4_5for_5fuint_79',['bool4_or_uint',['../unionbool4__or__uint.html',1,'']]], + ['bool_5f_80',['bool_',['../structmlx_1_1core_1_1_dtype.html#ade845ef5dcebead13a37fe696436e1daa467afb5838aa377d55cce81f84c5512b',1,'mlx::core::Dtype::bool_'],['../namespacemlx_1_1core.html#a113d2bac7e4aa6a4cb4a5c3242527b82',1,'mlx::core::bool_']]], + ['broadcast_81',['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_82',['broadcast_arrays',['../group__ops.html#gab783890428b596f715dc7dd2057eae99',1,'mlx::core']]], + ['broadcast_5fshapes_83',['broadcast_shapes',['../namespacemlx_1_1core.html#a075e07def338cd9d815182d0e6a656c0',1,'mlx::core']]], + ['broadcast_5fto_84',['broadcast_to',['../group__ops.html#gad256e86cc1a6e6b3832e392baa90318d',1,'mlx::core']]], + ['brows_85',['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_86',['Bs_offset',['../structmlx_1_1steel_1_1_block_m_m_a.html#a92f6aeee432f53638447eac842f43eca',1,'mlx::steel::BlockMMA']]], + ['bsimd_87',['Bsimd',['../structmlx_1_1steel_1_1_block_m_m_a.html#a3de506004b428d3487bae05ad9e757e6',1,'mlx::steel::BlockMMA']]], + ['buf_88',['buf',['../struct_read_writer.html#a23bac3c96dd0265ddbee1f256be45ff5',1,'ReadWriter::buf'],['../backend_2metal_2allocator_8h.html#a15aa5cc1baf29be08d55cca88509e697',1,'buf: allocator.h']]], + ['buffer_89',['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_90',['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']]], + ['buffers_91',['buffers',['../struct_indices.html#ad705070a740579c07d109ae4f3d86e76',1,'Indices']]], + ['build_5flib_5fname_92',['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 new file mode 100644 index 000000000..fe7921015 --- /dev/null +++ b/docs/build/html/search/all_3.js @@ -0,0 +1,142 @@ +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#a51c19db777f43943e4b35f25dd88d49d',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']]], + ['clear_5fcache_26',['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_27',['clip',['../group__ops.html#ga157cd7c23f9b306fee2e1eb2b9bf1dd8',1,'mlx::core']]], + ['cmplx_28',['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_29',['cmplx< T0 >',['../structpocketfft_1_1detail_1_1cmplx.html',1,'pocketfft::detail']]], + ['cmplx_3c_20thigh_20_3e_30',['cmplx< Thigh >',['../structpocketfft_1_1detail_1_1cmplx.html',1,'pocketfft::detail']]], + ['cndarr_31',['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_32',['col_contiguous',['../structmlx_1_1core_1_1array_1_1_flags.html#ae24709026598d635e6b5c24a15f8a802',1,'mlx::core::array::Flags']]], + ['col_5freduce_5fgeneral_33',['col_reduce_general',['../reduce__col_8h.html#a3b14333e195c0a07b70069bebf85d5c3',1,'reduce_col.h']]], + ['col_5freduce_5fgeneral_5fno_5fatomics_34',['col_reduce_general_no_atomics',['../reduce__col_8h.html#aef03a4131c710ba8f94a666f58719eb7',1,'reduce_col.h']]], + ['col_5freduce_5fsmall_35',['col_reduce_small',['../reduce__col_8h.html#a7da96ffb66e1fda27bad2852c2285b94',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)']]], + ['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_5ferase_44',['compile_erase',['../namespacemlx_1_1core_1_1detail.html#a69eb76a14f845ca000f1ccb2edda0175',1,'mlx::core::detail']]], + ['compile_5fimpl_2eh_45',['compile_impl.h',['../compile__impl_8h.html',1,'']]], + ['compiled_46',['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_47',['compiled.h',['../compiled_8h.html',1,'']]], + ['compiled_5fallocate_5foutputs_48',['compiled_allocate_outputs',['../namespacemlx_1_1core.html#ab8c3c4fc05745f586de922c8266f4fce',1,'mlx::core']]], + ['compiled_5fcheck_5fcontiguity_49',['compiled_check_contiguity',['../namespacemlx_1_1core.html#a3b900ab319948c5a01a3ecd30a709027',1,'mlx::core']]], + ['compiled_5fpreamble_2eh_50',['compiled_preamble.h',['../compiled__preamble_8h.html',1,'']]], + ['compilemode_51',['CompileMode',['../namespacemlx_1_1core.html#adb15ff2b1ca5207fd4f6e631e2c3bcb4',1,'mlx::core']]], + ['complex_2eh_52',['complex.h',['../backend_2metal_2kernels_2complex_8h.html',1,'(Global Namespace)'],['../types_2complex_8h.html',1,'(Global Namespace)']]], + ['complex128_5ft_53',['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_54',['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_55',['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#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_56',['complex_binop',['../types_2complex_8h.html#a9c7995d495359894e1b30c0f1678d6bd',1,'complex.h']]], + ['complex_5fbinop_5fhelper_57',['complex_binop_helper',['../types_2complex_8h.html#ac6890f9852de12339b09b65757ebc8c4',1,'complex.h']]], + ['complex_5fmul_58',['complex_mul',['../radix_8h.html#a5bfc53b531214c9ce277bebc18aa67d6',1,'radix.h']]], + ['complex_5fmul_5fconj_59',['complex_mul_conj',['../radix_8h.html#a0e2dfd3d1dda09f47ccc64eec35629f3',1,'radix.h']]], + ['complexfloating_60',['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_61',['compute_strided_indices',['../struct_read_writer.html#a7c903fbb8b85a856ba5564d7df537cdf',1,'ReadWriter']]], + ['concatenate_62',['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_63',['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_64',['concatenate_gpu',['../namespacemlx_1_1core.html#a050299d0d366ca5c9d09d1004dcc3e7d',1,'mlx::core']]], + ['concurrent_5fqueue_65',['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_66',['concurrent_queue< std::function< void()> >',['../classpocketfft_1_1detail_1_1threading_1_1concurrent__queue.html',1,'pocketfft::detail::threading']]], + ['concurrentcontext_67',['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_68',['cond',['../structmlx_1_1core_1_1scheduler_1_1_stream_thread.html#a4ffd524d6a5bedd1a303b63bdde6701c',1,'mlx::core::scheduler::StreamThread']]], + ['conj_69',['conj',['../namespacepocketfft_1_1detail.html#a66d79051d502046a9b9f103e744dbad3',1,'pocketfft::detail']]], + ['conjugate_70',['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_71',['conjugate',['../group__ops.html#ga5b596906bf8cdc8d97ed6ddc9aeb4c23',1,'mlx::core']]], + ['contiguous_72',['contiguous',['../structmlx_1_1core_1_1array_1_1_flags.html#afd0ab11e7a486a2a8e50ee84b971ac8a',1,'mlx::core::array::Flags']]], + ['contiguous_5fscan_73',['contiguous_scan',['../kernels_2scan_8h.html#a1f9c197dc09641f3fbb2e886c85b0675',1,'scan.h']]], + ['contiguousallreduce_74',['ContiguousAllReduce',['../namespacemlx_1_1core.html#a12412984a1cabfe1189942c898f8fe65ae4e34c7154eb8dc47aa8503209730424',1,'mlx::core']]], + ['contiguousreduce_75',['ContiguousReduce',['../namespacemlx_1_1core.html#a12412984a1cabfe1189942c898f8fe65ad2547f25dffe8d8936dbec25601cfc84',1,'mlx::core']]], + ['contiguousstridedreduce_76',['ContiguousStridedReduce',['../namespacemlx_1_1core.html#a12412984a1cabfe1189942c898f8fe65ab48dac7508a2c790de1bdc33f29177ed',1,'mlx::core']]], + ['conv_77',['conv',['../namespacemlx_1_1core_1_1metal.html#ab1704e853394c725668c06752ebb5c24',1,'mlx::core::metal']]], + ['conv_2eh_78',['conv.h',['../conv_8h.html',1,'']]], + ['conv1d_79',['conv1d',['../group__ops.html#ga30d47e08093c03a3676f235f9f559411',1,'mlx::core']]], + ['conv2d_80',['conv2d',['../group__ops.html#ga73b02833229678786e7f302d458d5a83',1,'mlx::core']]], + ['conv2dgeneralbaseinfo_81',['Conv2DGeneralBaseInfo',['../structmlx_1_1steel_1_1_conv2_d_general_base_info.html',1,'mlx::steel']]], + ['conv2dgeneraljumpparams_82',['Conv2DGeneralJumpParams',['../structmlx_1_1steel_1_1_conv2_d_general_jump_params.html',1,'mlx::steel']]], + ['conv2dinputblockloadergeneral_83',['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_84',['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_85',['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_86',['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_87',['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_88',['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_89',['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_90',['conv3d',['../group__ops.html#ga6e9907d2f14dc4803e4306b3dbc4b3ca',1,'mlx::core']]], + ['conv_5fgeneral_91',['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={})']]], + ['convolution_92',['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_93',['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_94',['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_95',['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_96',['copy_g',['../metal_2kernels_2copy_8h.html#a1ea80f8edb842dd0ed8ffe553a2238b2',1,'copy.h']]], + ['copy_5fg_5fnd_97',['copy_g_nd',['../metal_2kernels_2copy_8h.html#a07336a7a024125b4f6d3e8556d04058f',1,'copy.h']]], + ['copy_5fg_5fnd1_98',['copy_g_nd1',['../metal_2kernels_2copy_8h.html#aba4530a7db6a61ca36f50e4f5e58fb77',1,'copy.h']]], + ['copy_5fg_5fnd2_99',['copy_g_nd2',['../metal_2kernels_2copy_8h.html#aee678c7c31119f3e609685589f37490c',1,'copy.h']]], + ['copy_5fg_5fnd3_100',['copy_g_nd3',['../metal_2kernels_2copy_8h.html#a821f8f3f3891159a295c66fc25aed1ff',1,'copy.h']]], + ['copy_5fgg_101',['copy_gg',['../metal_2kernels_2copy_8h.html#a9fd1d98f0dcf976089754cd47f55784d',1,'copy.h']]], + ['copy_5fgg_5fnd_102',['copy_gg_nd',['../metal_2kernels_2copy_8h.html#a3197d34e9c68e7059419ae0635667059',1,'copy.h']]], + ['copy_5fgg_5fnd1_103',['copy_gg_nd1',['../metal_2kernels_2copy_8h.html#a3278d9c999718bee3ccbe2922f501bf1',1,'copy.h']]], + ['copy_5fgg_5fnd2_104',['copy_gg_nd2',['../metal_2kernels_2copy_8h.html#a3e2d3cc7f34f56170409b6735f51a950',1,'copy.h']]], + ['copy_5fgg_5fnd3_105',['copy_gg_nd3',['../metal_2kernels_2copy_8h.html#a59f43b5bffed936d7559ceb06a10aabd',1,'copy.h']]], + ['copy_5fgpu_106',['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_107',['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_108',['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_109',['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_110',['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_111',['copy_kernels',['../metal_2jit_2copy_8h.html#a02dd446c4670b26ee069a70e951be785',1,'copy.h']]], + ['copy_5foutput_112',['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_113',['copy_s',['../metal_2kernels_2copy_8h.html#aef09f9b9475345b1bba121d037d222ea',1,'copy.h']]], + ['copy_5fshared_5fbuffer_114',['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_115',['copy_v',['../metal_2kernels_2copy_8h.html#ae26a13e0c8e6c15f7b10078e65970659',1,'copy.h']]], + ['copytype_116',['CopyType',['../namespacemlx_1_1core.html#abd84ff6c5245e4e170b2ef5247594337',1,'mlx::core']]], + ['core_20array_20operations_117',['Core array operations',['../group__ops.html',1,'']]], + ['cos_118',['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_119',['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_120',['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_121',['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_122',['cosine',['../structpocketfft_1_1detail_1_1_exec_dcst.html#a185023fc1e386cc8f233b79c49c1fd8a',1,'pocketfft::detail::ExecDcst']]], + ['cospi_123',['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_124',['cost_guess',['../structpocketfft_1_1detail_1_1util.html#ad3d874bc3fb0048df2270779a15d4bd0',1,'pocketfft::detail::util']]], + ['count_5fdown_125',['count_down',['../classpocketfft_1_1detail_1_1threading_1_1latch.html#a81d6597189b40410e35f3cd653fd1342',1,'pocketfft::detail::threading::latch']]], + ['cpu_126',['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_127',['CumMax',['../struct_cum_max.html',1,'']]], + ['cummax_128',['cummax',['../group__ops.html#gaee37cac8476e8f8d666bcded5bc59143',1,'mlx::core']]], + ['cummin_129',['CumMin',['../struct_cum_min.html',1,'']]], + ['cummin_130',['cummin',['../group__ops.html#ga19c1bf6929fe8d66b9cd408946aea6a8',1,'mlx::core']]], + ['cumprod_131',['CumProd',['../struct_cum_prod.html',1,'']]], + ['cumprod_132',['cumprod',['../group__ops.html#ga0d71dfbc14ef3ed564b0c5ee26af680f',1,'mlx::core']]], + ['cumprod_3c_20bool_20_3e_133',['CumProd< bool >',['../struct_cum_prod_3_01bool_01_4.html',1,'']]], + ['cumsum_134',['CumSum',['../struct_cum_sum.html',1,'']]], + ['cumsum_135',['cumsum',['../group__ops.html#gaddc825a5c173e195ab0fda83ad630420',1,'mlx::core']]], + ['custom_136',['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_5fvjp_137',['custom_vjp',['../namespacemlx_1_1core.html#a3fa1f0ad360f3e16c146384276b1c467',1,'mlx::core']]], + ['customvjp_138',['CustomVJP',['../classmlx_1_1core_1_1_custom_v_j_p.html',1,'mlx::core::CustomVJP'],['../classmlx_1_1core_1_1_custom_v_j_p.html#aefdce05534ff6159f661a9768aadb511',1,'mlx::core::CustomVJP::CustomVJP()']]] +]; diff --git a/docs/build/html/search/all_4.js b/docs/build/html/search/all_4.js new file mode 100644 index 000000000..75dba1592 --- /dev/null +++ b/docs/build/html/search/all_4.js @@ -0,0 +1,63 @@ +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_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_3',['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_5fshared_5fptr_4',['data_shared_ptr',['../classmlx_1_1core_1_1array.html#ab84c792117e29cdf90ef3433303f6141',1,'mlx::core::array']]], + ['data_5fsize_5',['data_size',['../classmlx_1_1core_1_1array.html#afaf2a370fa35d96af1b27a4b814e3bfd',1,'mlx::core::array']]], + ['datatype_6',['DataType',['../namespace_m_p_s.html#a89deea53e8654b369b5cde55bdcd1288',1,'MPS::DataType'],['../namespace_m_p_s.html#a96effe6e5c9d287c6b86491509c78be2',1,'MPS::DataType']]], + ['datatypealternateencodingbit_7',['DataTypeAlternateEncodingBit',['../namespace_m_p_s.html#a89deea53e8654b369b5cde55bdcd1288a9681e9100f89bbc0484c4195ff1cef03',1,'MPS']]], + ['datatypebfloat16_8',['DataTypeBFloat16',['../namespace_m_p_s.html#a89deea53e8654b369b5cde55bdcd1288a39c004722f824f460d83cca680b242ca',1,'MPS']]], + ['datatypefloat16_9',['DataTypeFloat16',['../namespace_m_p_s.html#a89deea53e8654b369b5cde55bdcd1288a4fb70692e99c4ff2dc6028275e5a3868',1,'MPS']]], + ['datatypefloat32_10',['DataTypeFloat32',['../namespace_m_p_s.html#a89deea53e8654b369b5cde55bdcd1288a2156c04e979b8d8bd39d4ae17d53ded8',1,'MPS']]], + ['datatypefloatbit_11',['DataTypeFloatBit',['../namespace_m_p_s.html#a89deea53e8654b369b5cde55bdcd1288a330c9014eb076d89dae3d69f3b49c04a',1,'MPS']]], + ['dct_12',['dct',['../namespacepocketfft_1_1detail.html#a60615f5b685314c658346c309d5ef2ba',1,'pocketfft::detail']]], + ['deallocate_13',['deallocate',['../structpocketfft_1_1detail_1_1threading_1_1aligned__allocator.html#a2a99b8e296d26b255e9937ba5f30e76f',1,'pocketfft::detail::threading::aligned_allocator']]], + ['default_5f_14',['default_',['../classmlx_1_1core_1_1random_1_1_key_sequence.html#ab5993daeed822c6b970caddab7e3fd90',1,'mlx::core::random::KeySequence']]], + ['default_5fdevice_15',['default_device',['../namespacemlx_1_1core.html#a0196171cfe6ee2953113abce597dc815',1,'mlx::core']]], + ['default_5fstream_16',['default_stream',['../namespacemlx_1_1core.html#ac198b7e282957c724c84a435e8f1215e',1,'mlx::core']]], + ['define_5fdefault_5fis_5fequivalent_17',['DEFINE_DEFAULT_IS_EQUIVALENT',['../primitives_8h.html#a0fb9d19207dc4869aca35abfbdf4d70a',1,'primitives.h']]], + ['define_5fgrads_18',['DEFINE_GRADS',['../primitives_8h.html#a77abdcb55bc2eb0f9a45edc5ee639bf6',1,'primitives.h']]], + ['define_5finput_5foutput_5fshape_19',['DEFINE_INPUT_OUTPUT_SHAPE',['../primitives_8h.html#a649a06267b75e007224ea4ddefedb999',1,'primitives.h']]], + ['define_5fprint_20',['DEFINE_PRINT',['../classmlx_1_1core_1_1distributed_1_1_all_gather.html#a8af1e90d4aa56f31ec40ad152ebd2421',1,'mlx::core::distributed::AllGather::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()'],['../primitives_8h.html#a1d3a37af519e16f6a703b1e9ebd0f592',1,'DEFINE_PRINT: primitives.h']]], + ['define_5fvmap_21',['DEFINE_VMAP',['../primitives_8h.html#adc0fbd79fe0d1114dc85da4ed99798bd',1,'primitives.h']]], + ['defines_2eh_22',['defines.h',['../defines_8h.html',1,'(Global Namespace)'],['../steel_2defines_8h.html',1,'(Global Namespace)']]], + ['degrees_23',['degrees',['../group__ops.html#ga3a70569b50e1083c5ded199d73fb960c',1,'mlx::core']]], + ['deleter_5ft_24',['deleter_t',['../namespacemlx_1_1core.html#a1e6cec03ebd80fd2d6b12b288367bfa8',1,'mlx::core']]], + ['denorm_5fmin_25',['denorm_min',['../structmetal_1_1__numeric__limits__impl_3_01bfloat16__t_01_4.html#a6a9dbcba4dd79cad50876dda506b9eed',1,'metal::_numeric_limits_impl< bfloat16_t >']]], + ['depends_26',['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_27',['depends',['../group__ops.html#gac4a51a68fbe1725436b026d2fbb95759',1,'mlx::core']]], + ['dequantize_28',['dequantize',['../group__ops.html#gabff758a5c1ce32ad7e8b78aba0164077',1,'mlx::core']]], + ['detach_29',['detach',['../classmlx_1_1core_1_1array.html#a84948c29df8c957904919c8602692bd2',1,'mlx::core::array']]], + ['device_30',['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'],['../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_31',['device',['../structmlx_1_1core_1_1_stream.html#a406b1b0162287a4162fab1f70e2ff3bb',1,'mlx::core::Stream::device'],['../class_m_p_s_1_1_kernel.html#a46793d1c80a4df313c067103fcae6024',1,'MPS::Kernel::device()'],['../classmlx_1_1core_1_1_primitive.html#a8ae61e3289c4134232a69295268f8261',1,'mlx::core::Primitive::device()'],['../namespacemlx_1_1core_1_1metal.html#a910797b74824e6ee576fbb533dee8b57',1,'mlx::core::metal::device()']]], + ['device_2eh_32',['device.h',['../backend_2metal_2device_8h.html',1,'(Global Namespace)'],['../device_8h.html',1,'(Global Namespace)']]], + ['device_5finfo_33',['device_info',['../namespacemlx_1_1core_1_1metal.html#a6ad19c44efabb7423f973407926ead61',1,'mlx::core::metal']]], + ['devicetype_34',['DeviceType',['../structmlx_1_1core_1_1_device.html#ac45b3de9b3458d8f31005136cde20fdb',1,'mlx::core::Device']]], + ['diag_35',['diag',['../group__ops.html#ga11af511875640e1fa88e0ca87e199344',1,'mlx::core']]], + ['diagonal_36',['diagonal',['../group__ops.html#ga9236b085a88ead3128ed8079d009cac6',1,'mlx::core']]], + ['difference_5ftype_37',['difference_type',['../structmlx_1_1core_1_1array_1_1_array_iterator.html#adcee44c77980fc2370a2c31e203aead5',1,'mlx::core::array::ArrayIterator']]], + ['digits_38',['digits',['../structmetal_1_1__numeric__limits__impl_3_01bfloat16__t_01_4.html#af6a681edff230c8d734a1feefb8d1879',1,'metal::_numeric_limits_impl< bfloat16_t >']]], + ['digits10_39',['digits10',['../structmetal_1_1__numeric__limits__impl_3_01bfloat16__t_01_4.html#a0f48dd0c8a2d2dfa825067fb212b2e6b',1,'metal::_numeric_limits_impl< bfloat16_t >']]], + ['disable_5fcompile_40',['disable_compile',['../namespacemlx_1_1core.html#a5f5fea955057bb3842b271b037909e66',1,'mlx::core']]], + ['disabled_41',['disabled',['../namespacemlx_1_1core.html#adb15ff2b1ca5207fd4f6e631e2c3bcb4a075ae3d2fc31640504f814f60e5ef713',1,'mlx::core']]], + ['dispatchthreadgroups_42',['dispatchThreadgroups',['../structmlx_1_1core_1_1metal_1_1_command_encoder.html#a74bcd8e35f80f5a62db48c4a2bb0173e',1,'mlx::core::metal::CommandEncoder']]], + ['dispatchthreads_43',['dispatchThreads',['../structmlx_1_1core_1_1metal_1_1_command_encoder.html#a1e41477f2f489e38499f7830a91c9810',1,'mlx::core::metal::CommandEncoder']]], + ['distprimitive_44',['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#a9e4b0b92776aca0c1331450ae4955cef',1,'mlx::core::distributed::DistPrimitive::DistPrimitive()']]], + ['distributed_2eh_45',['distributed.h',['../distributed_8h.html',1,'']]], + ['divide_46',['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_47',['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_48',['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_49',['divmod',['../group__ops.html#gaa30ebc0a8376dbc3f7e46a47052b5894',1,'mlx::core']]], + ['do_5faxpby_50',['do_axpby',['../steel__gemm__fused_8h.html#a703f06c849c89c37af7b1d27b0804a29',1,'steel_gemm_fused.h']]], + ['do_5fgather_51',['do_gather',['../steel__gemm__fused_8h.html#a60efac3ac3b7cd64d096bbae38a3ac69',1,'steel_gemm_fused.h']]], + ['do_5fread_52',['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_53',['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_54',['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_55',['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_56',['dtype',['../classmlx_1_1core_1_1array.html#ae29e7d6fbfbea1e5e321a8d1ea3cfacd',1,'mlx::core::array']]], + ['dtype_2eh_57',['dtype.h',['../dtype_8h.html',1,'']]], + ['dtype_5ffrom_5farray_5fprotocol_58',['dtype_from_array_protocol',['../namespacemlx_1_1core.html#a14e0dfe96b41a04be91553799eb07594',1,'mlx::core']]], + ['dtype_5fto_5farray_5fprotocol_59',['dtype_to_array_protocol',['../namespacemlx_1_1core.html#a80509820694d2f74f0d262d13a90774b',1,'mlx::core']]] +]; diff --git a/docs/build/html/search/all_5.js b/docs/build/html/search/all_5.js new file mode 100644 index 000000000..d21cf693b --- /dev/null +++ b/docs/build/html/search/all_5.js @@ -0,0 +1,56 @@ +var searchData= +[ + ['e_0',['e',['../classmlx_1_1core_1_1_log.html#a044a23e8b1422984628e1cd5ab506421a491d45f7af463017c1f8cae94cd05590',1,'mlx::core::Log']]], + ['elem_1',['elem',['../struct_read_writer.html#a32b82adcd6ed324ce235e9f5ad780ede',1,'ReadWriter']]], + ['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#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']]], + ['elems_5fper_5fthread_10',['elems_per_thread',['../struct_read_writer.html#a444230a0182ce6ba1898c04ce6e669a7',1,'ReadWriter']]], + ['elems_5fper_5fthread_5f_11',['elems_per_thread_',['../backend_2metal_2kernels_2fft_8h.html#acf9b1130c134093453d15eee02683c94',1,'fft.h']]], + ['empty_12',['empty',['../classpocketfft_1_1detail_1_1threading_1_1concurrent__queue.html#a1269e5da40c3f5145c895cee3641879a',1,'pocketfft::detail::threading::concurrent_queue']]], + ['enable_5fcompile_13',['enable_compile',['../namespacemlx_1_1core.html#a1983a2466bff3bae4d23cf34bd0946c9',1,'mlx::core']]], + ['enable_5ffor_5farrays_5ft_14',['enable_for_arrays_t',['../namespacemlx_1_1core.html#af89751d79339f3e4d9318ea97d64d114',1,'mlx::core']]], + ['enabled_15',['enabled',['../namespacemlx_1_1core.html#adb15ff2b1ca5207fd4f6e631e2c3bcb4aa10311459433adf322f2590a4987c423',1,'mlx::core']]], + ['encodetocommandbuffer_16',['encodeToCommandBuffer',['../class_m_p_s_1_1_matrix_multiplication.html#ad30480456e66b79fa47086a3411c4921',1,'MPS::MatrixMultiplication::encodeToCommandBuffer()'],['../class_m_p_s_1_1_matrix_vector_multiplication.html#adefd2759c843035c73da2d9aad8ffb8a',1,'MPS::MatrixVectorMultiplication::encodeToCommandBuffer()']]], + ['end_17',['end',['../classmlx_1_1core_1_1array.html#a5daf64552fb450825c9b382f3a5fa2d4',1,'mlx::core::array']]], + ['end_5fencoding_18',['end_encoding',['../classmlx_1_1core_1_1metal_1_1_device.html#a60689f97347811b27e8c5ca23e0372bf',1,'mlx::core::metal::Device']]], + ['enqueue_19',['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_20',['epsilon',['../structmetal_1_1__numeric__limits__impl_3_01bfloat16__t_01_4.html#a96c4197e3076f0aa9065370b8ece49ca',1,'metal::_numeric_limits_impl< bfloat16_t >']]], + ['equal_21',['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_22',['equal',['../group__ops.html#ga33638dc3a9972dd02be12d0eb85f9bde',1,'mlx::core']]], + ['erf_23',['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_24',['erf',['../erf_8h.html#a6ce199ee56105c67adbf8c48c019a8b2',1,'erf(): erf.h'],['../group__ops.html#ga292a335240fd5d6d625fb7a340ff5eb0',1,'mlx::core::erf()']]], + ['erf_2eh_25',['erf.h',['../erf_8h.html',1,'']]], + ['erfinv_26',['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_27',['erfinv',['../erf_8h.html#a1846e0d683c7aff826bb32addcc3b885',1,'erfinv(): erf.h'],['../group__ops.html#ga76fb9062c64264e34d2e07013390557c',1,'mlx::core::erfinv()']]], + ['eval_28',['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_29',['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_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_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_v_j_p.html#acd8488aa60e8be7afc91b3ce3f555f14',1,'mlx::core::CustomVJP::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_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_30',['eval_gpu',['../classmlx_1_1core_1_1distributed_1_1_dist_primitive.html#a611ac8dfd9b4f49617ee8976ff3e15e9',1,'mlx::core::distributed::DistPrimitive::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_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_v_j_p.html#ac7208e2e77ab11d8ef054cf31f9c3d99',1,'mlx::core::CustomVJP::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_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_31',['Event',['../classmlx_1_1core_1_1_event.html',1,'mlx::core::Event'],['../classmlx_1_1core_1_1_event.html#a98f1f98d6cac43ddb682522acdce63d5',1,'mlx::core::Event::Event()'],['../classmlx_1_1core_1_1_event.html#a13e4835f2ffb2cc22e29148a448ea184',1,'mlx::core::Event::Event(const Stream &steam)']]], + ['event_32',['event',['../classmlx_1_1core_1_1array.html#a0a8e4d6e67e739a712876bb36f88f9bf',1,'mlx::core::array']]], + ['event_2eh_33',['event.h',['../event_8h.html',1,'']]], + ['excess_34',['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_35',['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_36',['exec_r',['../classpocketfft_1_1detail_1_1fftblue.html#a642b4aff0485c7d9c8794161a1464f00',1,'pocketfft::detail::fftblue']]], + ['execc2c_37',['ExecC2C',['../structpocketfft_1_1detail_1_1_exec_c2_c.html',1,'pocketfft::detail']]], + ['execdcst_38',['ExecDcst',['../structpocketfft_1_1detail_1_1_exec_dcst.html',1,'pocketfft::detail']]], + ['exechartley_39',['ExecHartley',['../structpocketfft_1_1detail_1_1_exec_hartley.html',1,'pocketfft::detail']]], + ['execr2r_40',['ExecR2R',['../structpocketfft_1_1detail_1_1_exec_r2_r.html',1,'pocketfft::detail']]], + ['exp_41',['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_42',['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_43',['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_44',['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_45',['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_46',['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_47',['expm1',['../group__ops.html#ga54ca54f06bfb2be15b163a5209e2a0f0',1,'mlx::core']]], + ['expm1f_48',['expm1f',['../expm1f_8h.html#a87f66d30e185950f42ce3641783cdc40',1,'expm1f.h']]], + ['expm1f_2eh_49',['expm1f.h',['../expm1f_8h.html',1,'']]], + ['expm1f_5fscaled_5funchecked_50',['expm1f_scaled_unchecked',['../expm1f_8h.html#adf20e03405fba634ca8d01acac24592e',1,'expm1f.h']]], + ['export_5fto_5fdot_51',['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_52',['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 new file mode 100644 index 000000000..c80e5d00d --- /dev/null +++ b/docs/build/html/search/all_6.js @@ -0,0 +1,58 @@ +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_2jit_2fft_8h.html',1,'(Global Namespace)'],['../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={})']]], + ['fft_5fkernel_17',['fft_kernel',['../backend_2metal_2jit_2fft_8h.html#a19e5f580e97a92ca879a804ebaa1087c',1,'fft.h']]], + ['fftblue_18',['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_19',['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={})']]], + ['filereader_20',['FileReader',['../classmlx_1_1core_1_1io_1_1_file_reader.html',1,'mlx::core::io::FileReader'],['../classmlx_1_1core_1_1io_1_1_file_reader.html#a4ffeb757e33a1776f744eaabcc754118',1,'mlx::core::io::FileReader::FileReader(std::ifstream is)'],['../classmlx_1_1core_1_1io_1_1_file_reader.html#a77a9664157f906be6795ddcbbf7b7be5',1,'mlx::core::io::FileReader::FileReader(std::string file_path)']]], + ['filewriter_21',['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#aae08975a683342b282d25fb972857c72',1,'mlx::core::io::FileWriter::FileWriter(std::ofstream os)'],['../classmlx_1_1core_1_1io_1_1_file_writer.html#a40b241ad540ee4aadc3a19a6b1ccfb4d',1,'mlx::core::io::FileWriter::FileWriter(std::string file_path)']]], + ['finite_5fmax_22',['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_23',['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_24',['Flags',['../structmlx_1_1core_1_1array_1_1_flags.html',1,'mlx::core::array']]], + ['flags_25',['flags',['../classmlx_1_1core_1_1array.html#a0a20a6065ae71b64c1e3aa22a45fd8a1',1,'mlx::core::array']]], + ['flatten_26',['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_27',['flip',['../struct_m_l_x_conv_params.html#a8b30cda15eda20f84f12db868f21d0ef',1,'MLXConvParams']]], + ['float16_28',['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_29',['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_30',['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_31',['float_to_bfloat_bits',['../backend_2metal_2kernels_2bf16_8h.html#a31ce5e8e860295fa236e0d4b0befeae1',1,'bf16.h']]], + ['floating_32',['floating',['../structmlx_1_1core_1_1_dtype.html#ac091c39cbd6686ef69aa1e5a2425aa2da374515b23d6f106696387776a6077d17',1,'mlx::core::Dtype::floating'],['../namespacemlx_1_1core.html#ac9f9ea13cf0661e671569d37d14a128a',1,'mlx::core::floating']]], + ['floor_33',['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_34',['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_35',['floor_divide',['../group__ops.html#ga05b4c6054d028107869511f927da01cd',1,'mlx::core']]], + ['floordivide_36',['FloorDivide',['../struct_floor_divide.html',1,'']]], + ['fma_37',['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_38',['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_39',['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_40',['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_41',['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_42',['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_43',['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_44',['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_45',['FORWARD',['../namespacepocketfft_1_1detail.html#aecc5444a333360628be65a6f91ceb824',1,'pocketfft::detail']]], + ['four_5fstep_5ffft_46',['four_step_fft',['../backend_2metal_2kernels_2fft_8h.html#a6558a8205ee4c3e4767bafa93f7606de',1,'fft.h']]], + ['four_5fstep_5ffft_5fkernel_47',['four_step_fft_kernel',['../backend_2metal_2jit_2fft_8h.html#aeca5467dbf53c4324b73fe6ef18d3daf',1,'fft.h']]], + ['fp16_2eh_48',['fp16.h',['../fp16_8h.html',1,'']]], + ['fp16_5fbf16_5fbinop_5fhelper_49',['fp16_bf16_binop_helper',['../half__types_8h.html#a1f0d5d395d403bde764fffe4846617f9',1,'half_types.h']]], + ['fract_50',['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_51',['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_52',['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_53',['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_54',['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 new file mode 100644 index 000000000..18e9c5d6e --- /dev/null +++ b/docs/build/html/search/all_7.js @@ -0,0 +1,95 @@ +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#a1a4a98a3290404e95bd2aeb16d160989',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',['../kernels_2steel_2gemm_2gemm_8h.html',1,'(Global Namespace)'],['../mps_2gemm_8h.html',1,'(Global Namespace)']]], + ['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']]], + ['general_25',['General',['../namespacemlx_1_1core.html#abd84ff6c5245e4e170b2ef5247594337a0db377921f4ce762c62526131097968f',1,'mlx::core']]], + ['general_5fc2r_26',['general_c2r',['../namespacepocketfft_1_1detail.html#ac8ee38e8d8bcda875c99eeaf567550fc',1,'pocketfft::detail']]], + ['general_5fnd_27',['general_nd',['../namespacepocketfft_1_1detail.html#ab47f52551920af5eb9f57fbbded0f4f0',1,'pocketfft::detail']]], + ['general_5fr2c_28',['general_r2c',['../namespacepocketfft_1_1detail.html#a055a39b0a337ca12217717196eb92fed',1,'pocketfft::detail']]], + ['generalcontiguousreduce_29',['GeneralContiguousReduce',['../namespacemlx_1_1core.html#a12412984a1cabfe1189942c898f8fe65a540cf31fe6858115a02e789938297cdb',1,'mlx::core']]], + ['generalgeneral_30',['GeneralGeneral',['../namespacemlx_1_1core.html#abd84ff6c5245e4e170b2ef5247594337a6fe62e8ce1fae1e70cb9eeaa67d29dab',1,'mlx::core']]], + ['generalreduce_31',['GeneralReduce',['../namespacemlx_1_1core.html#a12412984a1cabfe1189942c898f8fe65a3622f95ed0ec99657f9ad8ef39ec2184',1,'mlx::core']]], + ['generalstridedreduce_32',['GeneralStridedReduce',['../namespacemlx_1_1core.html#a12412984a1cabfe1189942c898f8fe65ad999b1a8ae1d7436efb5ffdfafb1dd3d',1,'mlx::core']]], + ['generic_33',['generic',['../structmlx_1_1core_1_1_dtype.html#ac091c39cbd6686ef69aa1e5a2425aa2da3d517f8924ac7fd03699a29d97dc52d9',1,'mlx::core::Dtype::generic'],['../namespacemlx_1_1core.html#a34d69c4d46aa9b2a4a79dba7aba093d2',1,'mlx::core::generic']]], + ['get_5factive_5fmemory_34',['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_35',['get_arange_kernel',['../namespacemlx_1_1core.html#a76f614e9956a6ca05a9be4db5a483446',1,'mlx::core']]], + ['get_5fbinary_5fkernel_36',['get_binary_kernel',['../namespacemlx_1_1core.html#aec97852a7d8938407122d21e78d66f5f',1,'mlx::core']]], + ['get_5fbinary_5ftwo_5fkernel_37',['get_binary_two_kernel',['../namespacemlx_1_1core.html#a0a5effc3e1cfd4123b9a63c08e947e45',1,'mlx::core']]], + ['get_5fcache_5fmemory_38',['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_39',['get_colocated_mtllib_path',['../namespacemlx_1_1core_1_1metal.html#a5fd6ba2040e53a254b9d71ae7ebd315f',1,'mlx::core::metal']]], + ['get_5fcommand_5fbuffer_40',['get_command_buffer',['../classmlx_1_1core_1_1metal_1_1_device.html#a5fe3970fbe92ccc55fce4241ffbe5210',1,'mlx::core::metal::Device']]], + ['get_5fcommand_5fbuffer_5fops_41',['get_command_buffer_ops',['../classmlx_1_1core_1_1metal_1_1_device.html#a064e1cb6a16de7a0619f6447622350f8',1,'mlx::core::metal::Device']]], + ['get_5fcommand_5fencoder_42',['get_command_encoder',['../classmlx_1_1core_1_1metal_1_1_device.html#affa682ef612def4890f5152f81ffb7e6',1,'mlx::core::metal::Device']]], + ['get_5fcopy_5fkernel_43',['get_copy_kernel',['../namespacemlx_1_1core.html#a05a220cff45f12439fde775983c6df78',1,'mlx::core']]], + ['get_5fdefault_5fstream_44',['get_default_stream',['../classmlx_1_1core_1_1scheduler_1_1_scheduler.html#af4e49f6271df08bfe7ed7ba7cd960213',1,'mlx::core::scheduler::Scheduler']]], + ['get_5ffft_5fkernel_45',['get_fft_kernel',['../namespacemlx_1_1core.html#a4d8800bb9892b04684c78e3e5c760983',1,'mlx::core']]], + ['get_5ffunction_46',['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_5fkernel_47',['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_48',['get_kernel_preamble',['../compiled__preamble_8h.html#a1dfa17a0369fb90ff615c7461f5013f3',1,'compiled_preamble.h']]], + ['get_5flibrary_49',['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_50',['get_mb_sort_kernel',['../namespacemlx_1_1core.html#afb57825bb763050cc9a9d194aa41ac36',1,'mlx::core']]], + ['get_5fname_51',['get_name',['../structmlx_1_1core_1_1_node_namer.html#a1690dd38de288c0aee2bb53156eb770e',1,'mlx::core::NodeNamer']]], + ['get_5fpeak_5fmemory_52',['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_53',['get_plan',['../namespacepocketfft_1_1detail.html#ab24cdb6118901f4d3c8df06ef0f8390b',1,'pocketfft::detail']]], + ['get_5fpool_54',['get_pool',['../namespacepocketfft_1_1detail_1_1threading.html#a7ec2b3f99232bd0f15f7b022c59d139a',1,'pocketfft::detail::threading']]], + ['get_5freduce_5finit_5fkernel_55',['get_reduce_init_kernel',['../namespacemlx_1_1core.html#a51c4bb09230348bd0252e22bfdc9bc89',1,'mlx::core']]], + ['get_5freduce_5fkernel_56',['get_reduce_kernel',['../namespacemlx_1_1core.html#a5d6843dcbdbd4d12851fc2edbafbc9e6',1,'mlx::core']]], + ['get_5fscan_5fkernel_57',['get_scan_kernel',['../namespacemlx_1_1core.html#aeefaff208444d3fa61ecc0946fe1de5f',1,'mlx::core']]], + ['get_5fshape_58',['get_shape',['../namespacemlx_1_1core.html#aab0d8a256957984acc1e3615c65c898e',1,'mlx::core']]], + ['get_5fsoftmax_5fkernel_59',['get_softmax_kernel',['../namespacemlx_1_1core.html#a35a412f688d79eb47e42d20a7c8650ee',1,'mlx::core']]], + ['get_5fsort_5fkernel_60',['get_sort_kernel',['../namespacemlx_1_1core.html#a84ebe6275218070f0ea320f126f64e22',1,'mlx::core']]], + ['get_5fsteel_5fconv_5fgeneral_5fkernel_61',['get_steel_conv_general_kernel',['../namespacemlx_1_1core.html#abce2b67044ee06a7bbe7a91ec7c8c48d',1,'mlx::core']]], + ['get_5fsteel_5fconv_5fkernel_62',['get_steel_conv_kernel',['../namespacemlx_1_1core.html#adce79d220672f5f3c65cc31d145ca9c4',1,'mlx::core']]], + ['get_5fsteel_5fgemm_5ffused_5fkernel_63',['get_steel_gemm_fused_kernel',['../namespacemlx_1_1core.html#a84fa8e0aee321a9d614433a0b933103b',1,'mlx::core']]], + ['get_5fsteel_5fgemm_5fmasked_5fkernel_64',['get_steel_gemm_masked_kernel',['../namespacemlx_1_1core.html#ab5f60614e965144b451930fdf935e08d',1,'mlx::core']]], + ['get_5fsteel_5fgemm_5fsplitk_5faccum_5fkernel_65',['get_steel_gemm_splitk_accum_kernel',['../namespacemlx_1_1core.html#a195b86cad5bb99aa1bcd23952305af6b',1,'mlx::core']]], + ['get_5fsteel_5fgemm_5fsplitk_5fkernel_66',['get_steel_gemm_splitk_kernel',['../namespacemlx_1_1core.html#af48c6f2f72b61dbd6766e4f5fea85df5',1,'mlx::core']]], + ['get_5fternary_5fkernel_67',['get_ternary_kernel',['../namespacemlx_1_1core.html#a266558f20a72c439396ecd492a08d65f',1,'mlx::core']]], + ['get_5ftwiddle_68',['get_twiddle',['../radix_8h.html#ac5cf950316b9445296ee9ecfc56a56bd',1,'radix.h']]], + ['get_5ftype_5fstring_69',['get_type_string',['../namespacemlx_1_1core.html#af776fd91dd60594dcfebbafd17f19068',1,'mlx::core']]], + ['get_5funary_5fkernel_70',['get_unary_kernel',['../namespacemlx_1_1core.html#accf153854ef650d6a6633775d8a70612',1,'mlx::core']]], + ['gguf_2eh_71',['gguf.h',['../gguf_8h.html',1,'']]], + ['gguf_5fload_5fquantized_72',['gguf_load_quantized',['../namespacemlx_1_1core.html#a65dd68163bdaef3631e3724327782498',1,'mlx::core']]], + ['ggufload_73',['GGUFLoad',['../namespacemlx_1_1core.html#aa5b0f7f13a941e1f41c411194e9033c7',1,'mlx::core']]], + ['ggufmetadata_74',['GGUFMetaData',['../namespacemlx_1_1core.html#a8c2c1b9a37aadfb48f4c3a7e806e32e3',1,'mlx::core']]], + ['global_5fformatter_75',['global_formatter',['../namespacemlx_1_1core.html#af5a408a78cc934717dd711ddfda58ea6',1,'mlx::core']]], + ['good_76',['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_file_reader.html#a4ecb046dfa7dab346d096adab3a1c318',1,'mlx::core::io::FileReader::good()'],['../classmlx_1_1core_1_1io_1_1_file_writer.html#a9ec4934b26fb358d699ddce1482b2d54',1,'mlx::core::io::FileWriter::good()']]], + ['good_5fsize_5fcmplx_77',['good_size_cmplx',['../structpocketfft_1_1detail_1_1util.html#a758e00d242a1b7eda8f9f0c21f35c624',1,'pocketfft::detail::util']]], + ['good_5fsize_5freal_78',['good_size_real',['../structpocketfft_1_1detail_1_1util.html#a173da7d5929ded86fffcebcfdc5086aa',1,'pocketfft::detail::util']]], + ['gpu_79',['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_80',['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_81',['graph_utils.h',['../graph__utils_8h.html',1,'']]], + ['greater_82',['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_83',['greater',['../group__ops.html#gaf4ec7bfc1ad13b891f1f3ef1772ef04d',1,'mlx::core']]], + ['greater_5fequal_84',['greater_equal',['../group__ops.html#ga7153071bcfff6faad21332163fb9a430',1,'mlx::core']]], + ['greaterequal_85',['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_86',['grid',['../struct_read_writer.html#ac7a957f99873d3797081f5d620f3b2c8',1,'ReadWriter']]], + ['group_87',['Group',['../structmlx_1_1core_1_1distributed_1_1_group.html',1,'mlx::core::distributed']]], + ['group_88',['group',['../classmlx_1_1core_1_1distributed_1_1_dist_primitive.html#a8831cb61ac633431b78b5fb99c0ea9ff',1,'mlx::core::distributed::DistPrimitive']]], + ['group_89',['Group',['../structmlx_1_1core_1_1distributed_1_1_group.html#a6f84accc8d6734989b2757bf6cdd0152',1,'mlx::core::distributed::Group']]], + ['groups_90',['groups',['../struct_m_l_x_conv_params.html#af7a5590ac0974c7841c7f8b9fda0cbed',1,'MLXConvParams']]], + ['gumbel_91',['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 new file mode 100644 index 000000000..a508468a6 --- /dev/null +++ b/docs/build/html/search/all_8.js @@ -0,0 +1,13 @@ +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']]], + ['half_5ftypes_2eh_7',['half_types.h',['../half__types_8h.html',1,'']]], + ['has_5fbatch_8',['has_batch',['../steel__gemm__fused_8h.html#adffcdc900c19ff97f1523e43f1a5a6cc',1,'steel_gemm_fused.h']]], + ['has_5fprimitive_9',['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 new file mode 100644 index 000000000..e070502ee --- /dev/null +++ b/docs/build/html/search/all_9.js @@ -0,0 +1,77 @@ +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',['../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_and.html#ab55eac58830ae01c45f18377eff021ea',1,'And::init'],['../struct_or.html#a6734c64e8048a209047fa18dd8bd49e8',1,'Or::init'],['../struct_sum.html#a433bf0fe3ce751c18e5269bbc19daa65',1,'Sum::init'],['../struct_prod.html#ac99f3882b6c3c0c17d70a82f2f2f2c56',1,'Prod::init'],['../struct_min.html#a322a8241f9e9f60ffa040e68c02af97c',1,'Min::init'],['../struct_max.html#aa985471d570c1009e5cbb174efcb9131',1,'Max::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'],['../class_m_p_s_1_1_matrix.html#a2398221610a7c610c85cf7fb3f18281b',1,'MPS::Matrix::init(MTL::Buffer *buffer, MatrixDescriptor *descriptor)'],['../class_m_p_s_1_1_matrix.html#a40771ae44d119abd56bd32b7cc38feda',1,'MPS::Matrix::init(const MTL::Buffer *buffer, MatrixDescriptor *descriptor)'],['../class_m_p_s_1_1_matrix_multiplication.html#a35b1a908807eb8ececd0241531dea823',1,'MPS::MatrixMultiplication::init()'],['../class_m_p_s_1_1_vector.html#a2ea0c0575489e4689d19640d1da1b179',1,'MPS::Vector::init(MTL::Buffer *buffer, VectorDescriptor *descriptor)'],['../class_m_p_s_1_1_vector.html#aa95af1607e9978c2757f8a5503a95244',1,'MPS::Vector::init(const MTL::Buffer *buffer, VectorDescriptor *descriptor)'],['../class_m_p_s_1_1_matrix_vector_multiplication.html#a62c065490befe32c6a59b888b1347c80',1,'MPS::MatrixVectorMultiplication::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']]], + ['inp_5fjump_5fc_25',['inp_jump_c',['../structmlx_1_1steel_1_1_implicit_gemm_conv2_d_params.html#a78d30e843d65d1829623afb0b607f0a5',1,'mlx::steel::ImplicitGemmConv2DParams']]], + ['inp_5fjump_5fh_26',['inp_jump_h',['../structmlx_1_1steel_1_1_implicit_gemm_conv2_d_params.html#a03685a4066cdb11ffb647408e2c5b122',1,'mlx::steel::ImplicitGemmConv2DParams']]], + ['inp_5fjump_5fw_27',['inp_jump_w',['../structmlx_1_1steel_1_1_implicit_gemm_conv2_d_params.html#acf168c72f4a86b72b8f5f386f07c9d8c',1,'mlx::steel::ImplicitGemmConv2DParams']]], + ['inputs_28',['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_29',['instantiate_default_limit',['../backend_2metal_2kernels_2utils_8h.html#abedffa358e7ba7782cc78d6772064c7c',1,'utils.h']]], + ['instantiate_5ffloat_5flimit_30',['instantiate_float_limit',['../backend_2metal_2kernels_2utils_8h.html#a1e520e23f58ca645dea1ac20998d987a',1,'utils.h']]], + ['instantiate_5fmetal_5fmath_5ffuncs_31',['instantiate_metal_math_funcs',['../bf16__math_8h.html#a9e9f0fdd6e304522bc88acd22c576842',1,'bf16_math.h']]], + ['instantiate_5fmetal_5fsimd_5fcomm_5ffuncs_32',['instantiate_metal_simd_comm_funcs',['../bf16__math_8h.html#aecc11cb898846d01bfc9faa109fcf791',1,'bf16_math.h']]], + ['instantiate_5fmetal_5fsimd_5freduction_5ffuncs_33',['instantiate_metal_simd_reduction_funcs',['../bf16__math_8h.html#a51688bc24fc9292aaec5f54a58eaa2d0',1,'bf16_math.h']]], + ['int16_34',['int16',['../structmlx_1_1core_1_1_dtype.html#ade845ef5dcebead13a37fe696436e1daace80d5ec65b1d2a2f1049eadc100db23',1,'mlx::core::Dtype::int16'],['../namespacemlx_1_1core.html#a71ebba4ad1afa730962f0692c4f42f07',1,'mlx::core::int16']]], + ['int32_35',['int32',['../structmlx_1_1core_1_1_dtype.html#ade845ef5dcebead13a37fe696436e1daa0241adbbd83925f051b694d40f02747f',1,'mlx::core::Dtype::int32'],['../namespacemlx_1_1core.html#a5d6373aad1444edc9de1eb07bfe5cad3',1,'mlx::core::int32']]], + ['int64_36',['int64',['../structmlx_1_1core_1_1_dtype.html#ade845ef5dcebead13a37fe696436e1daaff9b3f96d37353c528517bc3656a00a8',1,'mlx::core::Dtype::int64'],['../namespacemlx_1_1core.html#a9019bdc191054ada0a502c7c34cef5b8',1,'mlx::core::int64']]], + ['int8_37',['int8',['../structmlx_1_1core_1_1_dtype.html#ade845ef5dcebead13a37fe696436e1daa27c006cc56b1ba88f960cf8b5144fcac',1,'mlx::core::Dtype::int8'],['../namespacemlx_1_1core.html#a892e934e146dd938d144cee8813ca672',1,'mlx::core::int8']]], + ['integer_38',['integer',['../structmlx_1_1core_1_1_dtype.html#ac091c39cbd6686ef69aa1e5a2425aa2da157db7df530023575515d366c9b672e8',1,'mlx::core::Dtype::integer'],['../namespacemlx_1_1core.html#a074d000f25ae3ed77450e6a5fec4b38b',1,'mlx::core::integer']]], + ['intorfloat_39',['IntOrFloat',['../unionmlx_1_1core_1_1detail_1_1_int_or_float.html',1,'mlx::core::detail']]], + ['intracing_40',['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_41',['inv',['../struct_read_writer.html#a773fa8524515bdc2ff8b0e2060741813',1,'ReadWriter::inv'],['../namespacemlx_1_1core_1_1linalg.html#ad966a0b6bff176c9f933534ed62389a2',1,'mlx::core::linalg::inv()']]], + ['inv_5f_42',['inv_',['../backend_2metal_2kernels_2fft_8h.html#a23a773ae455da5d0b9b5508ee2e7694b',1,'fft.h']]], + ['inv_5falpha_43',['INV_ALPHA',['../struct_m_l_x_scaled_dot_product_attention_params.html#a7461e0e17cdc7d3fed80bb00d58d8644',1,'MLXScaledDotProductAttentionParams']]], + ['inverse_44',['Inverse',['../classmlx_1_1core_1_1_inverse.html',1,'mlx::core::Inverse'],['../classmlx_1_1core_1_1_inverse.html#a4fcdda66a176b520fe4655ab91862aad',1,'mlx::core::Inverse::Inverse()']]], + ['io_2eh_45',['io.h',['../io_8h.html',1,'']]], + ['iofs_46',['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_47',['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_48',['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_49',['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_50',['iS',['../struct_m_l_x_conv_params.html#a72e1c3b4da0f70622cf18036bbf97fe6',1,'MLXConvParams']]], + ['is_5farray_5fv_51',['is_array_v',['../namespacemlx_1_1core.html#a01b0d64a75dfa2e95d6c7b5c53d708af',1,'mlx::core']]], + ['is_5farrays_5fv_52',['is_arrays_v',['../namespacemlx_1_1core.html#a94c1057929b390e5613304afa16dfbda',1,'mlx::core']]], + ['is_5favailable_53',['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_5fbig_5fendian_54',['is_big_endian',['../namespacemlx_1_1core.html#a625ed440df3fa57318017c1f2c589efe',1,'mlx::core']]], + ['is_5fdonatable_55',['is_donatable',['../classmlx_1_1core_1_1array.html#a4677a404b5d191af20b52649225de087',1,'mlx::core::array']]], + ['is_5fequivalent_56',['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_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_57',['is_metal_atomic',['../atomic_8h.html#a91a8bdcae647947a83c6689d7f252d24',1,'atomic.h']]], + ['is_5fopen_58',['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_file_reader.html#a97ccdbd79886d9b95b32e5cd4741d150',1,'mlx::core::io::FileReader::is_open()'],['../classmlx_1_1core_1_1io_1_1_file_writer.html#ad5d2ee671a81700cb1658c41309d6676',1,'mlx::core::io::FileWriter::is_open()']]], + ['is_5fpower_5fof_5f2_5f_59',['is_power_of_2_',['../backend_2metal_2kernels_2fft_8h.html#abeb0f8d030ee27c89882b87eed13be2d',1,'fft.h']]], + ['is_5fready_60',['is_ready',['../classpocketfft_1_1detail_1_1threading_1_1latch.html#ab41ecc5adb6187aa2682ca190fd920f3',1,'pocketfft::detail::threading::latch']]], + ['is_5fsame_5fshape_61',['is_same_shape',['../namespacemlx_1_1core.html#ad4b664de4a4abd305827b30879b9da33',1,'mlx::core']]], + ['is_5fscalar_62',['is_scalar',['../namespacemlx_1_1core.html#a985c60929757190e0b4ec51f57c767d0',1,'mlx::core']]], + ['is_5fstatic_5fcast_63',['is_static_cast',['../namespacemlx_1_1core.html#afd9e740e567f9d7c28e00113caf46d5f',1,'mlx::core']]], + ['is_5ftracer_64',['is_tracer',['../classmlx_1_1core_1_1array.html#af9acb115019b995354d366c4ac6b968c',1,'mlx::core::array']]], + ['isclose_65',['isclose',['../group__ops.html#ga51eac95c04400921c54716de14b52491',1,'mlx::core']]], + ['isinf_66',['isinf',['../group__ops.html#ga8fc238d5e5d1153e69da8b36015d9844',1,'mlx::core']]], + ['isnan_67',['isnan',['../namespacemetal.html#a83320ba983d90dd1fa5847b6940dc0bb',1,'metal::isnan()'],['../group__ops.html#ga175592792471b0ffb45196dca4711ba6',1,'mlx::core::isnan(const array &a, StreamOrDevice s={})']]], + ['isneginf_68',['isneginf',['../group__ops.html#ga1940523da381ed7be50656a3bc465ff3',1,'mlx::core']]], + ['isposinf_69',['isposinf',['../group__ops.html#gad80f7c4a58c12b6cb30a8b9a73008993',1,'mlx::core']]], + ['issubdtype_70',['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_71',['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_72',['itemsize',['../classmlx_1_1core_1_1array.html#af329d9432c92de87cbaa2de8454eefc0',1,'mlx::core::array']]], + ['iterator_5fcategory_73',['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 new file mode 100644 index 000000000..ce1057ba2 --- /dev/null +++ b/docs/build/html/search/all_a.js @@ -0,0 +1,7 @@ +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_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_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_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 new file mode 100644 index 000000000..db56319dc --- /dev/null +++ b/docs/build/html/search/all_b.js @@ -0,0 +1,14 @@ +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']]], + ['kernel_2',['Kernel',['../class_m_p_s_1_1_kernel.html',1,'MPS']]], + ['kernelmergesort_3',['KernelMergeSort',['../struct_kernel_merge_sort.html',1,'']]], + ['kernelmultiblockmergesort_4',['KernelMultiBlockMergeSort',['../struct_kernel_multi_block_merge_sort.html',1,'']]], + ['kernels_2eh_5',['kernels.h',['../kernels_8h.html',1,'']]], + ['key_6',['key',['../namespacemlx_1_1core_1_1random.html#acf04b6f42de11383e86dcc7f98c67bd8',1,'mlx::core::random']]], + ['keysequence_7',['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_8',['Kind',['../structmlx_1_1core_1_1_dtype.html#adb1ea8b45a0c53e04a0e73b168702715',1,'mlx::core::Dtype']]], + ['kindof_9',['kindof',['../namespacemlx_1_1core.html#ad527b86818823db040195785efd7d724',1,'mlx::core']]], + ['kv_5ftiles_10',['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 new file mode 100644 index 000000000..e5ece37aa --- /dev/null +++ b/docs/build/html/search/all_c.js @@ -0,0 +1,80 @@ +var searchData= +[ + ['label_0',['label',['../class_m_p_s_1_1_kernel.html#aaf646bce46266bc11c419464ec72cdfe',1,'MPS::Kernel::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_file_reader.html#a7415da4cb14c328ed07901ff1c266221',1,'mlx::core::io::FileReader::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,'']]], + ['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',1,'pocketfft::detail::threading::latch'],['../classpocketfft_1_1detail_1_1threading_1_1latch.html#a9260c871bb927525f7f53caa23a19c15',1,'pocketfft::detail::threading::latch::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',1,'mlx::core::fast::LayerNorm'],['../classmlx_1_1core_1_1fast_1_1_layer_norm.html#a5ac38d50e62850589bf51ee313303153',1,'mlx::core::fast::LayerNorm::LayerNorm()']]], + ['layernormvjp_6',['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_7',['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_8',['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_9',['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_10',['ldd',['../structmlx_1_1steel_1_1_g_e_m_m_params.html#a6e8ae14e3f97c499ad9c39358a1855ab',1,'mlx::steel::GEMMParams']]], + ['ldexp_11',['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_12',['ldk',['../struct_m_l_x_fast_attention_params.html#a1f8c89bd55d89ad7b9fe27c60e3cb8d5',1,'MLXFastAttentionParams']]], + ['ldo_13',['ldo',['../struct_m_l_x_fast_attention_params.html#a9e73dc1971b5ab913bd85a7afa7cf46c',1,'MLXFastAttentionParams']]], + ['ldq_14',['ldq',['../struct_m_l_x_fast_attention_params.html#af2dadba2a28f5db2ca52472d00937e58',1,'MLXFastAttentionParams']]], + ['lds_15',['lds',['../struct_m_l_x_fast_attention_params.html#a274eeb8591c02511014dce50c4240c8a',1,'MLXFastAttentionParams']]], + ['ldv_16',['ldv',['../struct_m_l_x_fast_attention_params.html#aebada0bf0789e8706dce564752208e8b',1,'MLXFastAttentionParams']]], + ['left_5fshift_17',['left_shift',['../group__ops.html#ga89682bf78491761e062d4ee7bef0c829',1,'mlx::core']]], + ['leftshift_18',['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_19',['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_20',['length_in',['../classpocketfft_1_1detail_1_1multi__iter.html#a5318b79d934cddf109dff7bf96a330c8',1,'pocketfft::detail::multi_iter']]], + ['length_5fout_21',['length_out',['../classpocketfft_1_1detail_1_1multi__iter.html#a93cd515d07cd479138a35da9df66bd41',1,'pocketfft::detail::multi_iter']]], + ['less_22',['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_23',['less',['../group__ops.html#ga9142b8d717699a8abfa2a7398891ff8a',1,'mlx::core']]], + ['less_5fequal_24',['less_equal',['../group__ops.html#ga0d49e0c7011d0573c369c13c8f045a09',1,'mlx::core']]], + ['lessequal_25',['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_26',['LessThan',['../struct_less_than.html',1,'']]], + ['lib_5fname_27',['lib_name',['../classmlx_1_1core_1_1_compiled.html#ae5c16cb91ac31b97e7652cc526c07439',1,'mlx::core::Compiled']]], + ['limits_28',['Limits',['../struct_limits.html',1,'']]], + ['limits_3c_20bfloat16_5ft_20_3e_29',['Limits< bfloat16_t >',['../struct_limits_3_01bfloat16__t_01_4.html',1,'']]], + ['limits_3c_20bool_20_3e_30',['Limits< bool >',['../struct_limits_3_01bool_01_4.html',1,'']]], + ['limits_3c_20float_20_3e_31',['Limits< float >',['../struct_limits_3_01float_01_4.html',1,'']]], + ['limits_3c_20half_20_3e_32',['Limits< half >',['../struct_limits_3_01half_01_4.html',1,'']]], + ['limits_3c_20int16_5ft_20_3e_33',['Limits< int16_t >',['../struct_limits_3_01int16__t_01_4.html',1,'']]], + ['limits_3c_20int32_5ft_20_3e_34',['Limits< int32_t >',['../struct_limits_3_01int32__t_01_4.html',1,'']]], + ['limits_3c_20int64_5ft_20_3e_35',['Limits< int64_t >',['../struct_limits_3_01int64__t_01_4.html',1,'']]], + ['limits_3c_20int8_5ft_20_3e_36',['Limits< int8_t >',['../struct_limits_3_01int8__t_01_4.html',1,'']]], + ['limits_3c_20uint16_5ft_20_3e_37',['Limits< uint16_t >',['../struct_limits_3_01uint16__t_01_4.html',1,'']]], + ['limits_3c_20uint32_5ft_20_3e_38',['Limits< uint32_t >',['../struct_limits_3_01uint32__t_01_4.html',1,'']]], + ['limits_3c_20uint64_5ft_20_3e_39',['Limits< uint64_t >',['../struct_limits_3_01uint64__t_01_4.html',1,'']]], + ['limits_3c_20uint8_5ft_20_3e_40',['Limits< uint8_t >',['../struct_limits_3_01uint8__t_01_4.html',1,'']]], + ['linalg_2eh_41',['linalg.h',['../linalg_8h.html',1,'']]], + ['linspace_42',['linspace',['../group__ops.html#ga968bcabed902311dcfbd903b0fb886ec',1,'mlx::core']]], + ['load_43',['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_44',['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#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_45',['load.h',['../load_8h.html',1,'']]], + ['load_5fgguf_46',['load_gguf',['../namespacemlx_1_1core.html#a2aa12b351ce559deb14cda0a5292c2ce',1,'mlx::core']]], + ['load_5fpadded_47',['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_48',['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_49',['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_50',['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_51',['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']]], + ['loader_2eh_52',['loader.h',['../conv_2loader_8h.html',1,'(Global Namespace)'],['../gemm_2loader_8h.html',1,'(Global Namespace)']]], + ['loader_5fa_5ft_53',['loader_a_t',['../structmlx_1_1steel_1_1_g_e_m_m_kernel.html#aa8a04ed74d2259f99b337d4662c64d83',1,'mlx::steel::GEMMKernel']]], + ['loader_5fb_5ft_54',['loader_b_t',['../structmlx_1_1steel_1_1_g_e_m_m_kernel.html#aa98f32278b5fd98c93ae5483c3596395',1,'mlx::steel::GEMMKernel']]], + ['loader_5fchannel_5fl_2eh_55',['loader_channel_l.h',['../loader__channel__l_8h.html',1,'']]], + ['loader_5fchannel_5fn_2eh_56',['loader_channel_n.h',['../loader__channel__n_8h.html',1,'']]], + ['loader_5fgeneral_2eh_57',['loader_general.h',['../loader__general_8h.html',1,'']]], + ['log_58',['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_59',['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_60',['Log10',['../struct_log10.html',1,'Log10'],['../structmlx_1_1core_1_1detail_1_1_log10.html',1,'mlx::core::detail::Log10']]], + ['log10_61',['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_62',['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_63',['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_64',['Log2',['../struct_log2.html',1,'Log2'],['../structmlx_1_1core_1_1detail_1_1_log2.html',1,'mlx::core::detail::Log2']]], + ['log2_65',['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_66',['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_67',['logaddexp',['../group__ops.html#gaf985df6609c6bd75a14a844655d89eaa',1,'mlx::core']]], + ['logical_5fand_68',['logical_and',['../group__ops.html#ga768977cda8d68cf23f464a6af9907876',1,'mlx::core']]], + ['logical_5fnot_69',['logical_not',['../group__ops.html#gabca78d34ce93f0de2814e62225bb2a53',1,'mlx::core']]], + ['logical_5for_70',['logical_or',['../group__ops.html#ga23768728e4dd070c917fbb0ed0d0c2ec',1,'mlx::core']]], + ['logicaland_71',['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_72',['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_73',['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_74',['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_75',['LoopAlignment',['../structmlx_1_1steel_1_1_loop_alignment.html',1,'mlx::steel']]], + ['lowest_76',['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 new file mode 100644 index 000000000..e0b001ee0 --- /dev/null +++ b/docs/build/html/search/all_d.js @@ -0,0 +1,109 @@ +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_5fsynchronize_5ftask_2',['make_synchronize_task',['../namespacemlx_1_1core_1_1metal.html#ab31abdda3052162d59f6590a89e38337',1,'mlx::core::metal']]], + ['make_5ftask_3',['make_task',['../namespacemlx_1_1core_1_1metal.html#a4552b7ccdfa7f3cc9895c09799d8048e',1,'mlx::core::metal']]], + ['malloc_4',['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_5',['malloc_or_wait',['../namespacemlx_1_1core_1_1allocator.html#a86ac0a11ff78f21e717f641716c34abc',1,'mlx::core::allocator']]], + ['mask_5fh_6',['mask_h',['../structmlx_1_1steel_1_1_conv2_d_input_block_loader_small_filter.html#a0b892c1a7edb9ed20c076d8945855c19',1,'mlx::steel::Conv2DInputBlockLoaderSmallFilter']]], + ['mask_5ft_7',['mask_t',['../structmlx_1_1steel_1_1_conv2_d_input_block_loader_small_filter.html#a270ab3da7c98a12525a59952742cc97d',1,'mlx::steel::Conv2DInputBlockLoaderSmallFilter']]], + ['mask_5fw_8',['mask_w',['../structmlx_1_1steel_1_1_conv2_d_input_block_loader_small_filter.html#a19ddba7259c3c2c02ed90f3f635557be',1,'mlx::steel::Conv2DInputBlockLoaderSmallFilter']]], + ['matmul_9',['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_10',['matmul',['../group__ops.html#ga753d59f5a9f5f2362865ee83b4dced2a',1,'mlx::core']]], + ['matmul_2eh_11',['matmul.h',['../matmul_8h.html',1,'']]], + ['matrix_12',['Matrix',['../class_m_p_s_1_1_matrix.html',1,'MPS']]], + ['matrixdescriptor_13',['MatrixDescriptor',['../class_m_p_s_1_1_matrix_descriptor.html',1,'MPS']]], + ['matrixdescriptor_14',['matrixDescriptor',['../class_m_p_s_1_1_matrix_descriptor.html#a7a99042b3c8afa037719ca316500a37b',1,'MPS::MatrixDescriptor::matrixDescriptor(NS::UInteger rows, NS::UInteger columns, NS::UInteger rowBytes, NS::UInteger dataType)'],['../class_m_p_s_1_1_matrix_descriptor.html#a67e5df7d48fc175efd5124b3b43b6366',1,'MPS::MatrixDescriptor::matrixDescriptor(NS::UInteger rows, NS::UInteger columns, NS::UInteger matrices, NS::UInteger rowBytes, NS::UInteger matrixBytes, NS::UInteger dataType)']]], + ['matrixmultiplication_15',['MatrixMultiplication',['../class_m_p_s_1_1_matrix_multiplication.html',1,'MPS']]], + ['matrixvectormultiplication_16',['MatrixVectorMultiplication',['../class_m_p_s_1_1_matrix_vector_multiplication.html',1,'MPS']]], + ['max_17',['Max',['../struct_max.html',1,'Max< U >'],['../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_18',['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'],['../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_19',['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_20',['max_digits10',['../structmetal_1_1__numeric__limits__impl_3_01bfloat16__t_01_4.html#a8d3905e6f158379a0c52682266e8d0e2',1,'metal::_numeric_limits_impl< bfloat16_t >']]], + ['max_5fexponent_21',['max_exponent',['../structmetal_1_1__numeric__limits__impl_3_01bfloat16__t_01_4.html#a61bb136f819fa392c50bdf3c38f3aad2',1,'metal::_numeric_limits_impl< bfloat16_t >']]], + ['max_5fexponent10_22',['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_23',['MAX_OUTPUT_SIZE',['../backend_2metal_2kernels_2fft_8h.html#a28d683cf067736d76f867f30c066317e',1,'fft.h']]], + ['max_5fradix_24',['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_25',['MAX_REDUCE_SPECIALIZED_DIMS',['../defines_8h.html#a15629f1b81a2b6f1cca26d07a2734623',1,'defines.h']]], + ['max_5fthreads_26',['max_threads',['../namespacepocketfft_1_1detail_1_1threading.html#a2d5c0729f0b66cf061918baea4337d70',1,'pocketfft::detail::threading']]], + ['maximum_27',['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_28',['maximum',['../group__ops.html#ga7ade2ea305e2e4219c3609443fb5db8d',1,'mlx::core']]], + ['mb_5fblock_5fmerge_29',['mb_block_merge',['../kernels_2sort_8h.html#ab381cd57f344bc7304ab580bfdc78807',1,'sort.h']]], + ['mb_5fblock_5fpartition_30',['mb_block_partition',['../kernels_2sort_8h.html#a50ae11454e4dfa374a9bd256cdbbf605',1,'sort.h']]], + ['mb_5fblock_5fsort_31',['mb_block_sort',['../kernels_2sort_8h.html#a2a0533103661dd378d6bfe949930650a',1,'sort.h']]], + ['mean_32',['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_33',['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_34',['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_35',['merge_step',['../struct_block_merge_sort.html#ab65f190edf1851b37c39ad49ce99a43c',1,'BlockMergeSort']]], + ['meshgrid_36',['meshgrid',['../group__ops.html#ga577c911618575314de63d1060656a26e',1,'mlx::core']]], + ['metal_37',['metal',['../namespacemetal.html',1,'']]], + ['metal_2eh_38',['metal.h',['../metal_8h.html',1,'']]], + ['metal_3a_3afast_39',['fast',['../namespacemetal_1_1fast.html',1,'metal']]], + ['metal_3a_3aprecise_40',['precise',['../namespacemetal_1_1precise.html',1,'metal']]], + ['metal_5fimpl_2eh_41',['metal_impl.h',['../metal__impl_8h.html',1,'']]], + ['metalallocator_42',['MetalAllocator',['../classmlx_1_1core_1_1metal_1_1_metal_allocator.html',1,'mlx::core::metal']]], + ['min_43',['Min',['../struct_min.html',1,'Min< U >'],['../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_44',['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'],['../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_45',['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_46',['min_exponent',['../structmetal_1_1__numeric__limits__impl_3_01bfloat16__t_01_4.html#a13829f8c7a7c0efdc8946eff5d3c9470',1,'metal::_numeric_limits_impl< bfloat16_t >']]], + ['min_5fexponent10_47',['min_exponent10',['../structmetal_1_1__numeric__limits__impl_3_01bfloat16__t_01_4.html#aeaed172780720e06b8731cef3177e277',1,'metal::_numeric_limits_impl< bfloat16_t >']]], + ['minimum_48',['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_49',['minimum',['../group__ops.html#ga49ba00c090f81f331c91b0c97040bce0',1,'mlx::core']]], + ['mlx_50',['mlx',['../namespacemlx.html',1,'']]], + ['mlx_2eh_51',['mlx.h',['../mlx_8h.html',1,'']]], + ['mlx_3a_3acore_52',['core',['../namespacemlx_1_1core.html',1,'mlx']]], + ['mlx_3a_3acore_3a_3aallocator_53',['allocator',['../namespacemlx_1_1core_1_1allocator.html',1,'mlx::core']]], + ['mlx_3a_3acore_3a_3adetail_54',['detail',['../namespacemlx_1_1core_1_1detail.html',1,'mlx::core']]], + ['mlx_3a_3acore_3a_3adistributed_55',['distributed',['../namespacemlx_1_1core_1_1distributed.html',1,'mlx::core']]], + ['mlx_3a_3acore_3a_3adistributed_3a_3adetail_56',['detail',['../namespacemlx_1_1core_1_1distributed_1_1detail.html',1,'mlx::core::distributed']]], + ['mlx_3a_3acore_3a_3afast_57',['fast',['../namespacemlx_1_1core_1_1fast.html',1,'mlx::core']]], + ['mlx_3a_3acore_3a_3afft_58',['fft',['../namespacemlx_1_1core_1_1fft.html',1,'mlx::core']]], + ['mlx_3a_3acore_3a_3aio_59',['io',['../namespacemlx_1_1core_1_1io.html',1,'mlx::core']]], + ['mlx_3a_3acore_3a_3alinalg_60',['linalg',['../namespacemlx_1_1core_1_1linalg.html',1,'mlx::core']]], + ['mlx_3a_3acore_3a_3ametal_61',['metal',['../namespacemlx_1_1core_1_1metal.html',1,'mlx::core']]], + ['mlx_3a_3acore_3a_3arandom_62',['random',['../namespacemlx_1_1core_1_1random.html',1,'mlx::core']]], + ['mlx_3a_3acore_3a_3ascheduler_63',['scheduler',['../namespacemlx_1_1core_1_1scheduler.html',1,'mlx::core']]], + ['mlx_3a_3asteel_64',['steel',['../namespacemlx_1_1steel.html',1,'mlx']]], + ['mlx_5fatomic_65',['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_66',['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_67',['mlx_atomic_compare_exchange_weak_explicit',['../atomic_8h.html#af63dac2f2df485a85b490e58302491b3',1,'mlx_atomic_compare_exchange_weak_explicit(device mlx_atomic< T > *object, thread T *expected, T val, uint offset): atomic.h'],['../atomic_8h.html#a0c328b82e1b4c8cd0e9c864ecac30136',1,'mlx_atomic_compare_exchange_weak_explicit(device mlx_atomic< T > *object, thread uint *expected, uint val, uint offset): atomic.h']]], + ['mlx_5fatomic_5ffetch_5fadd_5fexplicit_68',['mlx_atomic_fetch_add_explicit',['../atomic_8h.html#a37cbd062017e3d056782dcfa7f5f6add',1,'atomic.h']]], + ['mlx_5fatomic_5ffetch_5fand_5fexplicit_69',['mlx_atomic_fetch_and_explicit',['../atomic_8h.html#a65bd5cae890db9b927d853a52bdc06e8',1,'atomic.h']]], + ['mlx_5fatomic_5ffetch_5fmax_5fexplicit_70',['mlx_atomic_fetch_max_explicit',['../atomic_8h.html#aafeb87661c0b216d994677807a78f6d7',1,'atomic.h']]], + ['mlx_5fatomic_5ffetch_5fmax_5fexplicit_3c_20float_20_3e_71',['mlx_atomic_fetch_max_explicit< float >',['../atomic_8h.html#a55a4a8fbb8951a18375bdb635cf81af0',1,'atomic.h']]], + ['mlx_5fatomic_5ffetch_5fmin_5fexplicit_72',['mlx_atomic_fetch_min_explicit',['../atomic_8h.html#ab962bd4d6ee8040e930e03f54c5ac16a',1,'atomic.h']]], + ['mlx_5fatomic_5ffetch_5fmin_5fexplicit_3c_20float_20_3e_73',['mlx_atomic_fetch_min_explicit< float >',['../atomic_8h.html#aa81c17d78ba4c9eb989f288000816c73',1,'atomic.h']]], + ['mlx_5fatomic_5ffetch_5fmul_5fexplicit_74',['mlx_atomic_fetch_mul_explicit',['../atomic_8h.html#adea4b9574507634f411de665f4db7c3c',1,'atomic.h']]], + ['mlx_5fatomic_5ffetch_5for_5fexplicit_75',['mlx_atomic_fetch_or_explicit',['../atomic_8h.html#a995c2d054cc4faa7b86e9a8719ff3e6f',1,'atomic.h']]], + ['mlx_5fatomic_5fload_5fexplicit_76',['mlx_atomic_load_explicit',['../atomic_8h.html#a802615a5c326e8dd4ab13fefa0231d4e',1,'atomic.h']]], + ['mlx_5fatomic_5fstore_5fexplicit_77',['mlx_atomic_store_explicit',['../atomic_8h.html#a8108e66ef9a5fa8c62e6a7c6504c43aa',1,'atomic.h']]], + ['mlx_5flapack_5ffunc_78',['MLX_LAPACK_FUNC',['../lapack__helper_8h.html#ae22db9704827bf013a0a61f21a47464b',1,'lapack_helper.h']]], + ['mlx_5fmtl_5fconst_79',['MLX_MTL_CONST',['../kernels_2sort_8h.html#a0386011c52d03e60885a31e6fbd903dd',1,'sort.h']]], + ['mlx_5fmtl_5floop_5funroll_80',['MLX_MTL_LOOP_UNROLL',['../kernels_2sort_8h.html#ad34b622323cebef136669fedd7229515',1,'sort.h']]], + ['mlx_5fmtl_5fpragma_5funroll_81',['MLX_MTL_PRAGMA_UNROLL',['../backend_2metal_2kernels_2utils_8h.html#a069b682d7d21827461544817d722bfd3',1,'utils.h']]], + ['mlxconvparams_82',['MLXConvParams',['../struct_m_l_x_conv_params.html',1,'']]], + ['mlxconvparams_3c_202_20_3e_83',['MLXConvParams< 2 >',['../struct_m_l_x_conv_params.html',1,'']]], + ['mlxfastattentionparams_84',['MLXFastAttentionParams',['../struct_m_l_x_fast_attention_params.html',1,'']]], + ['mlxscaleddotproductattentionparams_85',['MLXScaledDotProductAttentionParams',['../struct_m_l_x_scaled_dot_product_attention_params.html',1,'']]], + ['mma_86',['mma',['../structmlx_1_1steel_1_1_block_m_m_a.html#a6a2c2a6d5e767d52c41b42a9d36086b0',1,'mlx::steel::BlockMMA']]], + ['mma_2eh_87',['mma.h',['../mma_8h.html',1,'']]], + ['mma_5ft_88',['mma_t',['../structmlx_1_1steel_1_1_g_e_m_m_kernel.html#add8c6a31011a4895667c2a94a5af3782',1,'mlx::steel::GEMMKernel']]], + ['move_5fshared_5fbuffer_89',['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_90',['moveaxis',['../group__ops.html#ga24067d10a842db2c9d509ea48135a2c3',1,'mlx::core']]], + ['mpinplace_91',['MPINPLACE',['../namespacepocketfft_1_1detail.html#af5eedf3cdfc83c0a30807092c39a9ce2',1,'pocketfft::detail']]], + ['mps_92',['MPS',['../namespace_m_p_s.html',1,'']]], + ['mtl_93',['MTL',['../namespace_m_t_l.html',1,'']]], + ['mtl_3a_3aprivate_94',['Private',['../namespace_m_t_l_1_1_private.html',1,'MTL']]], + ['mtl_3a_3aprivate_3a_3aclass_95',['Class',['../namespace_m_t_l_1_1_private_1_1_class.html',1,'MTL::Private']]], + ['mtl_3a_3aprivate_3a_3aselector_96',['Selector',['../namespace_m_t_l_1_1_private_1_1_selector.html',1,'MTL::Private']]], + ['mtl_5fconst_97',['MTL_CONST',['../defines_8h.html#a767ed9f2604de22b259cee02c4ce1d22',1,'defines.h']]], + ['mtl_5fdevice_98',['mtl_device',['../classmlx_1_1core_1_1metal_1_1_device.html#a31dba377f2be44a746db10d1b9367653',1,'mlx::core::metal::Device']]], + ['mtlfclist_99',['MTLFCList',['../namespacemlx_1_1core_1_1metal.html#a616e09a1ef321d527770721cef264c54',1,'mlx::core::metal']]], + ['mtx_100',['mtx',['../structmlx_1_1core_1_1scheduler_1_1_stream_thread.html#a70410c9e612f871663929f1e8441a976',1,'mlx::core::scheduler::StreamThread']]], + ['multi_5fiter_101',['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()']]], + ['multiblock_5fsort_5fkernels_102',['multiblock_sort_kernels',['../jit_2sort_8h.html#ab1914bca9c579e1ef202ae03a729ee1b',1,'sort.h']]], + ['multiply_103',['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_104',['multiply',['../group__ops.html#gaf57392e641640b5d06e4c99518391c38',1,'mlx::core']]], + ['multivariate_5fnormal_105',['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 new file mode 100644 index 000000000..1eefb753c --- /dev/null +++ b/docs/build/html/search/all_e.js @@ -0,0 +1,39 @@ +var searchData= +[ + ['n_0',['n',['../struct_read_writer.html#a655346c9ebfc33a69da3f1c1d4238dfb',1,'ReadWriter']]], + ['n_1',['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_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_5frows_7',['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_8',['names',['../structmlx_1_1core_1_1_node_namer.html#a57823f9a2cdc60b2f06f857b36019277',1,'mlx::core::NodeNamer']]], + ['nanequal_9',['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_10',['nbytes',['../classmlx_1_1core_1_1array.html#a387b67cd3ef5cfc1e749c371766c4a05',1,'mlx::core::array']]], + ['ndarr_11',['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_12',['ndim',['../struct_indices.html#a7dec359e91d0eb2b64e5461b54308313',1,'Indices::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_13',['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_14',['negative',['../group__ops.html#ga95d9a9425533b5ed1707eb00184dffc6',1,'mlx::core']]], + ['new_5fqueue_15',['new_queue',['../classmlx_1_1core_1_1metal_1_1_device.html#a8135ae2a8c1e6f3861e84d4e60c28b67',1,'mlx::core::metal::Device']]], + ['new_5fscoped_5fmemory_5fpool_16',['new_scoped_memory_pool',['../namespacemlx_1_1core_1_1metal.html#a6c52659362f6da31629216b65c297407',1,'mlx::core::metal']]], + ['new_5fstream_17',['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_18',['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()'],['../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']]], + ['nextafter_19',['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_20',['no_fuse',['../namespacemlx_1_1core.html#adb15ff2b1ca5207fd4f6e631e2c3bcb4ada8df7fd43da6073fec4fe5666b03dbb',1,'mlx::core']]], + ['no_5fsimplify_21',['no_simplify',['../namespacemlx_1_1core.html#adb15ff2b1ca5207fd4f6e631e2c3bcb4a8e5611dfddbae6e68624c59aa3e4e3e2',1,'mlx::core']]], + ['nodenamer_22',['NodeNamer',['../structmlx_1_1core_1_1_node_namer.html',1,'mlx::core']]], + ['nomask_5ft_23',['nomask_t',['../steel__gemm__masked_8h.html#a1480c8cdff1cae1462a5a71632969bca',1,'steel_gemm_masked.h']]], + ['none_24',['None',['../struct_none.html',1,'None'],['../classmlx_1_1core_1_1_scatter.html#a614d19af11dc30644b2b4941033b613ca87a6a1927de175b71d7d0b5c11b8665c',1,'mlx::core::Scatter::None']]], + ['norm_25',['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_26',['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_27',['normalize_axis',['../namespacemlx_1_1core.html#a0181b5d72bf3d34448dabc70f7ff858d',1,'mlx::core']]], + ['not_5fequal_28',['not_equal',['../group__ops.html#ga28f22c5d2c399eee53be7b3facc11103',1,'mlx::core']]], + ['notequal_29',['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_30',['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_31',['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_32',['num_threads',['../namespacepocketfft_1_1detail_1_1threading.html#af5432c2e25aed679a73fe7b29534c833',1,'pocketfft::detail::threading']]], + ['number_33',['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_34',['number_of_elements',['../group__ops.html#ga6d5f5f72362488b956cdc4615ef6c636',1,'mlx::core']]], + ['numberofelements_35',['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 new file mode 100644 index 000000000..867af66b2 --- /dev/null +++ b/docs/build/html/search/all_f.js @@ -0,0 +1,58 @@ +var searchData= +[ + ['o_0',['O',['../struct_m_l_x_conv_params.html#ad55ff586d30072d8154865f9dfe92d97',1,'MLXConvParams']]], + ['offset_5fneg_5fidx_1',['offset_neg_idx',['../kernels_2indexing_8h.html#ab41167dc537c06fbdb4df100972393df',1,'indexing.h']]], + ['ofs_2',['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_3',['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_4',['ones_like',['../group__ops.html#ga94f8d3b1906fee99da9cbe39f7be7d42',1,'mlx::core']]], + ['oofs_5',['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_6',['Op',['../classmlx_1_1core_1_1_bitwise_binary.html#a6f8b5d455d0c1770428a6bef1608f23d',1,'mlx::core::BitwiseBinary']]], + ['op_7',['op',['../common_2binary_8h.html#a70228731d29946574b238d21fb4b360c',1,'op: binary.h'],['../common_2reduce_8h.html#a70228731d29946574b238d21fb4b360c',1,'op: reduce.h']]], + ['operations_8',['Core array operations',['../group__ops.html',1,'']]], + ['operator_20bool_9',['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']]], + ['operator_20dtype_10',['operator Dtype',['../structmlx_1_1core_1_1_type_to_dtype.html#aefdd0fd6a5bbf0197a3996ccd4adea13',1,'mlx::core::TypeToDtype']]], + ['operator_20float_11',['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_12',['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_13',['operator Val',['../structmlx_1_1core_1_1_dtype.html#a3b3bc059be5836476da3cb88a4f5e9fd',1,'mlx::core::Dtype']]], + ['operator_21_3d_14',['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_15',['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_16',['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_17',['operator&&',['../group__ops.html#gaee1d774bb0843601d7a0a4257d616ae3',1,'mlx::core']]], + ['operator_26_3d_18',['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_19',['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_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()()'],['../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_and.html#a52fcfa8e7e83e7be6313eb57c998bf47',1,'And::operator()()'],['../struct_or.html#a3798a4c73565aee2430459146305e44f',1,'Or::operator()()'],['../struct_sum.html#af9bfdc5603dd2b888d9e1416b70aefcc',1,'Sum::operator()()'],['../struct_prod.html#a4388efe5b733627175602c3f2d727c04',1,'Prod::operator()()'],['../struct_min.html#a3078861291a63404eee67ed057bc489a',1,'Min::operator()()'],['../struct_max.html#a5bcf100d50dc6c06833fd6e3e0345007',1,'Max::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_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_20',['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_21',['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_22',['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_23',['operator++',['../structmlx_1_1core_1_1array_1_1_array_iterator.html#a3efe69356a84d0d4438f033992fcbd9d',1,'mlx::core::array::ArrayIterator']]], + ['operator_2b_3d_24',['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_25',['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_26',['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_27',['operator->',['../structmlx_1_1core_1_1metal_1_1_command_encoder.html#aac45ab0630ea32cf7d15c7ba3e229966',1,'mlx::core::metal::CommandEncoder']]], + ['operator_2f_28',['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_29',['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_30',['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_31',['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_32',['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_33',['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_34',['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_35',['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_36',['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_37',['operator>>',['../group__ops.html#ga498b61f7e8f056ae00297fa0dc17303a',1,'mlx::core']]], + ['operator_5b_5d_38',['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_39',['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_40',['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_41',['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_42',['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_43',['operator||',['../group__ops.html#ga27af56a98270d4d76d139f0f9171b83a',1,'mlx::core']]], + ['ops_2eh_44',['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_45',['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_46',['ortho',['../structpocketfft_1_1detail_1_1_exec_dcst.html#aea17551a49acaca5e7808dc181d38b7f',1,'pocketfft::detail::ExecDcst']]], + ['os_47',['oS',['../struct_m_l_x_conv_params.html#a19ccb9fecfccdc18b6a7f0cc43adbc6e',1,'MLXConvParams']]], + ['out_48',['out',['../struct_read_writer.html#abea3b913c952c505d0ca4e529c7316ef',1,'ReadWriter']]], + ['out_5fof_5fbounds_49',['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_50',['out_strides',['../struct_m_l_x_conv_params.html#a0c8b2cfc26859a2af9d39a2cfcc3aea6',1,'MLXConvParams']]], + ['outer_51',['outer',['../group__ops.html#ga866af24e10db2797e1c5a5986dbf6c0d',1,'mlx::core']]], + ['output_5fshapes_52',['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_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_53',['outputs',['../classmlx_1_1core_1_1array.html#a2c186fd527f984f0589d4183b4976289',1,'mlx::core::array']]], + ['overwrite_5fdescriptor_54',['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 new file mode 100644 index 000000000..9baf1e35c --- /dev/null +++ b/docs/build/html/search/classes_0.js @@ -0,0 +1,7 @@ +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 new file mode 100644 index 000000000..8ef031a70 --- /dev/null +++ b/docs/build/html/search/classes_1.js @@ -0,0 +1,34 @@ +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']]], + ['aligned_5fallocator_6',['aligned_allocator',['../structpocketfft_1_1detail_1_1threading_1_1aligned__allocator.html',1,'pocketfft::detail::threading']]], + ['allgather_7',['AllGather',['../classmlx_1_1core_1_1distributed_1_1_all_gather.html',1,'mlx::core::distributed']]], + ['allocator_8',['Allocator',['../classmlx_1_1core_1_1allocator_1_1_allocator.html',1,'mlx::core::allocator']]], + ['allreduce_9',['AllReduce',['../classmlx_1_1core_1_1distributed_1_1_all_reduce.html',1,'mlx::core::distributed']]], + ['and_10',['And',['../struct_and.html',1,'']]], + ['arange_11',['Arange',['../classmlx_1_1core_1_1_arange.html',1,'mlx::core']]], + ['arccos_12',['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_13',['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_14',['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_15',['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_16',['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_17',['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_18',['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_19',['ArgPartition',['../classmlx_1_1core_1_1_arg_partition.html',1,'mlx::core']]], + ['argreduce_20',['ArgReduce',['../classmlx_1_1core_1_1_arg_reduce.html',1,'mlx::core']]], + ['argsort_21',['ArgSort',['../classmlx_1_1core_1_1_arg_sort.html',1,'mlx::core']]], + ['arr_22',['arr',['../classpocketfft_1_1detail_1_1arr.html',1,'pocketfft::detail']]], + ['arr_3c_20pocketfft_3a_3adetail_3a_3acmplx_3c_20t0_20_3e_20_3e_23',['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_24',['arr< pocketfft::detail::cmplx< Thigh > >',['../classpocketfft_1_1detail_1_1arr.html',1,'pocketfft::detail']]], + ['arr_3c_20t0_20_3e_25',['arr< T0 >',['../classpocketfft_1_1detail_1_1arr.html',1,'pocketfft::detail']]], + ['arr_5finfo_26',['arr_info',['../classpocketfft_1_1detail_1_1arr__info.html',1,'pocketfft::detail']]], + ['array_27',['array',['../classmlx_1_1core_1_1array.html',1,'mlx::core']]], + ['arrayiterator_28',['ArrayIterator',['../structmlx_1_1core_1_1array_1_1_array_iterator.html',1,'mlx::core::array']]], + ['asstrided_29',['AsStrided',['../classmlx_1_1core_1_1_as_strided.html',1,'mlx::core']]], + ['astype_30',['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 new file mode 100644 index 000000000..3a3e85f6d --- /dev/null +++ b/docs/build/html/search/classes_10.js @@ -0,0 +1,19 @@ +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,'']]], + ['reduce_4',['Reduce',['../classmlx_1_1core_1_1_reduce.html',1,'mlx::core']]], + ['reductionplan_5',['ReductionPlan',['../structmlx_1_1core_1_1_reduction_plan.html',1,'mlx::core']]], + ['remainder_6',['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_7',['Reshape',['../classmlx_1_1core_1_1_reshape.html',1,'mlx::core']]], + ['rev_5fiter_8',['rev_iter',['../classpocketfft_1_1detail_1_1rev__iter.html',1,'pocketfft::detail']]], + ['rfftp_9',['rfftp',['../classpocketfft_1_1detail_1_1rfftp.html',1,'pocketfft::detail']]], + ['rightshift_10',['RightShift',['../structmlx_1_1core_1_1detail_1_1_right_shift.html',1,'mlx::core::detail::RightShift'],['../struct_right_shift.html',1,'RightShift']]], + ['rmsnorm_11',['RMSNorm',['../classmlx_1_1core_1_1fast_1_1_r_m_s_norm.html',1,'mlx::core::fast']]], + ['rmsnormvjp_12',['RMSNormVJP',['../classmlx_1_1core_1_1fast_1_1_r_m_s_norm_v_j_p.html',1,'mlx::core::fast']]], + ['rope_13',['RoPE',['../classmlx_1_1core_1_1fast_1_1_ro_p_e.html',1,'mlx::core::fast']]], + ['round_14',['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_15',['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_11.js b/docs/build/html/search/classes_11.js new file mode 100644 index 000000000..0456ecb5b --- /dev/null +++ b/docs/build/html/search/classes_11.js @@ -0,0 +1,29 @@ +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']]], + ['sigmoid_6',['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_7',['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_8',['simple_iter',['../classpocketfft_1_1detail_1_1simple__iter.html',1,'pocketfft::detail']]], + ['sin_9',['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_10',['sincos_2pibyn',['../classpocketfft_1_1detail_1_1sincos__2pibyn.html',1,'pocketfft::detail']]], + ['sinh_11',['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_12',['Slice',['../classmlx_1_1core_1_1_slice.html',1,'mlx::core']]], + ['sliceupdate_13',['SliceUpdate',['../classmlx_1_1core_1_1_slice_update.html',1,'mlx::core']]], + ['softmax_14',['Softmax',['../classmlx_1_1core_1_1_softmax.html',1,'mlx::core']]], + ['sort_15',['Sort',['../classmlx_1_1core_1_1_sort.html',1,'mlx::core']]], + ['split_16',['Split',['../classmlx_1_1core_1_1_split.html',1,'mlx::core']]], + ['sqrt_17',['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_18',['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_19',['StopGradient',['../classmlx_1_1core_1_1_stop_gradient.html',1,'mlx::core']]], + ['stream_20',['Stream',['../structmlx_1_1core_1_1_stream.html',1,'mlx::core']]], + ['streamcontext_21',['StreamContext',['../structmlx_1_1core_1_1_stream_context.html',1,'mlx::core']]], + ['streamthread_22',['StreamThread',['../structmlx_1_1core_1_1scheduler_1_1_stream_thread.html',1,'mlx::core::scheduler']]], + ['subtract_23',['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_24',['Sum',['../struct_sum.html',1,'']]], + ['svd_25',['SVD',['../classmlx_1_1core_1_1_s_v_d.html',1,'mlx::core']]] +]; diff --git a/docs/build/html/search/classes_12.js b/docs/build/html/search/classes_12.js new file mode 100644 index 000000000..d41e8ffbf --- /dev/null +++ b/docs/build/html/search/classes_12.js @@ -0,0 +1,16 @@ +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']]], + ['threadsort_7',['ThreadSort',['../struct_thread_sort.html',1,'']]], + ['transformadd_8',['TransformAdd',['../structmlx_1_1steel_1_1_transform_add.html',1,'mlx::steel']]], + ['transformaxpby_9',['TransformAxpby',['../structmlx_1_1steel_1_1_transform_axpby.html',1,'mlx::steel']]], + ['transformnone_10',['TransformNone',['../structmlx_1_1steel_1_1_transform_none.html',1,'mlx::steel']]], + ['transpose_11',['Transpose',['../classmlx_1_1core_1_1_transpose.html',1,'mlx::core']]], + ['typetodtype_12',['TypeToDtype',['../structmlx_1_1core_1_1_type_to_dtype.html',1,'mlx::core']]] +]; diff --git a/docs/build/html/search/classes_13.js b/docs/build/html/search/classes_13.js new file mode 100644 index 000000000..0be6b5a22 --- /dev/null +++ b/docs/build/html/search/classes_13.js @@ -0,0 +1,6 @@ +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_14.js b/docs/build/html/search/classes_14.js new file mode 100644 index 000000000..f7e2cd36b --- /dev/null +++ b/docs/build/html/search/classes_14.js @@ -0,0 +1,8 @@ +var searchData= +[ + ['vector_0',['Vector',['../class_m_p_s_1_1_vector.html',1,'MPS']]], + ['vectordescriptor_1',['VectorDescriptor',['../class_m_p_s_1_1_vector_descriptor.html',1,'MPS']]], + ['view_2',['View',['../classmlx_1_1core_1_1_view.html',1,'mlx::core']]], + ['vlen_3',['VLEN',['../structpocketfft_1_1detail_1_1_v_l_e_n.html',1,'pocketfft::detail']]], + ['vtype_4',['VTYPE',['../structpocketfft_1_1detail_1_1_v_t_y_p_e.html',1,'pocketfft::detail']]] +]; diff --git a/docs/build/html/search/classes_15.js b/docs/build/html/search/classes_15.js new file mode 100644 index 000000000..07fc35c5c --- /dev/null +++ b/docs/build/html/search/classes_15.js @@ -0,0 +1,4 @@ +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 new file mode 100644 index 000000000..f828b46c0 --- /dev/null +++ b/docs/build/html/search/classes_2.js @@ -0,0 +1,16 @@ +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 new file mode 100644 index 000000000..f28acb4fb --- /dev/null +++ b/docs/build/html/search/classes_3.js @@ -0,0 +1,45 @@ +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']]], + ['customvjp_41',['CustomVJP',['../classmlx_1_1core_1_1_custom_v_j_p.html',1,'mlx::core']]] +]; diff --git a/docs/build/html/search/classes_4.js b/docs/build/html/search/classes_4.js new file mode 100644 index 000000000..a37e53b29 --- /dev/null +++ b/docs/build/html/search/classes_4.js @@ -0,0 +1,10 @@ +var searchData= +[ + ['data_0',['Data',['../structmlx_1_1core_1_1array_1_1_data.html',1,'mlx::core::array']]], + ['depends_1',['Depends',['../classmlx_1_1core_1_1_depends.html',1,'mlx::core']]], + ['device_2',['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_3',['DistPrimitive',['../classmlx_1_1core_1_1distributed_1_1_dist_primitive.html',1,'mlx::core::distributed']]], + ['divide_4',['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_5',['DivMod',['../struct_div_mod.html',1,'DivMod'],['../classmlx_1_1core_1_1_div_mod.html',1,'mlx::core::DivMod']]], + ['dtype_6',['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 new file mode 100644 index 000000000..fbd639a18 --- /dev/null +++ b/docs/build/html/search/classes_5.js @@ -0,0 +1,13 @@ +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 new file mode 100644 index 000000000..053b9ecb5 --- /dev/null +++ b/docs/build/html/search/classes_6.js @@ -0,0 +1,11 @@ +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']]], + ['filereader_2',['FileReader',['../classmlx_1_1core_1_1io_1_1_file_reader.html',1,'mlx::core::io']]], + ['filewriter_3',['FileWriter',['../classmlx_1_1core_1_1io_1_1_file_writer.html',1,'mlx::core::io']]], + ['flags_4',['Flags',['../structmlx_1_1core_1_1array_1_1_flags.html',1,'mlx::core::array']]], + ['floor_5',['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_6',['FloorDivide',['../struct_floor_divide.html',1,'']]], + ['full_7',['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 new file mode 100644 index 000000000..f28255f11 --- /dev/null +++ b/docs/build/html/search/classes_7.js @@ -0,0 +1,13 @@ +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']]], + ['greater_7',['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_8',['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_9',['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 new file mode 100644 index 000000000..a49c3ac44 --- /dev/null +++ b/docs/build/html/search/classes_8.js @@ -0,0 +1,8 @@ +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_9.js b/docs/build/html/search/classes_9.js new file mode 100644 index 000000000..578cecfea --- /dev/null +++ b/docs/build/html/search/classes_9.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['kernel_0',['Kernel',['../class_m_p_s_1_1_kernel.html',1,'MPS']]], + ['kernelmergesort_1',['KernelMergeSort',['../struct_kernel_merge_sort.html',1,'']]], + ['kernelmultiblockmergesort_2',['KernelMultiBlockMergeSort',['../struct_kernel_multi_block_merge_sort.html',1,'']]], + ['keysequence_3',['KeySequence',['../classmlx_1_1core_1_1random_1_1_key_sequence.html',1,'mlx::core::random']]] +]; diff --git a/docs/build/html/search/classes_a.js b/docs/build/html/search/classes_a.js new file mode 100644 index 000000000..1f99f969e --- /dev/null +++ b/docs/build/html/search/classes_a.js @@ -0,0 +1,33 @@ +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_20float_20_3e_10',['Limits< float >',['../struct_limits_3_01float_01_4.html',1,'']]], + ['limits_3c_20half_20_3e_11',['Limits< half >',['../struct_limits_3_01half_01_4.html',1,'']]], + ['limits_3c_20int16_5ft_20_3e_12',['Limits< int16_t >',['../struct_limits_3_01int16__t_01_4.html',1,'']]], + ['limits_3c_20int32_5ft_20_3e_13',['Limits< int32_t >',['../struct_limits_3_01int32__t_01_4.html',1,'']]], + ['limits_3c_20int64_5ft_20_3e_14',['Limits< int64_t >',['../struct_limits_3_01int64__t_01_4.html',1,'']]], + ['limits_3c_20int8_5ft_20_3e_15',['Limits< int8_t >',['../struct_limits_3_01int8__t_01_4.html',1,'']]], + ['limits_3c_20uint16_5ft_20_3e_16',['Limits< uint16_t >',['../struct_limits_3_01uint16__t_01_4.html',1,'']]], + ['limits_3c_20uint32_5ft_20_3e_17',['Limits< uint32_t >',['../struct_limits_3_01uint32__t_01_4.html',1,'']]], + ['limits_3c_20uint64_5ft_20_3e_18',['Limits< uint64_t >',['../struct_limits_3_01uint64__t_01_4.html',1,'']]], + ['limits_3c_20uint8_5ft_20_3e_19',['Limits< uint8_t >',['../struct_limits_3_01uint8__t_01_4.html',1,'']]], + ['load_20',['Load',['../classmlx_1_1core_1_1_load.html',1,'mlx::core']]], + ['log_21',['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_22',['Log10',['../struct_log10.html',1,'Log10'],['../structmlx_1_1core_1_1detail_1_1_log10.html',1,'mlx::core::detail::Log10']]], + ['log1p_23',['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_24',['Log2',['../struct_log2.html',1,'Log2'],['../structmlx_1_1core_1_1detail_1_1_log2.html',1,'mlx::core::detail::Log2']]], + ['logaddexp_25',['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_26',['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_27',['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_28',['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_29',['LoopAlignment',['../structmlx_1_1steel_1_1_loop_alignment.html',1,'mlx::steel']]] +]; diff --git a/docs/build/html/search/classes_b.js b/docs/build/html/search/classes_b.js new file mode 100644 index 000000000..9c5ed3a2e --- /dev/null +++ b/docs/build/html/search/classes_b.js @@ -0,0 +1,21 @@ +var searchData= +[ + ['matmul_0',['Matmul',['../classmlx_1_1core_1_1_matmul.html',1,'mlx::core']]], + ['matrix_1',['Matrix',['../class_m_p_s_1_1_matrix.html',1,'MPS']]], + ['matrixdescriptor_2',['MatrixDescriptor',['../class_m_p_s_1_1_matrix_descriptor.html',1,'MPS']]], + ['matrixmultiplication_3',['MatrixMultiplication',['../class_m_p_s_1_1_matrix_multiplication.html',1,'MPS']]], + ['matrixvectormultiplication_4',['MatrixVectorMultiplication',['../class_m_p_s_1_1_matrix_vector_multiplication.html',1,'MPS']]], + ['max_5',['Max',['../struct_max.html',1,'']]], + ['maximum_6',['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_7',['MetalAllocator',['../classmlx_1_1core_1_1metal_1_1_metal_allocator.html',1,'mlx::core::metal']]], + ['min_8',['Min',['../struct_min.html',1,'']]], + ['minimum_9',['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_10',['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_11',['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_12',['MLXConvParams',['../struct_m_l_x_conv_params.html',1,'']]], + ['mlxconvparams_3c_202_20_3e_13',['MLXConvParams< 2 >',['../struct_m_l_x_conv_params.html',1,'']]], + ['mlxfastattentionparams_14',['MLXFastAttentionParams',['../struct_m_l_x_fast_attention_params.html',1,'']]], + ['mlxscaleddotproductattentionparams_15',['MLXScaledDotProductAttentionParams',['../struct_m_l_x_scaled_dot_product_attention_params.html',1,'']]], + ['multi_5fiter_16',['multi_iter',['../classpocketfft_1_1detail_1_1multi__iter.html',1,'pocketfft::detail']]], + ['multiply_17',['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_c.js b/docs/build/html/search/classes_c.js new file mode 100644 index 000000000..01ecdbf24 --- /dev/null +++ b/docs/build/html/search/classes_c.js @@ -0,0 +1,10 @@ +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_d.js b/docs/build/html/search/classes_d.js new file mode 100644 index 000000000..7d7191ab7 --- /dev/null +++ b/docs/build/html/search/classes_d.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['or_0',['Or',['../struct_or.html',1,'']]] +]; diff --git a/docs/build/html/search/classes_e.js b/docs/build/html/search/classes_e.js new file mode 100644 index 000000000..4a67c144f --- /dev/null +++ b/docs/build/html/search/classes_e.js @@ -0,0 +1,11 @@ +var searchData= +[ + ['pad_0',['Pad',['../classmlx_1_1core_1_1_pad.html',1,'mlx::core']]], + ['partition_1',['Partition',['../classmlx_1_1core_1_1_partition.html',1,'mlx::core']]], + ['pocketfft_5fc_2',['pocketfft_c',['../classpocketfft_1_1detail_1_1pocketfft__c.html',1,'pocketfft::detail']]], + ['pocketfft_5fr_3',['pocketfft_r',['../classpocketfft_1_1detail_1_1pocketfft__r.html',1,'pocketfft::detail']]], + ['power_4',['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_5',['Primitive',['../classmlx_1_1core_1_1_primitive.html',1,'mlx::core']]], + ['printformatter_6',['PrintFormatter',['../structmlx_1_1core_1_1_print_formatter.html',1,'mlx::core']]], + ['prod_7',['Prod',['../struct_prod.html',1,'']]] +]; diff --git a/docs/build/html/search/classes_f.js b/docs/build/html/search/classes_f.js new file mode 100644 index 000000000..f7ea74502 --- /dev/null +++ b/docs/build/html/search/classes_f.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['qrf_0',['QRF',['../classmlx_1_1core_1_1_q_r_f.html',1,'mlx::core']]], + ['quantizedmatmul_1',['QuantizedMatmul',['../classmlx_1_1core_1_1_quantized_matmul.html',1,'mlx::core']]] +]; diff --git a/docs/build/html/search/close.svg b/docs/build/html/search/close.svg new file mode 100644 index 000000000..337d6cc13 --- /dev/null +++ b/docs/build/html/search/close.svg @@ -0,0 +1,18 @@ + + + + + + diff --git a/docs/build/html/search/defines_0.js b/docs/build/html/search/defines_0.js new file mode 100644 index 000000000..0753f823c --- /dev/null +++ b/docs/build/html/search/defines_0.js @@ -0,0 +1,7 @@ +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']]], + ['_5fmps_5fprivate_5fcls_2',['_MPS_PRIVATE_CLS',['../mps_2gemm_8h.html#a2986cabc5a9ec53428151949c0369602',1,'gemm.h']]], + ['_5fmps_5fprivate_5fsel_3',['_MPS_PRIVATE_SEL',['../mps_2gemm_8h.html#a10e733259894b7fddd11f46b9eabfe5f',1,'gemm.h']]] +]; diff --git a/docs/build/html/search/defines_1.js b/docs/build/html/search/defines_1.js new file mode 100644 index 000000000..1abab1b59 --- /dev/null +++ b/docs/build/html/search/defines_1.js @@ -0,0 +1,4 @@ +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 new file mode 100644 index 000000000..51c520bfc --- /dev/null +++ b/docs/build/html/search/defines_2.js @@ -0,0 +1,13 @@ +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 new file mode 100644 index 000000000..9671e6eba --- /dev/null +++ b/docs/build/html/search/defines_3.js @@ -0,0 +1,5 @@ +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 new file mode 100644 index 000000000..444e22070 --- /dev/null +++ b/docs/build/html/search/defines_4.js @@ -0,0 +1,8 @@ +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_5fvmap_4',['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 new file mode 100644 index 000000000..3cffc4796 --- /dev/null +++ b/docs/build/html/search/defines_5.js @@ -0,0 +1,4 @@ +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 new file mode 100644 index 000000000..2fd5f085b --- /dev/null +++ b/docs/build/html/search/defines_6.js @@ -0,0 +1,10 @@ +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 new file mode 100644 index 000000000..e24707b92 --- /dev/null +++ b/docs/build/html/search/defines_7.js @@ -0,0 +1,8 @@ +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_5fmetal_5fmath_5ffuncs_2',['instantiate_metal_math_funcs',['../bf16__math_8h.html#a9e9f0fdd6e304522bc88acd22c576842',1,'bf16_math.h']]], + ['instantiate_5fmetal_5fsimd_5fcomm_5ffuncs_3',['instantiate_metal_simd_comm_funcs',['../bf16__math_8h.html#aecc11cb898846d01bfc9faa109fcf791',1,'bf16_math.h']]], + ['instantiate_5fmetal_5fsimd_5freduction_5ffuncs_4',['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 new file mode 100644 index 000000000..2fceffd78 --- /dev/null +++ b/docs/build/html/search/defines_8.js @@ -0,0 +1,10 @@ +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_2sort_8h.html#a0386011c52d03e60885a31e6fbd903dd',1,'sort.h']]], + ['mlx_5fmtl_5floop_5funroll_4',['MLX_MTL_LOOP_UNROLL',['../kernels_2sort_8h.html#ad34b622323cebef136669fedd7229515',1,'sort.h']]], + ['mlx_5fmtl_5fpragma_5funroll_5',['MLX_MTL_PRAGMA_UNROLL',['../backend_2metal_2kernels_2utils_8h.html#a069b682d7d21827461544817d722bfd3',1,'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 new file mode 100644 index 000000000..5aca25aba --- /dev/null +++ b/docs/build/html/search/defines_9.js @@ -0,0 +1,22 @@ +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 new file mode 100644 index 000000000..b1a537eca --- /dev/null +++ b/docs/build/html/search/defines_a.js @@ -0,0 +1,4 @@ +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 new file mode 100644 index 000000000..3a705c846 --- /dev/null +++ b/docs/build/html/search/defines_b.js @@ -0,0 +1,5 @@ +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 new file mode 100644 index 000000000..822e6ecf7 --- /dev/null +++ b/docs/build/html/search/defines_c.js @@ -0,0 +1,4 @@ +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 new file mode 100644 index 000000000..ce385f300 --- /dev/null +++ b/docs/build/html/search/enums_0.js @@ -0,0 +1,4 @@ +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 new file mode 100644 index 000000000..26751f6cc --- /dev/null +++ b/docs/build/html/search/enums_1.js @@ -0,0 +1,6 @@ +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 new file mode 100644 index 000000000..6510e99b1 --- /dev/null +++ b/docs/build/html/search/enums_2.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['datatype_0',['DataType',['../namespace_m_p_s.html#a89deea53e8654b369b5cde55bdcd1288',1,'MPS']]], + ['devicetype_1',['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 new file mode 100644 index 000000000..35a78600f --- /dev/null +++ b/docs/build/html/search/enums_3.js @@ -0,0 +1,4 @@ +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 new file mode 100644 index 000000000..32da2e0fb --- /dev/null +++ b/docs/build/html/search/enums_4.js @@ -0,0 +1,4 @@ +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 new file mode 100644 index 000000000..c1bd77374 --- /dev/null +++ b/docs/build/html/search/enums_5.js @@ -0,0 +1,5 @@ +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 new file mode 100644 index 000000000..2ae88c715 --- /dev/null +++ b/docs/build/html/search/enums_6.js @@ -0,0 +1,4 @@ +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 new file mode 100644 index 000000000..6a3fc021b --- /dev/null +++ b/docs/build/html/search/enums_7.js @@ -0,0 +1,4 @@ +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 new file mode 100644 index 000000000..1fbbee9e6 --- /dev/null +++ b/docs/build/html/search/enumvalues_0.js @@ -0,0 +1,7 @@ +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 new file mode 100644 index 000000000..e85f13ab5 --- /dev/null +++ b/docs/build/html/search/enumvalues_1.js @@ -0,0 +1,6 @@ +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 new file mode 100644 index 000000000..b173a9909 --- /dev/null +++ b/docs/build/html/search/enumvalues_10.js @@ -0,0 +1,10 @@ +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 new file mode 100644 index 000000000..c5c21816a --- /dev/null +++ b/docs/build/html/search/enumvalues_11.js @@ -0,0 +1,5 @@ +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 new file mode 100644 index 000000000..4dc4a4757 --- /dev/null +++ b/docs/build/html/search/enumvalues_12.js @@ -0,0 +1,4 @@ +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 new file mode 100644 index 000000000..0ecbf5d8c --- /dev/null +++ b/docs/build/html/search/enumvalues_2.js @@ -0,0 +1,10 @@ +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 new file mode 100644 index 000000000..437fc22c0 --- /dev/null +++ b/docs/build/html/search/enumvalues_3.js @@ -0,0 +1,9 @@ +var searchData= +[ + ['datatypealternateencodingbit_0',['DataTypeAlternateEncodingBit',['../namespace_m_p_s.html#a89deea53e8654b369b5cde55bdcd1288a9681e9100f89bbc0484c4195ff1cef03',1,'MPS']]], + ['datatypebfloat16_1',['DataTypeBFloat16',['../namespace_m_p_s.html#a89deea53e8654b369b5cde55bdcd1288a39c004722f824f460d83cca680b242ca',1,'MPS']]], + ['datatypefloat16_2',['DataTypeFloat16',['../namespace_m_p_s.html#a89deea53e8654b369b5cde55bdcd1288a4fb70692e99c4ff2dc6028275e5a3868',1,'MPS']]], + ['datatypefloat32_3',['DataTypeFloat32',['../namespace_m_p_s.html#a89deea53e8654b369b5cde55bdcd1288a2156c04e979b8d8bd39d4ae17d53ded8',1,'MPS']]], + ['datatypefloatbit_4',['DataTypeFloatBit',['../namespace_m_p_s.html#a89deea53e8654b369b5cde55bdcd1288a330c9014eb076d89dae3d69f3b49c04a',1,'MPS']]], + ['disabled_5',['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 new file mode 100644 index 000000000..f11f4cfa2 --- /dev/null +++ b/docs/build/html/search/enumvalues_4.js @@ -0,0 +1,5 @@ +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 new file mode 100644 index 000000000..e51f6e11c --- /dev/null +++ b/docs/build/html/search/enumvalues_5.js @@ -0,0 +1,7 @@ +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 new file mode 100644 index 000000000..5deb1fa6e --- /dev/null +++ b/docs/build/html/search/enumvalues_6.js @@ -0,0 +1,10 @@ +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 new file mode 100644 index 000000000..af83b67ea --- /dev/null +++ b/docs/build/html/search/enumvalues_7.js @@ -0,0 +1,10 @@ +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 new file mode 100644 index 000000000..2314e295a --- /dev/null +++ b/docs/build/html/search/enumvalues_8.js @@ -0,0 +1,4 @@ +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 new file mode 100644 index 000000000..06b9c4e9c --- /dev/null +++ b/docs/build/html/search/enumvalues_9.js @@ -0,0 +1,5 @@ +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 new file mode 100644 index 000000000..bcafee1d6 --- /dev/null +++ b/docs/build/html/search/enumvalues_a.js @@ -0,0 +1,7 @@ +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 new file mode 100644 index 000000000..988ee11f1 --- /dev/null +++ b/docs/build/html/search/enumvalues_b.js @@ -0,0 +1,4 @@ +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 new file mode 100644 index 000000000..1d6cd51cc --- /dev/null +++ b/docs/build/html/search/enumvalues_c.js @@ -0,0 +1,4 @@ +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 new file mode 100644 index 000000000..a6ee0e4c2 --- /dev/null +++ b/docs/build/html/search/enumvalues_d.js @@ -0,0 +1,4 @@ +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 new file mode 100644 index 000000000..6a250e52f --- /dev/null +++ b/docs/build/html/search/enumvalues_e.js @@ -0,0 +1,7 @@ +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 new file mode 100644 index 000000000..7e1105b78 --- /dev/null +++ b/docs/build/html/search/enumvalues_f.js @@ -0,0 +1,5 @@ +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 new file mode 100644 index 000000000..257073d85 --- /dev/null +++ b/docs/build/html/search/files_0.js @@ -0,0 +1,7 @@ +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 new file mode 100644 index 000000000..aea5038c8 --- /dev/null +++ b/docs/build/html/search/files_1.js @@ -0,0 +1,8 @@ +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_2jit_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_2jit_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 new file mode 100644 index 000000000..4755911ce --- /dev/null +++ b/docs/build/html/search/files_10.js @@ -0,0 +1,8 @@ +var searchData= +[ + ['ternary_2eh_0',['ternary.h',['../common_2ternary_8h.html',1,'(Global Namespace)'],['../metal_2jit_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,'']]], + ['threefry_2eh_2',['threefry.h',['../threefry_8h.html',1,'']]], + ['transforms_2eh_3',['transforms.h',['../backend_2metal_2kernels_2steel_2gemm_2transforms_8h.html',1,'(Global Namespace)'],['../transforms_8h.html',1,'(Global Namespace)']]], + ['transforms_5fimpl_2eh_4',['transforms_impl.h',['../transforms__impl_8h.html',1,'']]] +]; diff --git a/docs/build/html/search/files_11.js b/docs/build/html/search/files_11.js new file mode 100644 index 000000000..4b96532d7 --- /dev/null +++ b/docs/build/html/search/files_11.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['unary_2eh_0',['unary.h',['../common_2unary_8h.html',1,'(Global Namespace)'],['../metal_2jit_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 new file mode 100644 index 000000000..8762eebe0 --- /dev/null +++ b/docs/build/html/search/files_2.js @@ -0,0 +1,10 @@ +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 new file mode 100644 index 000000000..07ef2436e --- /dev/null +++ b/docs/build/html/search/files_3.js @@ -0,0 +1,7 @@ +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,'']]], + ['dtype_2eh_3',['dtype.h',['../dtype_8h.html',1,'']]] +]; diff --git a/docs/build/html/search/files_4.js b/docs/build/html/search/files_4.js new file mode 100644 index 000000000..ce7fc6e6a --- /dev/null +++ b/docs/build/html/search/files_4.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['erf_2eh_0',['erf.h',['../erf_8h.html',1,'']]], + ['event_2eh_1',['event.h',['../event_8h.html',1,'']]], + ['expm1f_2eh_2',['expm1f.h',['../expm1f_8h.html',1,'']]] +]; diff --git a/docs/build/html/search/files_5.js b/docs/build/html/search/files_5.js new file mode 100644 index 000000000..589d5afa4 --- /dev/null +++ b/docs/build/html/search/files_5.js @@ -0,0 +1,7 @@ +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_2jit_2fft_8h.html',1,'(Global Namespace)'],['../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 new file mode 100644 index 000000000..735f6f9c4 --- /dev/null +++ b/docs/build/html/search/files_6.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['gather_2eh_0',['gather.h',['../gather_8h.html',1,'']]], + ['gemm_2eh_1',['gemm.h',['../kernels_2steel_2gemm_2gemm_8h.html',1,'(Global Namespace)'],['../mps_2gemm_8h.html',1,'(Global Namespace)']]], + ['gguf_2eh_2',['gguf.h',['../gguf_8h.html',1,'']]], + ['graph_5futils_2eh_3',['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 new file mode 100644 index 000000000..ca28866f8 --- /dev/null +++ b/docs/build/html/search/files_7.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['half_5ftypes_2eh_0',['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 new file mode 100644 index 000000000..b09ce584d --- /dev/null +++ b/docs/build/html/search/files_8.js @@ -0,0 +1,6 @@ +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 new file mode 100644 index 000000000..2e60058ca --- /dev/null +++ b/docs/build/html/search/files_9.js @@ -0,0 +1,4 @@ +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 new file mode 100644 index 000000000..c5b477dda --- /dev/null +++ b/docs/build/html/search/files_a.js @@ -0,0 +1,10 @@ +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',['../load_8h.html',1,'']]], + ['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 new file mode 100644 index 000000000..e87b82274 --- /dev/null +++ b/docs/build/html/search/files_b.js @@ -0,0 +1,8 @@ +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 new file mode 100644 index 000000000..1679dc0b8 --- /dev/null +++ b/docs/build/html/search/files_c.js @@ -0,0 +1,4 @@ +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 new file mode 100644 index 000000000..506b3e167 --- /dev/null +++ b/docs/build/html/search/files_d.js @@ -0,0 +1,6 @@ +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 new file mode 100644 index 000000000..28a26bceb --- /dev/null +++ b/docs/build/html/search/files_e.js @@ -0,0 +1,12 @@ +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_2jit_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/files_f.js b/docs/build/html/search/files_f.js new file mode 100644 index 000000000..b6e133e6c --- /dev/null +++ b/docs/build/html/search/files_f.js @@ -0,0 +1,17 @@ +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',['../jit_2sort_8h.html',1,'(Global Namespace)'],['../kernels_2sort_8h.html',1,'(Global Namespace)']]], + ['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/functions_0.js b/docs/build/html/search/functions_0.js new file mode 100644 index 000000000..f839c4035 --- /dev/null +++ b/docs/build/html/search/functions_0.js @@ -0,0 +1,8 @@ +var searchData= +[ + ['_5fcontiguous_5fstrided_5freduce_0',['_contiguous_strided_reduce',['../reduce__col_8h.html#a6d72f6a88a37d8e031d0ac33f26ecbb4',1,'reduce_col.h']]], + ['_5fmlx_5fbfloat16_1',['_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_2',['_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)']]], + ['_5fmtl_5fprivate_5fdef_5fcls_3',['_MTL_PRIVATE_DEF_CLS',['../namespace_m_t_l_1_1_private_1_1_class.html#af6fc5dd227064897589f56d8912a8fd6',1,'MTL::Private::Class::_MTL_PRIVATE_DEF_CLS(MPSMatrixDescriptor)'],['../namespace_m_t_l_1_1_private_1_1_class.html#a23ba07d1dd78ce20ecba16d88faba5e2',1,'MTL::Private::Class::_MTL_PRIVATE_DEF_CLS(MPSMatrix)'],['../namespace_m_t_l_1_1_private_1_1_class.html#aa94ef8e094d91ad36af140823c15b59d',1,'MTL::Private::Class::_MTL_PRIVATE_DEF_CLS(MPSVectorDescriptor)'],['../namespace_m_t_l_1_1_private_1_1_class.html#aeff20cff997534929deb18ce0b7e947f',1,'MTL::Private::Class::_MTL_PRIVATE_DEF_CLS(MPSVector)'],['../namespace_m_t_l_1_1_private_1_1_class.html#a48f22abaf491778683a68e7db28839c9',1,'MTL::Private::Class::_MTL_PRIVATE_DEF_CLS(MPSKernel)'],['../namespace_m_t_l_1_1_private_1_1_class.html#a24a734c27edbaf99bbb3c3741fe98688',1,'MTL::Private::Class::_MTL_PRIVATE_DEF_CLS(MPSMatrixMultiplication)'],['../namespace_m_t_l_1_1_private_1_1_class.html#ac162f79565a61ed1f2316ca1a38c774d',1,'MTL::Private::Class::_MTL_PRIVATE_DEF_CLS(MPSMatrixVectorMultiplication)']]], + ['_5fmtl_5fprivate_5fdef_5fsel_4',['_MTL_PRIVATE_DEF_SEL',['../namespace_m_t_l_1_1_private_1_1_selector.html#acc50646a91989ebaca3cf945f42f2b62',1,'MTL::Private::Selector::_MTL_PRIVATE_DEF_SEL(matrixDescriptorWithRows_columns_rowBytes_dataType, "matrixDescriptorWithRows:columns:rowBytes:dataType:")'],['../namespace_m_t_l_1_1_private_1_1_selector.html#a11464ac9c57b12981683bf25afc6ae77',1,'MTL::Private::Selector::_MTL_PRIVATE_DEF_SEL(matrixDescriptorWithRows_columns_matrices_rowBytes_matrixBytes_dataType, "matrixDescriptorWithRows:columns:matrices:rowBytes:matrixBytes:dataType:")'],['../namespace_m_t_l_1_1_private_1_1_selector.html#a30c8b5bf66838e00c44d4cef997bee78',1,'MTL::Private::Selector::_MTL_PRIVATE_DEF_SEL(rows, "rows")'],['../namespace_m_t_l_1_1_private_1_1_selector.html#a5628c8d22de5d0339cdfd37cb8e103b6',1,'MTL::Private::Selector::_MTL_PRIVATE_DEF_SEL(initWithBuffer_descriptor, "initWithBuffer:descriptor:")'],['../namespace_m_t_l_1_1_private_1_1_selector.html#ae842530803a52e75c546db1f9424f933',1,'MTL::Private::Selector::_MTL_PRIVATE_DEF_SEL(initWithDevice_, "initWithDevice:transposeLeft:transposeRight:" "resultRows:resultColumns:interiorColumns:alpha:beta:")'],['../namespace_m_t_l_1_1_private_1_1_selector.html#a8631d028899e57b928d1240c4cdda929',1,'MTL::Private::Selector::_MTL_PRIVATE_DEF_SEL(encodeToCommandBuffer_leftMatrix_rightMatrix_resultMatrix, "encodeToCommandBuffer:leftMatrix:rightMatrix:resultMatrix:")'],['../namespace_m_t_l_1_1_private_1_1_selector.html#a071584fae1458eba0ed41e02e640d34b',1,'MTL::Private::Selector::_MTL_PRIVATE_DEF_SEL(setLeftMatrixOrigin_, "setLeftMatrixOrigin:")'],['../namespace_m_t_l_1_1_private_1_1_selector.html#a8534190f99aac6ab3a01c0f6965e8882',1,'MTL::Private::Selector::_MTL_PRIVATE_DEF_SEL(setRightMatrixOrigin_, "setRightMatrixOrigin:")'],['../namespace_m_t_l_1_1_private_1_1_selector.html#a8b1a7f7c97c62753b3cb7447d5aa4798',1,'MTL::Private::Selector::_MTL_PRIVATE_DEF_SEL(setResultMatrixOrigin_, "setResultMatrixOrigin:")'],['../namespace_m_t_l_1_1_private_1_1_selector.html#af84065144e91d5fb295e23b42f3be8cc',1,'MTL::Private::Selector::_MTL_PRIVATE_DEF_SEL(setBatchStart_, "setBatchStart:")'],['../namespace_m_t_l_1_1_private_1_1_selector.html#ac13dc3039959f5f5d970f02cbc89c16d',1,'MTL::Private::Selector::_MTL_PRIVATE_DEF_SEL(setBatchSize_, "setBatchSize:")'],['../namespace_m_t_l_1_1_private_1_1_selector.html#a46fcb509b385834113fe0b0f27ec768b',1,'MTL::Private::Selector::_MTL_PRIVATE_DEF_SEL(vectorDescriptorWithLength_dataType, "vectorDescriptorWithLength:dataType:")'],['../namespace_m_t_l_1_1_private_1_1_selector.html#a4c7a7cb16b14dd691e1211913572c6a8',1,'MTL::Private::Selector::_MTL_PRIVATE_DEF_SEL(vectorDescriptorWithLength_vectors_vectorBytes_dataType, "vectorDescriptorWithLength:vectors:vectorBytes:dataType:")'],['../namespace_m_t_l_1_1_private_1_1_selector.html#ab84cb9467edcc1a5ce32f001cb46c656',1,'MTL::Private::Selector::_MTL_PRIVATE_DEF_SEL(initWithDevice_transpose_rows_columns_alpha_beta, "initWithDevice:transpose:rows:columns:alpha:beta:")'],['../namespace_m_t_l_1_1_private_1_1_selector.html#aec59058ff2c151d67647ad2680074090',1,'MTL::Private::Selector::_MTL_PRIVATE_DEF_SEL(encodeToCommandBuffer_inputMatrix_inputVector_resultVector, "encodeToCommandBuffer:inputMatrix:inputVector:resultVector:")']]] +]; diff --git a/docs/build/html/search/functions_1.js b/docs/build/html/search/functions_1.js new file mode 100644 index 000000000..e1f18f29f --- /dev/null +++ b/docs/build/html/search/functions_1.js @@ -0,0 +1,78 @@ +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']]], + ['advance_8',['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()']]], + ['aligned_5falloc_9',['aligned_alloc',['../namespacepocketfft_1_1detail.html#ae397445c61400f47a8fe3f8e1b6d0b76',1,'pocketfft::detail']]], + ['aligned_5fallocator_10',['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_11',['aligned_dealloc',['../namespacepocketfft_1_1detail.html#aec7820e36a33e0a8bb83aa03b04b81e8',1,'pocketfft::detail']]], + ['all_12',['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_13',['all_gather',['../namespacemlx_1_1core_1_1distributed_1_1detail.html#aeb5a1726358213bc75756506f7b54d04',1,'mlx::core::distributed::detail::all_gather()'],['../namespacemlx_1_1core_1_1distributed.html#abf45499dd1209ba7162908f14634d2ba',1,'mlx::core::distributed::all_gather()']]], + ['all_5freduce_14',['all_reduce',['../reduce__all_8h.html#a8d143d2fea044e4808b69cc3723e33c7',1,'reduce_all.h']]], + ['all_5freduce_5fdispatch_15',['all_reduce_dispatch',['../namespacemlx_1_1core.html#a3ab0fd997d9a35782106ff083a72e098',1,'mlx::core']]], + ['all_5freduce_5fno_5fatomics_16',['all_reduce_no_atomics',['../reduce__all_8h.html#a09d140566cb3e6418a821be1e42db282',1,'reduce_all.h']]], + ['all_5fsum_17',['all_sum',['../namespacemlx_1_1core_1_1distributed_1_1detail.html#aa1d225b25f7b6426c48c5e35860ee960',1,'mlx::core::distributed::detail::all_sum()'],['../namespacemlx_1_1core_1_1distributed.html#ad1c6aa544781765060552cacfa845001',1,'mlx::core::distributed::all_sum()']]], + ['allclose_18',['allclose',['../group__ops.html#gaf0cd4257de7542daf9faf5e605e31020',1,'mlx::core']]], + ['allgather_19',['AllGather',['../classmlx_1_1core_1_1distributed_1_1_all_gather.html#ac9d0f1ba0d9602fa22e8f2b60f1231e0',1,'mlx::core::distributed::AllGather']]], + ['alloc_20',['alloc',['../class_m_p_s_1_1_matrix.html#a906d97b4b2365bec4acf278ef22205b4',1,'MPS::Matrix::alloc()'],['../class_m_p_s_1_1_matrix_multiplication.html#a9f1400b36672bd6f228a80982e5b2717',1,'MPS::MatrixMultiplication::alloc()'],['../class_m_p_s_1_1_vector.html#ac08919c16342247963b14766e65332a3',1,'MPS::Vector::alloc()'],['../class_m_p_s_1_1_matrix_vector_multiplication.html#aeca798759333aae7fdd594835e93d16a',1,'MPS::MatrixVectorMultiplication::alloc()']]], + ['alloc_5ftmp_21',['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_22',['allocate',['../structpocketfft_1_1detail_1_1threading_1_1aligned__allocator.html#a4f785747b898980756af9e5515363826',1,'pocketfft::detail::threading::aligned_allocator']]], + ['allocator_23',['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_24',['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_25',['AllReduce',['../classmlx_1_1core_1_1distributed_1_1_all_reduce.html#a936b320f7b0a435f96e018c25f35e7ed',1,'mlx::core::distributed::AllReduce']]], + ['any_26',['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_27',['apply',['../struct_scale_op.html#a69f82bc925843a4e1c14dfe8ad2f3218',1,'ScaleOp::apply()'],['../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_28',['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_29',['apply_epilogue_safe',['../structmlx_1_1steel_1_1_block_m_m_a.html#a9e48f2d51099ec00171506724faab54a',1,'mlx::steel::BlockMMA']]], + ['apply_5finplace_5fop_30',['apply_inplace_op',['../structmlx_1_1steel_1_1_block_loader.html#adb4ca2cc193630a779de552fa8847ddf',1,'mlx::steel::BlockLoader']]], + ['arange_31',['Arange',['../classmlx_1_1core_1_1_arange.html#a1a70c3b0b9c67d5a9446c141c5b7c574',1,'mlx::core::Arange']]], + ['arange_32',['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_33',['ArcCos',['../classmlx_1_1core_1_1_arc_cos.html#a66f4ee841d17923d93241b71ea5103e9',1,'mlx::core::ArcCos']]], + ['arccos_34',['arccos',['../group__ops.html#ga08bec7cb10c84466487b507fc5bf9776',1,'mlx::core']]], + ['arccosh_35',['ArcCosh',['../classmlx_1_1core_1_1_arc_cosh.html#a34597054db467941a2a883c653ba4d71',1,'mlx::core::ArcCosh']]], + ['arccosh_36',['arccosh',['../group__ops.html#gaafafcfcebdf7248679c8543d0c0497e5',1,'mlx::core']]], + ['arcsin_37',['ArcSin',['../classmlx_1_1core_1_1_arc_sin.html#a97cb8c3d4d9d6abc627dec49a404f013',1,'mlx::core::ArcSin']]], + ['arcsin_38',['arcsin',['../group__ops.html#ga8770e8c8f23f13343911f4c9d6e1c619',1,'mlx::core']]], + ['arcsinh_39',['ArcSinh',['../classmlx_1_1core_1_1_arc_sinh.html#a30076b222788deeaaf9ad92d3c535f20',1,'mlx::core::ArcSinh']]], + ['arcsinh_40',['arcsinh',['../group__ops.html#gac62e2cedc49ef2c90dd8584000317450',1,'mlx::core']]], + ['arctan_41',['ArcTan',['../classmlx_1_1core_1_1_arc_tan.html#a3511153bbd421e89fd9294cdb3f79b44',1,'mlx::core::ArcTan']]], + ['arctan_42',['arctan',['../group__ops.html#gaa041f3f070e68f4946db07516b7d092e',1,'mlx::core']]], + ['arctan2_43',['ArcTan2',['../classmlx_1_1core_1_1_arc_tan2.html#aa1a4ebab9924b6bcc80df5b52ed0121a',1,'mlx::core::ArcTan2']]], + ['arctan2_44',['arctan2',['../group__ops.html#ga6caba9c92b5989123501f909cc7da354',1,'mlx::core']]], + ['arctanh_45',['ArcTanh',['../classmlx_1_1core_1_1_arc_tanh.html#a17857bd0e2a3ecf1f7bf8e1a3d354358',1,'mlx::core::ArcTanh']]], + ['arctanh_46',['arctanh',['../group__ops.html#gab46a35925a04c5a9d2ec7898ee55358e',1,'mlx::core']]], + ['argmax_47',['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_48',['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_49',['ArgPartition',['../classmlx_1_1core_1_1_arg_partition.html#ab54b13dbf92351ba1ac06fd3e5a802df',1,'mlx::core::ArgPartition']]], + ['argpartition_50',['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_51',['ArgReduce',['../classmlx_1_1core_1_1_arg_reduce.html#aaccf8021dc24895656e25142eb65aa03',1,'mlx::core::ArgReduce']]], + ['argsort_52',['ArgSort',['../classmlx_1_1core_1_1_arg_sort.html#a38507a8445302a81cb44674c4a5fc0b0',1,'mlx::core::ArgSort']]], + ['argsort_53',['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_54',['argument_encoder',['../classmlx_1_1core_1_1metal_1_1_device.html#a6e33e2b1287324fb4a6575e0da5e5881',1,'mlx::core::metal::Device']]], + ['arr_55',['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_56',['arr_info',['../classpocketfft_1_1detail_1_1arr__info.html#a0dbddb7d86ca306159fc9ef9a453b21e',1,'pocketfft::detail::arr_info']]], + ['array_57',['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_58',['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_59',['ArrayIterator',['../structmlx_1_1core_1_1array_1_1_array_iterator.html#ad3afcb24c6db7642bbc06835f7f3e27a',1,'mlx::core::array::ArrayIterator']]], + ['as_5fstrided_60',['as_strided',['../group__ops.html#ga8de80ecef30fc560003d40f61a38b99d',1,'mlx::core']]], + ['asin_61',['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_62',['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_63',['AsStrided',['../classmlx_1_1core_1_1_as_strided.html#a80c0547f72ed53374eafc57d57b5d4af',1,'mlx::core::AsStrided']]], + ['astype_64',['AsType',['../classmlx_1_1core_1_1_as_type.html#a8c3241d402a8977bb4db037e225f5b47',1,'mlx::core::AsType']]], + ['astype_65',['astype',['../group__ops.html#ga0e58c24fc5668e5a521e5b45e8370a62',1,'mlx::core']]], + ['async_5feval_66',['async_eval',['../namespacemlx_1_1core.html#a15dda19aa7fa1fc5fca35df5cf963297',1,'mlx::core']]], + ['atan_67',['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_68',['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_69',['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_70',['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_71',['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_72',['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_73',['atomic_update',['../struct_none.html#a9d7414f58b3a526758007a4a1da72c74',1,'None::atomic_update()'],['../struct_and.html#a9ddf6d3f16dee000a5f0a30af4d43a7f',1,'And::atomic_update(device mlx_atomic< unsigned int > *out, bool val, int elem_idx, int offset=0)'],['../struct_and.html#af4a5c9f276d21580c0acaf1ff7064c57',1,'And::atomic_update(device mlx_atomic< bool > *out, bool val, uint offset=0)'],['../struct_or.html#a40840c0506bf4ed9a0771ba42c9ebb0f',1,'Or::atomic_update(device mlx_atomic< unsigned int > *out, bool val, uint elem_idx, uint offset=0)'],['../struct_or.html#aad1e6b5b015cd0910625da725afabdf3',1,'Or::atomic_update(device mlx_atomic< bool > *out, bool val, uint offset=0)'],['../struct_sum.html#a3188318e74823f00b9367317ec22ad6b',1,'Sum::atomic_update()'],['../struct_prod.html#a7ad8c7c18b1c54ff1d158683744a324d',1,'Prod::atomic_update()'],['../struct_min.html#a2377172960d21faa67b13c6b1eec5c69',1,'Min::atomic_update()'],['../struct_max.html#ac478a5cd1f567164d786240589d9260c',1,'Max::atomic_update()']]], + ['attach_5fevent_74',['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 new file mode 100644 index 000000000..a458608f0 --- /dev/null +++ b/docs/build/html/search/functions_10.js @@ -0,0 +1,36 @@ +var searchData= +[ + ['pad_0',['Pad',['../classmlx_1_1core_1_1_pad.html#ad03da2c40b1e1f2fdf2649d00fa4ab43',1,'mlx::core::Pad']]], + ['pad_1',['pad',['../group__ops.html#ga4fd04d6472ae7cdb94a174edfe338ea3',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), StreamOrDevice s={})'],['../group__ops.html#gaca4e00d5e4ed9e9f29d56a17f19c2e31',1,'mlx::core::pad(const array &a, const std::vector< std::pair< int, int > > &pad_width, const array &pad_value=array(0), StreamOrDevice s={})'],['../group__ops.html#ga608164c4f5b4ac2fba374219285d90bc',1,'mlx::core::pad(const array &a, const std::pair< int, int > &pad_width, const array &pad_value=array(0), StreamOrDevice s={})'],['../group__ops.html#ga2e57e26c4d7f3d18802c164656cf915c',1,'mlx::core::pad(const array &a, int pad_width, const array &pad_value=array(0), StreamOrDevice s={})']]], + ['pad_5fgpu_2',['pad_gpu',['../namespacemlx_1_1core.html#a6e2054d396ae487d810642dc19cdd0b0',1,'mlx::core']]], + ['partition_3',['Partition',['../classmlx_1_1core_1_1_partition.html#a7b82ca3895b6654308fac566b277ac0d',1,'mlx::core::Partition']]], + ['partition_4',['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_5fall_5freduce_5',['per_thread_all_reduce',['../reduce__all_8h.html#a0895975942131768f280decc854d0ac1',1,'reduce_all.h']]], + ['per_5fthread_5frow_5freduce_6',['per_thread_row_reduce',['../reduce__row_8h.html#a5df83c60214206d584be1587c9b723a5',1,'reduce_row.h']]], + ['perform_5ffft_7',['perform_fft',['../backend_2metal_2kernels_2fft_8h.html#a050ead8fa5cacdaec13d68ca3c0dcb81',1,'fft.h']]], + ['pm_8',['PM',['../namespacepocketfft_1_1detail.html#a8c6ec35091d5136d991577623133fcf2',1,'pocketfft::detail']]], + ['pminplace_9',['PMINPLACE',['../namespacepocketfft_1_1detail.html#aa3477781ef54788c9fa7755cb8ea75fd',1,'pocketfft::detail']]], + ['pocketfft_5fc_10',['pocketfft_c',['../classpocketfft_1_1detail_1_1pocketfft__c.html#a44f46cf06f572b42ad8b53c7c6f38e4d',1,'pocketfft::detail::pocketfft_c']]], + ['pocketfft_5fr_11',['pocketfft_r',['../classpocketfft_1_1detail_1_1pocketfft__r.html#a60e9b3d1f9b20ec5b86d46b0398f6f7d',1,'pocketfft::detail::pocketfft_r']]], + ['post_5fin_12',['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_13',['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_14',['Power',['../classmlx_1_1core_1_1_power.html#a7bc6c64179b7a2aef56fe1dafb6459b2',1,'mlx::core::Power']]], + ['power_15',['power',['../group__ops.html#ga7972058715c26559dff9c9ae2a3ef76d',1,'mlx::core']]], + ['powr_16',['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_17',['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_18',['prepare_slice',['../namespacemlx_1_1core.html#a07ae007c87cf2d723a0fa7b25a2b6a93',1,'mlx::core']]], + ['primitive_19',['primitive',['../classmlx_1_1core_1_1array.html#a790548666511d8c6d9f92ee79d2ce14c',1,'mlx::core::array']]], + ['primitive_20',['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_21',['primitive_id',['../classmlx_1_1core_1_1array.html#af5ad83605d4eea81561246873bee1d7c',1,'mlx::core::array']]], + ['primitive_5fptr_22',['primitive_ptr',['../classmlx_1_1core_1_1array.html#a5119cd616ec3c05d65878944b8889469',1,'mlx::core::array']]], + ['print_23',['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_v_j_p.html#a1df084da022f3fd50f1d24379ec1c2f5',1,'mlx::core::CustomVJP::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_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_24',['print_complex_constant',['../namespacemlx_1_1core.html#a2b78f270942c6eb185e8045f1c5b4286',1,'mlx::core']]], + ['print_5fconstant_25',['print_constant',['../namespacemlx_1_1core.html#a7d11b000895d44d183260634f4192d92',1,'mlx::core']]], + ['print_5ffloat_5fconstant_26',['print_float_constant',['../namespacemlx_1_1core.html#a93a8ac59c644b801ec8881a58368caf2',1,'mlx::core']]], + ['print_5fgraph_27',['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_28',['print_int_constant',['../namespacemlx_1_1core.html#a948ce3dfc4520d3aa98b33e42f617c64',1,'mlx::core']]], + ['prod_29',['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_30',['promote_types',['../namespacemlx_1_1core.html#a505922e54acd43114308e3bdbda0e497',1,'mlx::core']]], + ['ptr_31',['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_32',['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 new file mode 100644 index 000000000..286a05d75 --- /dev/null +++ b/docs/build/html/search/functions_11.js @@ -0,0 +1,9 @@ +var searchData= +[ + ['qr_0',['qr',['../namespacemlx_1_1core_1_1linalg.html#ae6d97829459353fe3b31c8a0867c0ca2',1,'mlx::core::linalg']]], + ['qrf_1',['QRF',['../classmlx_1_1core_1_1_q_r_f.html#a44ed2924dc574c4aeb79b1188b5c3983',1,'mlx::core::QRF']]], + ['quantize_2',['quantize',['../group__ops.html#gab43cc28690da7cdd43b43065adbd31da',1,'mlx::core']]], + ['quantized_5fmatmul_3',['quantized_matmul',['../group__ops.html#ga6381c7062b232ac21f3fdc3136aaf86e',1,'mlx::core']]], + ['quantizedmatmul_4',['QuantizedMatmul',['../classmlx_1_1core_1_1_quantized_matmul.html#a5bd164d038d9dc21919f7e0bfdeaa25c',1,'mlx::core::QuantizedMatmul']]], + ['quiet_5fnan_5',['quiet_NaN',['../structmetal_1_1__numeric__limits__impl_3_01bfloat16__t_01_4.html#aebeb07c01984be246bc2d1b8f8e4ac7b',1,'metal::_numeric_limits_impl< bfloat16_t >']]] +]; diff --git a/docs/build/html/search/functions_12.js b/docs/build/html/search/functions_12.js new file mode 100644 index 000000000..32117d0a3 --- /dev/null +++ b/docs/build/html/search/functions_12.js @@ -0,0 +1,72 @@ +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_5fn_5fsteps_18',['radix_n_steps',['../backend_2metal_2kernels_2fft_8h.html#aba8d32e0911499671df93678f39da08b',1,'fft.h']]], + ['randint_19',['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_20',['RandomBits',['../classmlx_1_1core_1_1_random_bits.html#a7dd5ed03f2a4ab45d1d5e8e2b587de6b',1,'mlx::core::RandomBits']]], + ['rank_21',['rank',['../structmlx_1_1core_1_1distributed_1_1_group.html#ad4a5cdab8e2209ad4825f0c63a9cbec7',1,'mlx::core::distributed::Group']]], + ['raw_5fevent_22',['raw_event',['../classmlx_1_1core_1_1_event.html#a84fd13b51b6622e35b4bfbbcd0c9be4f',1,'mlx::core::Event']]], + ['raw_5fgroup_23',['raw_group',['../structmlx_1_1core_1_1distributed_1_1_group.html#a3285b94851cf145a2a472f60b7f7ca36',1,'mlx::core::distributed::Group']]], + ['raw_5fptr_24',['raw_ptr',['../classmlx_1_1core_1_1allocator_1_1_buffer.html#a2dfe63e0b4bffeb965cdc50ad4228dbc',1,'mlx::core::allocator::Buffer']]], + ['read_25',['read',['../classmlx_1_1core_1_1io_1_1_reader.html#ad8d74e2c62b579511089faa4cc6f50a1',1,'mlx::core::io::Reader::read()'],['../classmlx_1_1core_1_1io_1_1_file_reader.html#a6a5fa6067fea53ba7dbcddcb7d713a7d',1,'mlx::core::io::FileReader::read()']]], + ['readwriter_26',['ReadWriter',['../struct_read_writer.html#a1aa07e41d7ac286ad79bd26a072dfa0c',1,'ReadWriter']]], + ['reciprocal_27',['reciprocal',['../group__ops.html#ga4d29556bb93e2f66916116cf1f062b36',1,'mlx::core']]], + ['reduce_28',['Reduce',['../classmlx_1_1core_1_1_reduce.html#a055368c1d036fb953a23ef230e33dcbf',1,'mlx::core::Reduce']]], + ['reduce_29',['reduce',['../namespacemlx_1_1core_1_1metal.html#abb997ccbed4c9a9ccd975b1574755fca',1,'mlx::core::metal']]], + ['reduce_5futils_30',['reduce_utils',['../namespacemlx_1_1core_1_1metal.html#a2ec39572806310cf528aea06530e8af8',1,'mlx::core::metal']]], + ['reductionplan_31',['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_32',['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#a6993ce23a485b725b687628b77751ad2',1,'mlx::core::metal::Device::register_library(const std::string &lib_name, const std::function< std::string(const std::string &)> &lib_path_func=get_colocated_mtllib_path)']]], + ['remainder_33',['Remainder',['../classmlx_1_1core_1_1_remainder.html#a4f3eada4a21898af4a77d1d27ce14641',1,'mlx::core::Remainder']]], + ['remainder_34',['remainder',['../group__ops.html#ga99f5c904f724156a814d7817188351d2',1,'mlx::core']]], + ['remaining_35',['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_36',['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_37',['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_38',['Reshape',['../classmlx_1_1core_1_1_reshape.html#aa7c5a6e18d0615ad36102de01929eb26',1,'mlx::core::Reshape']]], + ['reshape_39',['reshape',['../group__ops.html#ga7b0e3d46a39d99b1628b422049790082',1,'mlx::core']]], + ['resize_40',['resize',['../classpocketfft_1_1detail_1_1arr.html#a8d73baaefa02dff8714e4398c83917e0',1,'pocketfft::detail::arr']]], + ['restart_41',['restart',['../classpocketfft_1_1detail_1_1threading_1_1thread__pool.html#a51d252df8d0cd060f15be8ba2bfe3288',1,'pocketfft::detail::threading::thread_pool']]], + ['result_5ftype_42',['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)']]], + ['rev_5fiter_43',['rev_iter',['../classpocketfft_1_1detail_1_1rev__iter.html#af7b8c2f1534d3038ba2a3c6b9919e134',1,'pocketfft::detail::rev_iter']]], + ['rev_5fofs_44',['rev_ofs',['../classpocketfft_1_1detail_1_1rev__iter.html#a7f112afa76cb7a4c29cff217a6f5f5a9',1,'pocketfft::detail::rev_iter']]], + ['rfft_45',['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_46',['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_47',['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_48',['rfftp',['../classpocketfft_1_1detail_1_1rfftp.html#a0c590f917b8e8afa3ff53ccff52e68c5',1,'pocketfft::detail::rfftp']]], + ['right_5fshift_49',['right_shift',['../group__ops.html#gafa376ad57d38ba87378f0272dc379b23',1,'mlx::core']]], + ['rint_50',['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_51',['rms_norm',['../namespacemlx_1_1core_1_1fast.html#ac7b620275c6386f822b7aacc6b312e62',1,'mlx::core::fast']]], + ['rmsnorm_52',['RMSNorm',['../classmlx_1_1core_1_1fast_1_1_r_m_s_norm.html#a22adaff0749711263388ec151fcfebe2',1,'mlx::core::fast::RMSNorm']]], + ['rmsnormvjp_53',['RMSNormVJP',['../classmlx_1_1core_1_1fast_1_1_r_m_s_norm_v_j_p.html#aac060129b2e1af79bf388bfe705381ca',1,'mlx::core::fast::RMSNormVJP']]], + ['rope_54',['RoPE',['../classmlx_1_1core_1_1fast_1_1_ro_p_e.html#a031fa27aeba94cfa5ccc633137a12163',1,'mlx::core::fast::RoPE']]], + ['rope_55',['rope',['../namespacemlx_1_1core_1_1fast.html#a44a77225d1e90fd5bf81caccf8c20061',1,'mlx::core::fast']]], + ['rot90_56',['ROT90',['../namespacepocketfft_1_1detail.html#a928bad5278df636ee47402c0a75f64ef',1,'pocketfft::detail']]], + ['rotx90_57',['ROTX90',['../namespacepocketfft_1_1detail.html#ab6a43dc0cec4291e163e68a0875ac501',1,'pocketfft::detail']]], + ['round_58',['Round',['../classmlx_1_1core_1_1_round.html#a1327a359b2aed91f576145a0e70d1dde',1,'mlx::core::Round']]], + ['round_59',['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_60',['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_61',['row_reduce_general',['../reduce__row_8h.html#a917b01e3de3372d276f8dd28f0e9b8f1',1,'reduce_row.h']]], + ['row_5freduce_5fgeneral_5fdispatch_62',['row_reduce_general_dispatch',['../namespacemlx_1_1core.html#ab1eeca8ec6fa31819ee108fa6ed2c41b',1,'mlx::core']]], + ['row_5freduce_5fgeneral_5fmed_63',['row_reduce_general_med',['../reduce__row_8h.html#ad77d444bcfa9e6afcc1ffc1dcb919f1c',1,'reduce_row.h']]], + ['row_5freduce_5fgeneral_5fno_5fatomics_64',['row_reduce_general_no_atomics',['../reduce__row_8h.html#a034fdccc83e66871550c2d42399f0ab5',1,'reduce_row.h']]], + ['row_5freduce_5fgeneral_5fsmall_65',['row_reduce_general_small',['../reduce__row_8h.html#aea2b1ba640fffb71c73550ec747b3148',1,'reduce_row.h']]], + ['rows_66',['rows',['../class_m_p_s_1_1_matrix_descriptor.html#a04ce0dd1d4632ff8c4328e4b62d71fc0',1,'MPS::MatrixDescriptor']]], + ['rsqrt_67',['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_68',['run',['../structmlx_1_1steel_1_1_g_e_m_m_kernel.html#a00e55d4a161758350ed7310817d2d2a5',1,'mlx::steel::GEMMKernel']]] +]; diff --git a/docs/build/html/search/functions_13.js b/docs/build/html/search/functions_13.js new file mode 100644 index 000000000..c45156cb7 --- /dev/null +++ b/docs/build/html/search/functions_13.js @@ -0,0 +1,139 @@ +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#a5a48ce1f5ec64ef14fd8a3c42e4fcba9',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#a43e2fe7efe7ade51b23c20c1862099b2',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_file_reader.html#aab62cc43970bd5de2c0115b1cc0a6af4',1,'mlx::core::io::FileReader::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']]], + ['set_21',['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_22',['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_23',['set_compile_mode',['../namespacemlx_1_1core.html#a49445a55f976c4397f25ea18e1e92bef',1,'mlx::core']]], + ['set_5fdata_24',['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_25',['set_default_device',['../namespacemlx_1_1core.html#a312a2de41367fe52caeaf8c0f596a120',1,'mlx::core']]], + ['set_5fdefault_5fstream_26',['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_27',['set_input_array',['../structmlx_1_1core_1_1metal_1_1_command_encoder.html#ab69ff0d7f14b9b59db4df0608193dce4',1,'mlx::core::metal::CommandEncoder']]], + ['set_5fmemory_5flimit_28',['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_29',['set_output_array',['../structmlx_1_1core_1_1metal_1_1_command_encoder.html#a6a2e28e542eaa2886041bddd51ff6522',1,'mlx::core::metal::CommandEncoder']]], + ['set_5fsiblings_30',['set_siblings',['../classmlx_1_1core_1_1array.html#a8fccbe7a4edfd8cca168161124e263b1',1,'mlx::core::array']]], + ['set_5fstatus_31',['set_status',['../classmlx_1_1core_1_1array.html#a63598018999b49f1340b183cb303f05c',1,'mlx::core::array']]], + ['set_5ftracer_32',['set_tracer',['../classmlx_1_1core_1_1array.html#af26e6be1a9e6239471a4c24310c0c7c8',1,'mlx::core::array']]], + ['set_5fvalue_33',['set_value',['../classmlx_1_1core_1_1_event.html#a0d077b11f4b28f882b42440b7ac6d40d',1,'mlx::core::Event']]], + ['setbatchsize_34',['setBatchSize',['../class_m_p_s_1_1_matrix_multiplication.html#ac24cc7d71cdf3fd5bc4291ba2bfcd9e7',1,'MPS::MatrixMultiplication']]], + ['setbatchstart_35',['setBatchStart',['../class_m_p_s_1_1_matrix_multiplication.html#a82008429b4f14b5eba13142886b76cde',1,'MPS::MatrixMultiplication']]], + ['setleftmatrixorigin_36',['setLeftMatrixOrigin',['../class_m_p_s_1_1_matrix_multiplication.html#a8b905b75090af80d97cf09b05cdad528',1,'MPS::MatrixMultiplication']]], + ['setresultmatrixorigin_37',['setResultMatrixOrigin',['../class_m_p_s_1_1_matrix_multiplication.html#a86647678c55adffc51114d036445ba10',1,'MPS::MatrixMultiplication']]], + ['setrightmatrixorigin_38',['setRightMatrixOrigin',['../class_m_p_s_1_1_matrix_multiplication.html#afaa45acd37397737ef4d94e8803be7e2',1,'MPS::MatrixMultiplication']]], + ['shape_39',['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']]], + ['shared_5fbuffer_5fslice_40',['shared_buffer_slice',['../namespacemlx_1_1core.html#a427f2c255dfc6e1f83f97587b08e71bc',1,'mlx::core']]], + ['shutdown_41',['shutdown',['../classpocketfft_1_1detail_1_1threading_1_1thread__pool.html#a0c7c29290fde806031c497f24c4ad411',1,'pocketfft::detail::threading::thread_pool']]], + ['siblings_42',['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_43',['Sigmoid',['../classmlx_1_1core_1_1_sigmoid.html#a47eca99113ec19f0eb60b6a0472c592b',1,'mlx::core::Sigmoid']]], + ['sigmoid_44',['sigmoid',['../group__ops.html#ga708abf8f79609cd6831db7c38cafac0e',1,'mlx::core']]], + ['sign_45',['Sign',['../classmlx_1_1core_1_1_sign.html#afe951e50907bc23a601ec5fa9eae5763',1,'mlx::core::Sign']]], + ['sign_46',['sign',['../group__ops.html#ga20f1a1a8c0cd6206485f9363f3915faa',1,'mlx::core']]], + ['signal_47',['signal',['../classmlx_1_1core_1_1_event.html#a65a858445506a61be5889ae0e3651b89',1,'mlx::core::Event']]], + ['signaling_5fnan_48',['signaling_NaN',['../structmetal_1_1__numeric__limits__impl_3_01bfloat16__t_01_4.html#ad1f76a43c7d51a3765174aa6e0dd9f80',1,'metal::_numeric_limits_impl< bfloat16_t >']]], + ['simd_5fbroadcast_49',['simd_broadcast',['../namespacemetal.html#a498f1e85107eb5f01ba4435977f8efe0',1,'metal']]], + ['simd_5fexclusive_5fscan_50',['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_51',['simd_max',['../namespacemetal.html#a048cad0aca52cb737ebf103e76bd1c49',1,'metal']]], + ['simd_5fmin_52',['simd_min',['../namespacemetal.html#ae9e2a23e00724ba2d7868bc4112b386b',1,'metal']]], + ['simd_5fprefix_5fexclusive_5fproduct_53',['simd_prefix_exclusive_product',['../namespacemetal.html#a5ca40242390b632f737e29636829b2e4',1,'metal']]], + ['simd_5fprefix_5fexclusive_5fsum_54',['simd_prefix_exclusive_sum',['../namespacemetal.html#abfbb70c7471f28bf7ff36a612ad014b2',1,'metal']]], + ['simd_5fprefix_5finclusive_5fproduct_55',['simd_prefix_inclusive_product',['../namespacemetal.html#a6ca6a7e1996228fa536e969e9e45c446',1,'metal']]], + ['simd_5fprefix_5finclusive_5fsum_56',['simd_prefix_inclusive_sum',['../namespacemetal.html#a567acb18199ac0107712eb8cb8aeb8e9',1,'metal']]], + ['simd_5fproduct_57',['simd_product',['../namespacemetal.html#ac6e883a04e2265a9790d7db76059e1b4',1,'metal']]], + ['simd_5freduce_58',['simd_reduce',['../struct_and.html#ab4df5517e050cfa7257c34c6b0bd980b',1,'And::simd_reduce()'],['../struct_or.html#aef6b5abbbf3fd22981b8d27562022605',1,'Or::simd_reduce()'],['../struct_sum.html#acf10e0604098391526da3b8271928b5c',1,'Sum::simd_reduce()'],['../struct_prod.html#ab0d7a38360b971b4d99c4ad2db310069',1,'Prod::simd_reduce()'],['../struct_min.html#afe8d7cefac624fd4267c1b252ac38528',1,'Min::simd_reduce()'],['../struct_max.html#a4f74440c6f1ce8247d5a87c2a8882080',1,'Max::simd_reduce()']]], + ['simd_5fscan_59',['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_60',['simd_shuffle',['../namespacemetal.html#a259ed115bc3c58f88eb35830916b26d4',1,'metal']]], + ['simd_5fshuffle_5fand_5ffill_5fdown_61',['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_62',['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_63',['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']]], + ['simd_5fshuffle_5frotate_5fdown_64',['simd_shuffle_rotate_down',['../namespacemetal.html#a4bb203647a421032db47e73cd649841b',1,'metal']]], + ['simd_5fshuffle_5frotate_5fup_65',['simd_shuffle_rotate_up',['../namespacemetal.html#a729b22077d6c944491a6027c18ea80c9',1,'metal']]], + ['simd_5fshuffle_5fup_66',['simd_shuffle_up',['../namespacemetal.html#afe81c5fbde3f4890458b081909242c55',1,'metal']]], + ['simd_5fshuffle_5fxor_67',['simd_shuffle_xor',['../namespacemetal.html#a5017efc9605e069cfb507137cd1a1852',1,'metal']]], + ['simd_5fsum_68',['simd_sum',['../namespacemetal.html#a85181e37a00cb4a4217f1bb25389bce5',1,'metal']]], + ['simd_5fxor_69',['simd_xor',['../namespacemetal.html#a1308decbf2d5c33d34d6be523ea1c30f',1,'metal']]], + ['simple_5fiter_70',['simple_iter',['../classpocketfft_1_1detail_1_1simple__iter.html#a1e455c615825bebd5f1f62665027b398',1,'pocketfft::detail::simple_iter']]], + ['sin_71',['Sin',['../classmlx_1_1core_1_1_sin.html#a10d1ecc0ca96e79cdf55b57073d126ea',1,'mlx::core::Sin']]], + ['sin_72',['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_73',['sincos_2pibyn',['../classpocketfft_1_1detail_1_1sincos__2pibyn.html#a88518f2182d854c557edacd4ab8cbc40',1,'pocketfft::detail::sincos_2pibyn']]], + ['sinh_74',['Sinh',['../classmlx_1_1core_1_1_sinh.html#a4a4f6814d403c2ce5d6c574b0dca3c96',1,'mlx::core::Sinh']]], + ['sinh_75',['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_76',['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_77',['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_1array.html#a598f87161926d9e0b516860f0ea2c8f6',1,'mlx::core::array::size()'],['../structmlx_1_1core_1_1distributed_1_1_group.html#abd96a09217e3d1bcc522888257d22cef',1,'mlx::core::distributed::Group::size()']]], + ['size_5fof_78',['size_of',['../namespacemlx_1_1core.html#add4794cc0ffe5d717fc146084a235d95',1,'mlx::core']]], + ['slice_79',['Slice',['../classmlx_1_1core_1_1_slice.html#a8a38feb7bb6b72bdeebb83f053e2fd7f',1,'mlx::core::Slice']]], + ['slice_80',['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_81',['slice_gpu',['../namespacemlx_1_1core.html#a5ab133d67da9c16621f61690e27fccfd',1,'mlx::core']]], + ['slice_5fupdate_82',['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_83',['SliceUpdate',['../classmlx_1_1core_1_1_slice_update.html#aa30a7f22f557c56e1a2b5fcf44488990',1,'mlx::core::SliceUpdate']]], + ['softmax_84',['Softmax',['../classmlx_1_1core_1_1_softmax.html#a4ec686aac4e06f0dfe2cbd6801af40eb',1,'mlx::core::Softmax']]], + ['softmax_85',['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_86',['softmax_exp',['../kernels_2softmax_8h.html#a440d4031ee5e86159a4dd715e44a438b',1,'softmax.h']]], + ['softmax_5flooped_87',['softmax_looped',['../kernels_2softmax_8h.html#a8c47b0924ebfeebcca25f3dd17373276',1,'softmax.h']]], + ['softmax_5fsingle_5frow_88',['softmax_single_row',['../kernels_2softmax_8h.html#a815fe70f879f318e5d6e99acf043f52b',1,'softmax.h']]], + ['sort_89',['sort',['../struct_thread_sort.html#ad9ab3e6b47f7e9b91c0f3b773596986d',1,'ThreadSort::sort()'],['../struct_block_merge_sort.html#acc970f5eb963f7f2010f5ae5ea8b8bc0',1,'BlockMergeSort::sort()']]], + ['sort_90',['Sort',['../classmlx_1_1core_1_1_sort.html#a62943032dbd72e85ceb9b4b7211f4a44',1,'mlx::core::Sort']]], + ['sort_91',['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_92',['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_93',['Split',['../classmlx_1_1core_1_1_split.html#a897c746ecfdff5119cc5ae3f20499385',1,'mlx::core::Split']]], + ['split_94',['split',['../structmlx_1_1core_1_1distributed_1_1_group.html#abbf40f8979488806bc5bca9ecc4130e9',1,'mlx::core::distributed::Group::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_95',['Sqrt',['../classmlx_1_1core_1_1_sqrt.html#a6682a7c31ca427c9d2c5ddb6a479bf29',1,'mlx::core::Sqrt']]], + ['sqrt_96',['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_97',['Square',['../classmlx_1_1core_1_1_square.html#ab94e28d5c92e6febc1c74e525f730dc4',1,'mlx::core::Square']]], + ['square_98',['square',['../group__ops.html#ga1234e4c39cfa79f19d4bdb5b8ea4d45e',1,'mlx::core']]], + ['squeeze_99',['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_100',['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_101',['start_capture',['../namespacemlx_1_1core_1_1metal.html#aa47cb5651bf3b65c46ab216b7e504d77',1,'mlx::core::metal']]], + ['start_5fconcurrent_102',['start_concurrent',['../structmlx_1_1core_1_1metal_1_1_command_encoder.html#a48b548a0b15f9d1279c938a1c6167034',1,'mlx::core::metal::CommandEncoder']]], + ['status_103',['status',['../classmlx_1_1core_1_1array.html#add41975ba47933af8e74dde0cc646ec4',1,'mlx::core::array']]], + ['std_104',['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_105',['steel_conv',['../namespacemlx_1_1core_1_1metal.html#a92f1e559b1121d545746f81ff86eaca1',1,'mlx::core::metal']]], + ['steel_5fconv_5fgeneral_106',['steel_conv_general',['../namespacemlx_1_1core_1_1metal.html#a02edb6a90bdf30f4c9f0d6c25b0267b5',1,'mlx::core::metal']]], + ['steel_5fgemm_5ffused_107',['steel_gemm_fused',['../namespacemlx_1_1core_1_1metal.html#a17764366deed71c160fb26091400a803',1,'mlx::core::metal']]], + ['steel_5fgemm_5fmasked_108',['steel_gemm_masked',['../namespacemlx_1_1core_1_1metal.html#a962272ca73d26c08f76f706a128fd71f',1,'mlx::core::metal']]], + ['steel_5fgemm_5fsplitk_109',['steel_gemm_splitk',['../namespacemlx_1_1core_1_1metal.html#ad0dfd40ba7c09755711ceb731e57a5ac',1,'mlx::core::metal']]], + ['steel_5fmatmul_110',['steel_matmul',['../namespacemlx_1_1core.html#ab43a7633794498e1c6775cca829eb886',1,'mlx::core']]], + ['steel_5fmatmul_5fconv_5fgroups_111',['steel_matmul_conv_groups',['../namespacemlx_1_1core.html#afe8386cea0c7b846dc78649927fd0c75',1,'mlx::core']]], + ['stop_5fcapture_112',['stop_capture',['../namespacemlx_1_1core_1_1metal.html#ac90714424e36fb01e04550de69b8314f',1,'mlx::core::metal']]], + ['stop_5fgradient_113',['stop_gradient',['../group__ops.html#ga36bc28f1deb2fe668ca9ae1e447b6b1f',1,'mlx::core']]], + ['stopgradient_114',['StopGradient',['../classmlx_1_1core_1_1_stop_gradient.html#ac70d1ab819d04e00f76bc25aeebaf84f',1,'mlx::core::StopGradient']]], + ['store_5fresult_115',['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_116',['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_117',['Stream',['../structmlx_1_1core_1_1_stream.html#a7f0815ff4886da74cbbff5f93d82dd3e',1,'mlx::core::Stream']]], + ['stream_118',['stream',['../classmlx_1_1core_1_1_event.html#a2567b067cb4c7828962363844f67176e',1,'mlx::core::Event::stream()'],['../classmlx_1_1core_1_1_primitive.html#a46e6257397a662528f9f831842ac456a',1,'mlx::core::Primitive::stream()']]], + ['streamcontext_119',['StreamContext',['../structmlx_1_1core_1_1_stream_context.html#a89d803151e9d7dce29382aa83d5c6ef1',1,'mlx::core::StreamContext']]], + ['streamthread_120',['StreamThread',['../structmlx_1_1core_1_1scheduler_1_1_stream_thread.html#ac528109a11abcb82e6e221c5efa4493c',1,'mlx::core::scheduler::StreamThread']]], + ['stride_121',['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_122',['stride_in',['../classpocketfft_1_1detail_1_1multi__iter.html#ac947f03b1cfcb63436a7e61ff020a88c',1,'pocketfft::detail::multi_iter']]], + ['stride_5fout_123',['stride_out',['../classpocketfft_1_1detail_1_1multi__iter.html#a81d71a13bf0b85e556fbb9834167ecc7',1,'pocketfft::detail::multi_iter']]], + ['strided_5freduce_5fgeneral_5fdispatch_124',['strided_reduce_general_dispatch',['../namespacemlx_1_1core.html#aa0332c64ee9965f05026c30a0b778000',1,'mlx::core']]], + ['strided_5fscan_125',['strided_scan',['../kernels_2scan_8h.html#aef54ac73154fb9024eda760a9dfde607',1,'scan.h']]], + ['strides_126',['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_127',['submit',['../classpocketfft_1_1detail_1_1threading_1_1thread__pool.html#a8698d49e8f406cdb88006aac6a91f9a4',1,'pocketfft::detail::threading::thread_pool']]], + ['subtract_128',['Subtract',['../classmlx_1_1core_1_1_subtract.html#a834854757394f8de7082af65bf86ed9c',1,'mlx::core::Subtract']]], + ['subtract_129',['subtract',['../group__ops.html#ga196c240d3d0fcbb4713802c485e15133',1,'mlx::core']]], + ['sum_130',['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_131',['SVD',['../classmlx_1_1core_1_1_s_v_d.html#ae89ff583e34fa894cccb8e7a475ee6d1',1,'mlx::core::SVD']]], + ['svd_132',['svd',['../namespacemlx_1_1core_1_1linalg.html#a64364b880e99914cf47bf756fa8dbaf0',1,'mlx::core::linalg']]], + ['swapaxes_133',['swapaxes',['../group__ops.html#gabc46eed81ab6c6247903e4ec0c4ec1fb',1,'mlx::core']]], + ['swizzle_134',['swizzle',['../structmlx_1_1steel_1_1_block_swizzle.html#a98e558d63826d2aaa06d3e65a06d2760',1,'mlx::steel::BlockSwizzle']]], + ['synchronize_135',['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 new file mode 100644 index 000000000..47ee846a9 --- /dev/null +++ b/docs/build/html/search/functions_14.js @@ -0,0 +1,48 @@ +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_file_reader.html#aa47428656f87fb1ff89378a6041bf68f',1,'mlx::core::io::FileReader::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']]], + ['thread_5fcount_23',['thread_count',['../structpocketfft_1_1detail_1_1util.html#a3b012d5a19215bcd32cf6e228556fa87',1,'pocketfft::detail::util']]], + ['thread_5ffn_24',['thread_fn',['../structmlx_1_1core_1_1scheduler_1_1_stream_thread.html#a06a62c21c1174e4eb4d242e50aad7adf',1,'mlx::core::scheduler::StreamThread']]], + ['thread_5fid_25',['thread_id',['../namespacepocketfft_1_1detail_1_1threading.html#aebe85d6273d92c7d3728e2c621ccc82b',1,'pocketfft::detail::threading']]], + ['thread_5fmap_26',['thread_map',['../namespacepocketfft_1_1detail_1_1threading.html#a4fcf674db39f0e2c1c59d48491daed6e',1,'pocketfft::detail::threading']]], + ['thread_5fpool_27',['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()']]], + ['thread_5fswap_28',['thread_swap',['../kernels_2sort_8h.html#a6e8c2da4975a8001fd5ddf211a3058b7',1,'sort.h']]], + ['threefry2x32_5fhash_29',['threefry2x32_hash',['../namespacemlx_1_1core_1_1random.html#ac7e92c89a2bac1b0bed922a3d4c3c66b',1,'mlx::core::random']]], + ['tile_30',['tile',['../group__ops.html#gab105a57b9a4d84496fe1e4d60e13d361',1,'mlx::core']]], + ['to_5fbnns_5fdtype_31',['to_bnns_dtype',['../namespacemlx_1_1core.html#a7a4193f37b1de9c33c31d1da09c77edb',1,'mlx::core']]], + ['to_5fstream_32',['to_stream',['../namespacemlx_1_1core.html#a4734a596e57434492ddfe79f2cb9dbf9',1,'mlx::core']]], + ['topk_33',['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_34',['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_35',['TransformAdd',['../structmlx_1_1steel_1_1_transform_add.html#a7c1b7292910b74281e5296b3dac157ae',1,'mlx::steel::TransformAdd']]], + ['transformaxpby_36',['TransformAxpby',['../structmlx_1_1steel_1_1_transform_axpby.html#ad7d11c53de13646b725921391d15bbe9',1,'mlx::steel::TransformAxpby']]], + ['transpose_37',['Transpose',['../classmlx_1_1core_1_1_transpose.html#a1a9ba023584c61c7ac93d6dce536760a',1,'mlx::core::Transpose']]], + ['transpose_38',['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_39',['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={})']]], + ['tril_40',['tril',['../group__ops.html#ga83e0bb45dc770cf014531d873b78c5a2',1,'mlx::core']]], + ['triu_41',['triu',['../group__ops.html#gaa9df5917876eeb0cb28b7fa81f880412',1,'mlx::core']]], + ['trunc_42',['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_43',['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_44',['try_pop',['../classpocketfft_1_1detail_1_1threading_1_1concurrent__queue.html#aa3807d46a126d229f9054c779105ea43',1,'pocketfft::detail::threading::concurrent_queue']]] +]; diff --git a/docs/build/html/search/functions_15.js b/docs/build/html/search/functions_15.js new file mode 100644 index 000000000..40f99e8ab --- /dev/null +++ b/docs/build/html/search/functions_15.js @@ -0,0 +1,14 @@ +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']]], + ['unaryprimitive_6',['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_7',['Uniform',['../classmlx_1_1core_1_1_uniform.html#a626aa1091aa77b4a32c02290106b85e1',1,'mlx::core::Uniform']]], + ['uniform_8',['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={})']]], + ['update_9',['update',['../struct_and.html#a514334a0fd865164d9c83fc07d499783',1,'And::update()'],['../struct_or.html#a942628b1b3c6be9f486c15081a0cba8e',1,'Or::update()']]], + ['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 new file mode 100644 index 000000000..4b1ff9e7d --- /dev/null +++ b/docs/build/html/search/functions_16.js @@ -0,0 +1,14 @@ +var searchData= +[ + ['valid_0',['valid',['../classmlx_1_1core_1_1_event.html#a60f2883c2979e979d87b1d313a5a563e',1,'mlx::core::Event']]], + ['value_1',['value',['../classmlx_1_1core_1_1_event.html#afaa05ba97269bd5bfd9a2a665d4cc15b',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={})']]], + ['vectordescriptor_4',['vectorDescriptor',['../class_m_p_s_1_1_vector_descriptor.html#a2bac55ff9bffcebba0755abcca09ec15',1,'MPS::VectorDescriptor::vectorDescriptor(NS::UInteger length, NS::UInteger dataType)'],['../class_m_p_s_1_1_vector_descriptor.html#ab6534f1c9536613d8e78ed72fe12b275',1,'MPS::VectorDescriptor::vectorDescriptor(NS::UInteger length, NS::UInteger vectors, NS::UInteger vectorBytes, NS::UInteger dataType)']]], + ['view_5',['View',['../classmlx_1_1core_1_1_view.html#ad7eed156c308e9a29a8b41f965ec941e',1,'mlx::core::View']]], + ['view_6',['view',['../group__ops.html#ga3602aa91b7b124a0b41ec1b2137a1b02',1,'mlx::core']]], + ['vjp_7',['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_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_v_j_p.html#a00a15e67da68356512670913863008f8',1,'mlx::core::CustomVJP::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_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_8',['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_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_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_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_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_9',['vmap_replace',['../namespacemlx_1_1core_1_1detail.html#a31a5582530faea230eb8acafc0f7e154',1,'mlx::core::detail']]], + ['vmap_5ftrace_10',['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 new file mode 100644 index 000000000..5f2c249d5 --- /dev/null +++ b/docs/build/html/search/functions_17.js @@ -0,0 +1,11 @@ +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 new file mode 100644 index 000000000..285c51f9c --- /dev/null +++ b/docs/build/html/search/functions_18.js @@ -0,0 +1,5 @@ +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 new file mode 100644 index 000000000..0750436ac --- /dev/null +++ b/docs/build/html/search/functions_19.js @@ -0,0 +1,17 @@ +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']]], + ['_7eintracing_7',['~InTracing',['../structmlx_1_1core_1_1detail_1_1_in_tracing.html#a83d57d7fa63bcb0ff72080191d0f177a',1,'mlx::core::detail::InTracing']]], + ['_7eprimitive_8',['~Primitive',['../classmlx_1_1core_1_1_primitive.html#a29f70eb2d3b7e6c5fe52779c03f03777',1,'mlx::core::Primitive']]], + ['_7escheduler_9',['~Scheduler',['../classmlx_1_1core_1_1scheduler_1_1_scheduler.html#a6626c4a743a2b3004fc14042bc8b0edf',1,'mlx::core::scheduler::Scheduler']]], + ['_7estreamcontext_10',['~StreamContext',['../structmlx_1_1core_1_1_stream_context.html#ac5be1c576d22b3d0b0a6fcc7e6abe659',1,'mlx::core::StreamContext']]], + ['_7estreamthread_11',['~StreamThread',['../structmlx_1_1core_1_1scheduler_1_1_stream_thread.html#a71de50591388b6e2cc6c57827e1a1ad4',1,'mlx::core::scheduler::StreamThread']]], + ['_7ethread_5fpool_12',['~thread_pool',['../classpocketfft_1_1detail_1_1threading_1_1thread__pool.html#a68f71e79fa93379fcc5819e533b45472',1,'pocketfft::detail::threading::thread_pool']]], + ['_7eunaryprimitive_13',['~UnaryPrimitive',['../classmlx_1_1core_1_1_unary_primitive.html#ac0677ab99a5ca660ed6ab7902ea364de',1,'mlx::core::UnaryPrimitive']]] +]; diff --git a/docs/build/html/search/functions_2.js b/docs/build/html/search/functions_2.js new file mode 100644 index 000000000..c793616ae --- /dev/null +++ b/docs/build/html/search/functions_2.js @@ -0,0 +1,41 @@ +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#a63f3c166ea4916faa5d038668cfe16b1',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#a6437ced86c227e0807352ae6b16da796',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#afee8898eaceab6dd5e90357f4a0613c4',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#ad53410af1488f83d74035e3132fa16af',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_5ftwo_14',['binary_two',['../namespacemlx_1_1core_1_1metal.html#aed047eec38b030ec5f29b9da54abf8cb',1,'mlx::core::metal']]], + ['binary_5fvs_15',['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_5fvv_16',['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']]], + ['bits_17',['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_18',['bits_to_bfloat',['../struct___m_l_x___b_float16.html#a91ccb774773b65f8d4c1aea3f1c6e1ca',1,'_MLX_BFloat16']]], + ['bitwise_5fand_19',['bitwise_and',['../group__ops.html#ga752fd2707dabb05d0308ba3d55346ada',1,'mlx::core']]], + ['bitwise_5for_20',['bitwise_or',['../group__ops.html#ga8af4f22c08c11c4ffab7e3d45e0f3cd6',1,'mlx::core']]], + ['bitwise_5fxor_21',['bitwise_xor',['../group__ops.html#ga3188638fba3a60e264baf69956a1e08b',1,'mlx::core']]], + ['bitwisebinary_22',['BitwiseBinary',['../classmlx_1_1core_1_1_bitwise_binary.html#a0d8b3a94951621ffcdebc6fda748a172',1,'mlx::core::BitwiseBinary']]], + ['block_5fmasked_5fgemm_23',['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_24',['block_masked_mm',['../group__ops.html#ga6b76c8ea46b19e6866af155fa5910be6',1,'mlx::core']]], + ['block_5fsort_25',['block_sort',['../struct_kernel_merge_sort.html#a9cd55b08c2fd235254e23ed1585da5ae',1,'KernelMergeSort::block_sort()'],['../struct_kernel_multi_block_merge_sort.html#a322ed2eac315a561e0fd90af2fd577eb',1,'KernelMultiBlockMergeSort::block_sort()'],['../kernels_2sort_8h.html#ab31b85cfb26430a7bb04cab989a2cda0',1,'block_sort(const device T *inp, device U *out, const constant int &size_sorted_axis, const constant int &stride_sorted_axis, const constant int &stride_segment_axis, uint3 tid, uint3 lid): sort.h']]], + ['block_5fsort_5fnc_26',['block_sort_nc',['../kernels_2sort_8h.html#a4b06549a9678ccc9bf9901a5b8f238f5',1,'sort.h']]], + ['blockloader_27',['BlockLoader',['../structmlx_1_1steel_1_1_block_loader.html#a37aca066e63dff238865b5923a2d4335',1,'mlx::steel::BlockLoader']]], + ['blockmaskedmm_28',['BlockMaskedMM',['../classmlx_1_1core_1_1_block_masked_m_m.html#ad26509deb5306d0c5eb72477e9a57477',1,'mlx::core::BlockMaskedMM']]], + ['blockmma_29',['BlockMMA',['../structmlx_1_1steel_1_1_block_m_m_a.html#aa14406b7298456ac45d23dd3c4642dd8',1,'mlx::steel::BlockMMA']]], + ['bluestein_5ffft_30',['bluestein_fft',['../backend_2metal_2kernels_2fft_8h.html#a0abc609e9756475800e996775a96a87e',1,'fft.h']]], + ['broadcast_31',['Broadcast',['../classmlx_1_1core_1_1_broadcast.html#accbab8433c93e281608a268d11afaefb',1,'mlx::core::Broadcast']]], + ['broadcast_5farrays_32',['broadcast_arrays',['../group__ops.html#gab783890428b596f715dc7dd2057eae99',1,'mlx::core']]], + ['broadcast_5fshapes_33',['broadcast_shapes',['../namespacemlx_1_1core.html#a075e07def338cd9d815182d0e6a656c0',1,'mlx::core']]], + ['broadcast_5fto_34',['broadcast_to',['../group__ops.html#gad256e86cc1a6e6b3832e392baa90318d',1,'mlx::core']]], + ['buffer_35',['Buffer',['../classmlx_1_1core_1_1allocator_1_1_buffer.html#ac4fc2cc6aa1368cfb74aff329d9a1300',1,'mlx::core::allocator::Buffer']]], + ['buffer_36',['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']]], + ['build_5flib_5fname_37',['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 new file mode 100644 index 000000000..ae948641f --- /dev/null +++ b/docs/build/html/search/functions_3.js @@ -0,0 +1,90 @@ +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#a51c19db777f43943e4b35f25dd88d49d',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']]], + ['clear_5fcache_11',['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_12',['clip',['../group__ops.html#ga157cd7c23f9b306fee2e1eb2b9bf1dd8',1,'mlx::core']]], + ['cmplx_13',['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_14',['cndarr',['../classpocketfft_1_1detail_1_1cndarr.html#abf73f1b4ddcfb27d7f85cfa441607129',1,'pocketfft::detail::cndarr']]], + ['col_5freduce_5fgeneral_15',['col_reduce_general',['../reduce__col_8h.html#a3b14333e195c0a07b70069bebf85d5c3',1,'reduce_col.h']]], + ['col_5freduce_5fgeneral_5fno_5fatomics_16',['col_reduce_general_no_atomics',['../reduce__col_8h.html#aef03a4131c710ba8f94a666f58719eb7',1,'reduce_col.h']]], + ['col_5freduce_5fsmall_17',['col_reduce_small',['../reduce__col_8h.html#a7da96ffb66e1fda27bad2852c2285b94',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)']]], + ['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_5ferase_23',['compile_erase',['../namespacemlx_1_1core_1_1detail.html#a69eb76a14f845ca000f1ccb2edda0175',1,'mlx::core::detail']]], + ['compiled_24',['Compiled',['../classmlx_1_1core_1_1_compiled.html#a2d8cefff835c419a48a077d306b8e051',1,'mlx::core::Compiled']]], + ['compiled_5fallocate_5foutputs_25',['compiled_allocate_outputs',['../namespacemlx_1_1core.html#ab8c3c4fc05745f586de922c8266f4fce',1,'mlx::core']]], + ['compiled_5fcheck_5fcontiguity_26',['compiled_check_contiguity',['../namespacemlx_1_1core.html#a3b900ab319948c5a01a3ecd30a709027',1,'mlx::core']]], + ['complex128_5ft_27',['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_28',['complex64_t',['../structcomplex64__t.html#adbd392a5e92d31997380ad0a38be4be8',1,'complex64_t::complex64_t(float real, float imag)'],['../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_29',['complex_mul',['../radix_8h.html#a5bfc53b531214c9ce277bebc18aa67d6',1,'radix.h']]], + ['complex_5fmul_5fconj_30',['complex_mul_conj',['../radix_8h.html#a0e2dfd3d1dda09f47ccc64eec35629f3',1,'radix.h']]], + ['compute_5fstrided_5findices_31',['compute_strided_indices',['../struct_read_writer.html#a7c903fbb8b85a856ba5564d7df537cdf',1,'ReadWriter']]], + ['concatenate_32',['Concatenate',['../classmlx_1_1core_1_1_concatenate.html#acff07853de2d31faeec7c4ca40ce0888',1,'mlx::core::Concatenate']]], + ['concatenate_33',['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_34',['concatenate_gpu',['../namespacemlx_1_1core.html#a050299d0d366ca5c9d09d1004dcc3e7d',1,'mlx::core']]], + ['concurrentcontext_35',['ConcurrentContext',['../structmlx_1_1core_1_1metal_1_1_command_encoder_1_1_concurrent_context.html#aee044d7729739c96e845823f9ecc5174',1,'mlx::core::metal::CommandEncoder::ConcurrentContext']]], + ['conj_36',['conj',['../namespacepocketfft_1_1detail.html#a66d79051d502046a9b9f103e744dbad3',1,'pocketfft::detail']]], + ['conjugate_37',['Conjugate',['../classmlx_1_1core_1_1_conjugate.html#a627f9e6a8729fb3ffb3ca3228d007c87',1,'mlx::core::Conjugate']]], + ['conjugate_38',['conjugate',['../group__ops.html#ga5b596906bf8cdc8d97ed6ddc9aeb4c23',1,'mlx::core']]], + ['contiguous_5fscan_39',['contiguous_scan',['../kernels_2scan_8h.html#a1f9c197dc09641f3fbb2e886c85b0675',1,'scan.h']]], + ['conv_40',['conv',['../namespacemlx_1_1core_1_1metal.html#ab1704e853394c725668c06752ebb5c24',1,'mlx::core::metal']]], + ['conv1d_41',['conv1d',['../group__ops.html#ga30d47e08093c03a3676f235f9f559411',1,'mlx::core']]], + ['conv2d_42',['conv2d',['../group__ops.html#ga73b02833229678786e7f302d458d5a83',1,'mlx::core']]], + ['conv2dinputblockloadergeneral_43',['Conv2DInputBlockLoaderGeneral',['../structmlx_1_1steel_1_1_conv2_d_input_block_loader_general.html#a1d83af561a483432bf8dcb42e734b23b',1,'mlx::steel::Conv2DInputBlockLoaderGeneral']]], + ['conv2dinputblockloaderlargefilter_44',['Conv2DInputBlockLoaderLargeFilter',['../structmlx_1_1steel_1_1_conv2_d_input_block_loader_large_filter.html#a8755116a535539744e4947bc69f9c50f',1,'mlx::steel::Conv2DInputBlockLoaderLargeFilter']]], + ['conv2dinputblockloadersmallchannels_45',['Conv2DInputBlockLoaderSmallChannels',['../structmlx_1_1steel_1_1_conv2_d_input_block_loader_small_channels.html#ab9fd3fdeab94470dde3326f1dd5c455a',1,'mlx::steel::Conv2DInputBlockLoaderSmallChannels']]], + ['conv2dinputblockloadersmallfilter_46',['Conv2DInputBlockLoaderSmallFilter',['../structmlx_1_1steel_1_1_conv2_d_input_block_loader_small_filter.html#a0a2cbf57c51cd928722e3f06aafcf933',1,'mlx::steel::Conv2DInputBlockLoaderSmallFilter']]], + ['conv2dweightblockloader_47',['Conv2DWeightBlockLoader',['../structmlx_1_1steel_1_1_conv2_d_weight_block_loader.html#a9a7dca3512b64cffb6eac305d795831c',1,'mlx::steel::Conv2DWeightBlockLoader']]], + ['conv2dweightblockloadergeneral_48',['Conv2DWeightBlockLoaderGeneral',['../structmlx_1_1steel_1_1_conv2_d_weight_block_loader_general.html#ad0550fabbdc9297559381a5b488e9af1',1,'mlx::steel::Conv2DWeightBlockLoaderGeneral']]], + ['conv2dweightblockloadersmallchannels_49',['Conv2DWeightBlockLoaderSmallChannels',['../structmlx_1_1steel_1_1_conv2_d_weight_block_loader_small_channels.html#ae1806ea1c19713819dee83a38ab35fa6',1,'mlx::steel::Conv2DWeightBlockLoaderSmallChannels']]], + ['conv3d_50',['conv3d',['../group__ops.html#ga6e9907d2f14dc4803e4306b3dbc4b3ca',1,'mlx::core']]], + ['conv_5fgeneral_51',['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={})']]], + ['convolution_52',['Convolution',['../classmlx_1_1core_1_1_convolution.html#a6f1de77b719bb13217b0d8c64cabb8ef',1,'mlx::core::Convolution']]], + ['copy_53',['Copy',['../classmlx_1_1core_1_1_copy.html#a6243e044af119105ffaaed7d405cd584',1,'mlx::core::Copy']]], + ['copy_54',['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_55',['copy_g',['../metal_2kernels_2copy_8h.html#a1ea80f8edb842dd0ed8ffe553a2238b2',1,'copy.h']]], + ['copy_5fg_5fnd_56',['copy_g_nd',['../metal_2kernels_2copy_8h.html#a07336a7a024125b4f6d3e8556d04058f',1,'copy.h']]], + ['copy_5fg_5fnd1_57',['copy_g_nd1',['../metal_2kernels_2copy_8h.html#aba4530a7db6a61ca36f50e4f5e58fb77',1,'copy.h']]], + ['copy_5fg_5fnd2_58',['copy_g_nd2',['../metal_2kernels_2copy_8h.html#aee678c7c31119f3e609685589f37490c',1,'copy.h']]], + ['copy_5fg_5fnd3_59',['copy_g_nd3',['../metal_2kernels_2copy_8h.html#a821f8f3f3891159a295c66fc25aed1ff',1,'copy.h']]], + ['copy_5fgg_60',['copy_gg',['../metal_2kernels_2copy_8h.html#a9fd1d98f0dcf976089754cd47f55784d',1,'copy.h']]], + ['copy_5fgg_5fnd_61',['copy_gg_nd',['../metal_2kernels_2copy_8h.html#a3197d34e9c68e7059419ae0635667059',1,'copy.h']]], + ['copy_5fgg_5fnd1_62',['copy_gg_nd1',['../metal_2kernels_2copy_8h.html#a3278d9c999718bee3ccbe2922f501bf1',1,'copy.h']]], + ['copy_5fgg_5fnd2_63',['copy_gg_nd2',['../metal_2kernels_2copy_8h.html#a3e2d3cc7f34f56170409b6735f51a950',1,'copy.h']]], + ['copy_5fgg_5fnd3_64',['copy_gg_nd3',['../metal_2kernels_2copy_8h.html#a59f43b5bffed936d7559ceb06a10aabd',1,'copy.h']]], + ['copy_5fgpu_65',['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_66',['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_67',['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_68',['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_69',['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_70',['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_71',['copy_s',['../metal_2kernels_2copy_8h.html#aef09f9b9475345b1bba121d037d222ea',1,'copy.h']]], + ['copy_5fshared_5fbuffer_72',['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_73',['copy_v',['../metal_2kernels_2copy_8h.html#ae26a13e0c8e6c15f7b10078e65970659',1,'copy.h']]], + ['cos_74',['Cos',['../classmlx_1_1core_1_1_cos.html#a2acb9fcf0901462189c476756fd99995',1,'mlx::core::Cos']]], + ['cos_75',['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_76',['Cosh',['../classmlx_1_1core_1_1_cosh.html#a44e8ac2e09a55ec32e9dc6641eedc8f1',1,'mlx::core::Cosh']]], + ['cosh_77',['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_78',['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_79',['cost_guess',['../structpocketfft_1_1detail_1_1util.html#ad3d874bc3fb0048df2270779a15d4bd0',1,'pocketfft::detail::util']]], + ['count_5fdown_80',['count_down',['../classpocketfft_1_1detail_1_1threading_1_1latch.html#a81d6597189b40410e35f3cd653fd1342',1,'pocketfft::detail::threading::latch']]], + ['cummax_81',['cummax',['../group__ops.html#gaee37cac8476e8f8d666bcded5bc59143',1,'mlx::core']]], + ['cummin_82',['cummin',['../group__ops.html#ga19c1bf6929fe8d66b9cd408946aea6a8',1,'mlx::core']]], + ['cumprod_83',['cumprod',['../group__ops.html#ga0d71dfbc14ef3ed564b0c5ee26af680f',1,'mlx::core']]], + ['cumsum_84',['cumsum',['../group__ops.html#gaddc825a5c173e195ab0fda83ad630420',1,'mlx::core']]], + ['custom_85',['Custom',['../classmlx_1_1core_1_1fast_1_1_custom.html#a4186fea23f7156c38960426821fca313',1,'mlx::core::fast::Custom']]], + ['customvjp_86',['CustomVJP',['../classmlx_1_1core_1_1_custom_v_j_p.html#aefdce05534ff6159f661a9768aadb511',1,'mlx::core::CustomVJP']]] +]; diff --git a/docs/build/html/search/functions_4.js b/docs/build/html/search/functions_4.js new file mode 100644 index 000000000..e95f0a5eb --- /dev/null +++ b/docs/build/html/search/functions_4.js @@ -0,0 +1,37 @@ +var searchData= +[ + ['data_0',['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_1',['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_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']]], + ['default_5f_6',['default_',['../classmlx_1_1core_1_1random_1_1_key_sequence.html#ab5993daeed822c6b970caddab7e3fd90',1,'mlx::core::random::KeySequence']]], + ['default_5fdevice_7',['default_device',['../namespacemlx_1_1core.html#a0196171cfe6ee2953113abce597dc815',1,'mlx::core']]], + ['default_5fstream_8',['default_stream',['../namespacemlx_1_1core.html#ac198b7e282957c724c84a435e8f1215e',1,'mlx::core']]], + ['define_5fprint_9',['DEFINE_PRINT',['../classmlx_1_1core_1_1distributed_1_1_all_gather.html#a8af1e90d4aa56f31ec40ad152ebd2421',1,'mlx::core::distributed::AllGather::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()']]], + ['degrees_10',['degrees',['../group__ops.html#ga3a70569b50e1083c5ded199d73fb960c',1,'mlx::core']]], + ['denorm_5fmin_11',['denorm_min',['../structmetal_1_1__numeric__limits__impl_3_01bfloat16__t_01_4.html#a6a9dbcba4dd79cad50876dda506b9eed',1,'metal::_numeric_limits_impl< bfloat16_t >']]], + ['depends_12',['Depends',['../classmlx_1_1core_1_1_depends.html#a4ccb792c99f5d8d133d3fac29f7d3f62',1,'mlx::core::Depends']]], + ['depends_13',['depends',['../group__ops.html#gac4a51a68fbe1725436b026d2fbb95759',1,'mlx::core']]], + ['dequantize_14',['dequantize',['../group__ops.html#gabff758a5c1ce32ad7e8b78aba0164077',1,'mlx::core']]], + ['detach_15',['detach',['../classmlx_1_1core_1_1array.html#a84948c29df8c957904919c8602692bd2',1,'mlx::core::array']]], + ['device_16',['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_17',['device',['../class_m_p_s_1_1_kernel.html#a46793d1c80a4df313c067103fcae6024',1,'MPS::Kernel::device()'],['../classmlx_1_1core_1_1_primitive.html#a8ae61e3289c4134232a69295268f8261',1,'mlx::core::Primitive::device()'],['../namespacemlx_1_1core_1_1metal.html#a910797b74824e6ee576fbb533dee8b57',1,'mlx::core::metal::device(mlx::core::Device)']]], + ['device_5finfo_18',['device_info',['../namespacemlx_1_1core_1_1metal.html#a6ad19c44efabb7423f973407926ead61',1,'mlx::core::metal']]], + ['diag_19',['diag',['../group__ops.html#ga11af511875640e1fa88e0ca87e199344',1,'mlx::core']]], + ['diagonal_20',['diagonal',['../group__ops.html#ga9236b085a88ead3128ed8079d009cac6',1,'mlx::core']]], + ['disable_5fcompile_21',['disable_compile',['../namespacemlx_1_1core.html#a5f5fea955057bb3842b271b037909e66',1,'mlx::core']]], + ['dispatchthreadgroups_22',['dispatchThreadgroups',['../structmlx_1_1core_1_1metal_1_1_command_encoder.html#a74bcd8e35f80f5a62db48c4a2bb0173e',1,'mlx::core::metal::CommandEncoder']]], + ['dispatchthreads_23',['dispatchThreads',['../structmlx_1_1core_1_1metal_1_1_command_encoder.html#a1e41477f2f489e38499f7830a91c9810',1,'mlx::core::metal::CommandEncoder']]], + ['distprimitive_24',['DistPrimitive',['../classmlx_1_1core_1_1distributed_1_1_dist_primitive.html#a9e4b0b92776aca0c1331450ae4955cef',1,'mlx::core::distributed::DistPrimitive']]], + ['divide_25',['Divide',['../classmlx_1_1core_1_1_divide.html#a62fc71e8998be65ff18285dbbd21eedb',1,'mlx::core::Divide']]], + ['divide_26',['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_27',['DivMod',['../classmlx_1_1core_1_1_div_mod.html#a859e3b6149cdceab1c7ccfd2246fb826',1,'mlx::core::DivMod']]], + ['divmod_28',['divmod',['../group__ops.html#gaa30ebc0a8376dbc3f7e46a47052b5894',1,'mlx::core']]], + ['dst_29',['dst',['../namespacepocketfft_1_1detail.html#add0f231fc8a1ce01b90a90faeebcb4eb',1,'pocketfft::detail']]], + ['dtype_30',['Dtype',['../structmlx_1_1core_1_1_dtype.html#aec17f0a4a51729e5ac40b62f0aa765d1',1,'mlx::core::Dtype']]], + ['dtype_31',['dtype',['../classmlx_1_1core_1_1array.html#ae29e7d6fbfbea1e5e321a8d1ea3cfacd',1,'mlx::core::array']]], + ['dtype_5ffrom_5farray_5fprotocol_32',['dtype_from_array_protocol',['../namespacemlx_1_1core.html#a14e0dfe96b41a04be91553799eb07594',1,'mlx::core']]], + ['dtype_5fto_5farray_5fprotocol_33',['dtype_to_array_protocol',['../namespacemlx_1_1core.html#a80509820694d2f74f0d262d13a90774b',1,'mlx::core']]] +]; diff --git a/docs/build/html/search/functions_5.js b/docs/build/html/search/functions_5.js new file mode 100644 index 000000000..0ae1bf9d3 --- /dev/null +++ b/docs/build/html/search/functions_5.js @@ -0,0 +1,42 @@ +var searchData= +[ + ['elem_5fto_5floc_0',['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#a37e00d94751710e81c9632bca2f91e51',1,'elem_to_loc(uint3 elem, constant const int *shape, constant const stride_t *strides, int ndim): utils.h']]], + ['elem_5fto_5floc_5f1_1',['elem_to_loc_1',['../backend_2metal_2kernels_2utils_8h.html#a196a07022b812b241d4c06192c0fa83d',1,'utils.h']]], + ['elem_5fto_5floc_5f2_2',['elem_to_loc_2',['../backend_2metal_2kernels_2utils_8h.html#ad6c45cacca97899cd362df49c06fea79',1,'utils.h']]], + ['elem_5fto_5floc_5f2_5fnd_3',['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_4',['elem_to_loc_3',['../backend_2metal_2kernels_2utils_8h.html#a2c34ed54714c69e6e1b44344f9e6e330',1,'utils.h']]], + ['elem_5fto_5floc_5f3_5fnd_5',['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_6',['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_7',['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_8',['empty',['../classpocketfft_1_1detail_1_1threading_1_1concurrent__queue.html#a1269e5da40c3f5145c895cee3641879a',1,'pocketfft::detail::threading::concurrent_queue']]], + ['enable_5fcompile_9',['enable_compile',['../namespacemlx_1_1core.html#a1983a2466bff3bae4d23cf34bd0946c9',1,'mlx::core']]], + ['encodetocommandbuffer_10',['encodeToCommandBuffer',['../class_m_p_s_1_1_matrix_multiplication.html#ad30480456e66b79fa47086a3411c4921',1,'MPS::MatrixMultiplication::encodeToCommandBuffer()'],['../class_m_p_s_1_1_matrix_vector_multiplication.html#adefd2759c843035c73da2d9aad8ffb8a',1,'MPS::MatrixVectorMultiplication::encodeToCommandBuffer()']]], + ['end_11',['end',['../classmlx_1_1core_1_1array.html#a5daf64552fb450825c9b382f3a5fa2d4',1,'mlx::core::array']]], + ['end_5fencoding_12',['end_encoding',['../classmlx_1_1core_1_1metal_1_1_device.html#a60689f97347811b27e8c5ca23e0372bf',1,'mlx::core::metal::Device']]], + ['enqueue_13',['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_14',['epsilon',['../structmetal_1_1__numeric__limits__impl_3_01bfloat16__t_01_4.html#a96c4197e3076f0aa9065370b8ece49ca',1,'metal::_numeric_limits_impl< bfloat16_t >']]], + ['equal_15',['Equal',['../classmlx_1_1core_1_1_equal.html#a4af81cf2dd071db5bbf8ce1df95fdf36',1,'mlx::core::Equal']]], + ['equal_16',['equal',['../group__ops.html#ga33638dc3a9972dd02be12d0eb85f9bde',1,'mlx::core']]], + ['erf_17',['Erf',['../classmlx_1_1core_1_1_erf.html#a702f76f848928d8d7d3d0881ac6e4c82',1,'mlx::core::Erf']]], + ['erf_18',['erf',['../erf_8h.html#a6ce199ee56105c67adbf8c48c019a8b2',1,'erf(): erf.h'],['../group__ops.html#ga292a335240fd5d6d625fb7a340ff5eb0',1,'mlx::core::erf()']]], + ['erfinv_19',['ErfInv',['../classmlx_1_1core_1_1_erf_inv.html#a5d0279247b67da4592311559f04e1478',1,'mlx::core::ErfInv']]], + ['erfinv_20',['erfinv',['../erf_8h.html#a1846e0d683c7aff826bb32addcc3b885',1,'erfinv(): erf.h'],['../group__ops.html#ga76fb9062c64264e34d2e07013390557c',1,'mlx::core::erfinv()']]], + ['eval_21',['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_22',['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_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_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_v_j_p.html#acd8488aa60e8be7afc91b3ce3f555f14',1,'mlx::core::CustomVJP::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_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_23',['eval_gpu',['../classmlx_1_1core_1_1distributed_1_1_dist_primitive.html#a611ac8dfd9b4f49617ee8976ff3e15e9',1,'mlx::core::distributed::DistPrimitive::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_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_v_j_p.html#ac7208e2e77ab11d8ef054cf31f9c3d99',1,'mlx::core::CustomVJP::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_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_24',['Event',['../classmlx_1_1core_1_1_event.html#a98f1f98d6cac43ddb682522acdce63d5',1,'mlx::core::Event::Event()'],['../classmlx_1_1core_1_1_event.html#a13e4835f2ffb2cc22e29148a448ea184',1,'mlx::core::Event::Event(const Stream &steam)']]], + ['event_25',['event',['../classmlx_1_1core_1_1array.html#a0a8e4d6e67e739a712876bb36f88f9bf',1,'mlx::core::array']]], + ['exec_26',['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_27',['exec_r',['../classpocketfft_1_1detail_1_1fftblue.html#a642b4aff0485c7d9c8794161a1464f00',1,'pocketfft::detail::fftblue']]], + ['exp_28',['Exp',['../classmlx_1_1core_1_1_exp.html#a1d0a618cbb91ab29ef53b57ff6ed6e06',1,'mlx::core::Exp']]], + ['exp_29',['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_30',['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_31',['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_32',['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_33',['Expm1',['../classmlx_1_1core_1_1_expm1.html#a47c2a1b2a4ef6bb07ba77c55ddddaec2',1,'mlx::core::Expm1']]], + ['expm1_34',['expm1',['../group__ops.html#ga54ca54f06bfb2be15b163a5209e2a0f0',1,'mlx::core']]], + ['expm1f_35',['expm1f',['../expm1f_8h.html#a87f66d30e185950f42ce3641783cdc40',1,'expm1f.h']]], + ['expm1f_5fscaled_5funchecked_36',['expm1f_scaled_unchecked',['../expm1f_8h.html#adf20e03405fba634ca8d01acac24592e',1,'expm1f.h']]], + ['export_5fto_5fdot_37',['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_38',['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 new file mode 100644 index 000000000..7f5261c81 --- /dev/null +++ b/docs/build/html/search/functions_6.js @@ -0,0 +1,34 @@ +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={})']]], + ['filereader_10',['FileReader',['../classmlx_1_1core_1_1io_1_1_file_reader.html#a4ffeb757e33a1776f744eaabcc754118',1,'mlx::core::io::FileReader::FileReader(std::ifstream is)'],['../classmlx_1_1core_1_1io_1_1_file_reader.html#a77a9664157f906be6795ddcbbf7b7be5',1,'mlx::core::io::FileReader::FileReader(std::string file_path)']]], + ['filewriter_11',['FileWriter',['../classmlx_1_1core_1_1io_1_1_file_writer.html#aae08975a683342b282d25fb972857c72',1,'mlx::core::io::FileWriter::FileWriter(std::ofstream os)'],['../classmlx_1_1core_1_1io_1_1_file_writer.html#a40b241ad540ee4aadc3a19a6b1ccfb4d',1,'mlx::core::io::FileWriter::FileWriter(std::string file_path)']]], + ['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 new file mode 100644 index 000000000..f366d9ebb --- /dev/null +++ b/docs/build/html/search/functions_7.js @@ -0,0 +1,67 @@ +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#a1a4a98a3290404e95bd2aeb16d160989',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']]], + ['general_5fc2r_12',['general_c2r',['../namespacepocketfft_1_1detail.html#ac8ee38e8d8bcda875c99eeaf567550fc',1,'pocketfft::detail']]], + ['general_5fnd_13',['general_nd',['../namespacepocketfft_1_1detail.html#ab47f52551920af5eb9f57fbbded0f4f0',1,'pocketfft::detail']]], + ['general_5fr2c_14',['general_r2c',['../namespacepocketfft_1_1detail.html#a055a39b0a337ca12217717196eb92fed',1,'pocketfft::detail']]], + ['get_5factive_5fmemory_15',['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_16',['get_arange_kernel',['../namespacemlx_1_1core.html#a76f614e9956a6ca05a9be4db5a483446',1,'mlx::core']]], + ['get_5fbinary_5fkernel_17',['get_binary_kernel',['../namespacemlx_1_1core.html#aec97852a7d8938407122d21e78d66f5f',1,'mlx::core']]], + ['get_5fbinary_5ftwo_5fkernel_18',['get_binary_two_kernel',['../namespacemlx_1_1core.html#a0a5effc3e1cfd4123b9a63c08e947e45',1,'mlx::core']]], + ['get_5fcache_5fmemory_19',['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_20',['get_colocated_mtllib_path',['../namespacemlx_1_1core_1_1metal.html#a5fd6ba2040e53a254b9d71ae7ebd315f',1,'mlx::core::metal']]], + ['get_5fcommand_5fbuffer_21',['get_command_buffer',['../classmlx_1_1core_1_1metal_1_1_device.html#a5fe3970fbe92ccc55fce4241ffbe5210',1,'mlx::core::metal::Device']]], + ['get_5fcommand_5fbuffer_5fops_22',['get_command_buffer_ops',['../classmlx_1_1core_1_1metal_1_1_device.html#a064e1cb6a16de7a0619f6447622350f8',1,'mlx::core::metal::Device']]], + ['get_5fcommand_5fencoder_23',['get_command_encoder',['../classmlx_1_1core_1_1metal_1_1_device.html#affa682ef612def4890f5152f81ffb7e6',1,'mlx::core::metal::Device']]], + ['get_5fcopy_5fkernel_24',['get_copy_kernel',['../namespacemlx_1_1core.html#a05a220cff45f12439fde775983c6df78',1,'mlx::core']]], + ['get_5fdefault_5fstream_25',['get_default_stream',['../classmlx_1_1core_1_1scheduler_1_1_scheduler.html#af4e49f6271df08bfe7ed7ba7cd960213',1,'mlx::core::scheduler::Scheduler']]], + ['get_5ffft_5fkernel_26',['get_fft_kernel',['../namespacemlx_1_1core.html#a4d8800bb9892b04684c78e3e5c760983',1,'mlx::core']]], + ['get_5ffunction_27',['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_5fkernel_28',['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_29',['get_kernel_preamble',['../compiled__preamble_8h.html#a1dfa17a0369fb90ff615c7461f5013f3',1,'compiled_preamble.h']]], + ['get_5flibrary_30',['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_31',['get_mb_sort_kernel',['../namespacemlx_1_1core.html#afb57825bb763050cc9a9d194aa41ac36',1,'mlx::core']]], + ['get_5fname_32',['get_name',['../structmlx_1_1core_1_1_node_namer.html#a1690dd38de288c0aee2bb53156eb770e',1,'mlx::core::NodeNamer']]], + ['get_5fpeak_5fmemory_33',['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_34',['get_plan',['../namespacepocketfft_1_1detail.html#ab24cdb6118901f4d3c8df06ef0f8390b',1,'pocketfft::detail']]], + ['get_5fpool_35',['get_pool',['../namespacepocketfft_1_1detail_1_1threading.html#a7ec2b3f99232bd0f15f7b022c59d139a',1,'pocketfft::detail::threading']]], + ['get_5freduce_5finit_5fkernel_36',['get_reduce_init_kernel',['../namespacemlx_1_1core.html#a51c4bb09230348bd0252e22bfdc9bc89',1,'mlx::core']]], + ['get_5freduce_5fkernel_37',['get_reduce_kernel',['../namespacemlx_1_1core.html#a5d6843dcbdbd4d12851fc2edbafbc9e6',1,'mlx::core']]], + ['get_5fscan_5fkernel_38',['get_scan_kernel',['../namespacemlx_1_1core.html#aeefaff208444d3fa61ecc0946fe1de5f',1,'mlx::core']]], + ['get_5fshape_39',['get_shape',['../namespacemlx_1_1core.html#aab0d8a256957984acc1e3615c65c898e',1,'mlx::core']]], + ['get_5fsoftmax_5fkernel_40',['get_softmax_kernel',['../namespacemlx_1_1core.html#a35a412f688d79eb47e42d20a7c8650ee',1,'mlx::core']]], + ['get_5fsort_5fkernel_41',['get_sort_kernel',['../namespacemlx_1_1core.html#a84ebe6275218070f0ea320f126f64e22',1,'mlx::core']]], + ['get_5fsteel_5fconv_5fgeneral_5fkernel_42',['get_steel_conv_general_kernel',['../namespacemlx_1_1core.html#abce2b67044ee06a7bbe7a91ec7c8c48d',1,'mlx::core']]], + ['get_5fsteel_5fconv_5fkernel_43',['get_steel_conv_kernel',['../namespacemlx_1_1core.html#adce79d220672f5f3c65cc31d145ca9c4',1,'mlx::core']]], + ['get_5fsteel_5fgemm_5ffused_5fkernel_44',['get_steel_gemm_fused_kernel',['../namespacemlx_1_1core.html#a84fa8e0aee321a9d614433a0b933103b',1,'mlx::core']]], + ['get_5fsteel_5fgemm_5fmasked_5fkernel_45',['get_steel_gemm_masked_kernel',['../namespacemlx_1_1core.html#ab5f60614e965144b451930fdf935e08d',1,'mlx::core']]], + ['get_5fsteel_5fgemm_5fsplitk_5faccum_5fkernel_46',['get_steel_gemm_splitk_accum_kernel',['../namespacemlx_1_1core.html#a195b86cad5bb99aa1bcd23952305af6b',1,'mlx::core']]], + ['get_5fsteel_5fgemm_5fsplitk_5fkernel_47',['get_steel_gemm_splitk_kernel',['../namespacemlx_1_1core.html#af48c6f2f72b61dbd6766e4f5fea85df5',1,'mlx::core']]], + ['get_5fternary_5fkernel_48',['get_ternary_kernel',['../namespacemlx_1_1core.html#a266558f20a72c439396ecd492a08d65f',1,'mlx::core']]], + ['get_5ftwiddle_49',['get_twiddle',['../radix_8h.html#ac5cf950316b9445296ee9ecfc56a56bd',1,'radix.h']]], + ['get_5ftype_5fstring_50',['get_type_string',['../namespacemlx_1_1core.html#af776fd91dd60594dcfebbafd17f19068',1,'mlx::core']]], + ['get_5funary_5fkernel_51',['get_unary_kernel',['../namespacemlx_1_1core.html#accf153854ef650d6a6633775d8a70612',1,'mlx::core']]], + ['gguf_5fload_5fquantized_52',['gguf_load_quantized',['../namespacemlx_1_1core.html#a65dd68163bdaef3631e3724327782498',1,'mlx::core']]], + ['good_53',['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_file_reader.html#a4ecb046dfa7dab346d096adab3a1c318',1,'mlx::core::io::FileReader::good()'],['../classmlx_1_1core_1_1io_1_1_file_writer.html#a9ec4934b26fb358d699ddce1482b2d54',1,'mlx::core::io::FileWriter::good()']]], + ['good_5fsize_5fcmplx_54',['good_size_cmplx',['../structpocketfft_1_1detail_1_1util.html#a758e00d242a1b7eda8f9f0c21f35c624',1,'pocketfft::detail::util']]], + ['good_5fsize_5freal_55',['good_size_real',['../structpocketfft_1_1detail_1_1util.html#a173da7d5929ded86fffcebcfdc5086aa',1,'pocketfft::detail::util']]], + ['grad_56',['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_57',['Greater',['../classmlx_1_1core_1_1_greater.html#a1d5992a66c020cd97a70e8e3d8cd1a1b',1,'mlx::core::Greater']]], + ['greater_58',['greater',['../group__ops.html#gaf4ec7bfc1ad13b891f1f3ef1772ef04d',1,'mlx::core']]], + ['greater_5fequal_59',['greater_equal',['../group__ops.html#ga7153071bcfff6faad21332163fb9a430',1,'mlx::core']]], + ['greaterequal_60',['GreaterEqual',['../classmlx_1_1core_1_1_greater_equal.html#a19a3c49d5a9b40e17da0e56ef6908527',1,'mlx::core::GreaterEqual']]], + ['group_61',['group',['../classmlx_1_1core_1_1distributed_1_1_dist_primitive.html#a8831cb61ac633431b78b5fb99c0ea9ff',1,'mlx::core::distributed::DistPrimitive']]], + ['group_62',['Group',['../structmlx_1_1core_1_1distributed_1_1_group.html#a6f84accc8d6734989b2757bf6cdd0152',1,'mlx::core::distributed::Group']]], + ['gumbel_63',['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 new file mode 100644 index 000000000..81c4b660c --- /dev/null +++ b/docs/build/html/search/functions_8.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['has_5fprimitive_0',['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 new file mode 100644 index 000000000..59d12e2bc --- /dev/null +++ b/docs/build/html/search/functions_9.js @@ -0,0 +1,42 @@ +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',['../class_m_p_s_1_1_matrix.html#a2398221610a7c610c85cf7fb3f18281b',1,'MPS::Matrix::init(MTL::Buffer *buffer, MatrixDescriptor *descriptor)'],['../class_m_p_s_1_1_matrix.html#a40771ae44d119abd56bd32b7cc38feda',1,'MPS::Matrix::init(const MTL::Buffer *buffer, MatrixDescriptor *descriptor)'],['../class_m_p_s_1_1_matrix_multiplication.html#a35b1a908807eb8ececd0241531dea823',1,'MPS::MatrixMultiplication::init()'],['../class_m_p_s_1_1_vector.html#a2ea0c0575489e4689d19640d1da1b179',1,'MPS::Vector::init(MTL::Buffer *buffer, VectorDescriptor *descriptor)'],['../class_m_p_s_1_1_vector.html#aa95af1607e9978c2757f8a5503a95244',1,'MPS::Vector::init(const MTL::Buffer *buffer, VectorDescriptor *descriptor)'],['../class_m_p_s_1_1_matrix_vector_multiplication.html#a62c065490befe32c6a59b888b1347c80',1,'MPS::MatrixVectorMultiplication::init()'],['../namespacemlx_1_1core_1_1distributed.html#a33633c058c7ec82cca4f237243c6810d',1,'mlx::core::distributed::init()']]], + ['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#a4fcdda66a176b520fe4655ab91862aad',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_5fbig_5fendian_22',['is_big_endian',['../namespacemlx_1_1core.html#a625ed440df3fa57318017c1f2c589efe',1,'mlx::core']]], + ['is_5fdonatable_23',['is_donatable',['../classmlx_1_1core_1_1array.html#a4677a404b5d191af20b52649225de087',1,'mlx::core::array']]], + ['is_5fequivalent_24',['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_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_25',['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_file_reader.html#a97ccdbd79886d9b95b32e5cd4741d150',1,'mlx::core::io::FileReader::is_open()'],['../classmlx_1_1core_1_1io_1_1_file_writer.html#ad5d2ee671a81700cb1658c41309d6676',1,'mlx::core::io::FileWriter::is_open()']]], + ['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']]], + ['isinf_32',['isinf',['../group__ops.html#ga8fc238d5e5d1153e69da8b36015d9844',1,'mlx::core']]], + ['isnan_33',['isnan',['../namespacemetal.html#a83320ba983d90dd1fa5847b6940dc0bb',1,'metal::isnan()'],['../group__ops.html#ga175592792471b0ffb45196dca4711ba6',1,'mlx::core::isnan(const array &a, StreamOrDevice s={})']]], + ['isneginf_34',['isneginf',['../group__ops.html#ga1940523da381ed7be50656a3bc465ff3',1,'mlx::core']]], + ['isposinf_35',['isposinf',['../group__ops.html#gad80f7c4a58c12b6cb30a8b9a73008993',1,'mlx::core']]], + ['issubdtype_36',['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_37',['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_38',['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 new file mode 100644 index 000000000..623db48d1 --- /dev/null +++ b/docs/build/html/search/functions_a.js @@ -0,0 +1,4 @@ +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_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_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_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 new file mode 100644 index 000000000..293c55849 --- /dev/null +++ b/docs/build/html/search/functions_b.js @@ -0,0 +1,6 @@ +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 new file mode 100644 index 000000000..f1088658e --- /dev/null +++ b/docs/build/html/search/functions_c.js @@ -0,0 +1,44 @@ +var searchData= +[ + ['label_0',['label',['../class_m_p_s_1_1_kernel.html#aaf646bce46266bc11c419464ec72cdfe',1,'MPS::Kernel::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_file_reader.html#a7415da4cb14c328ed07901ff1c266221',1,'mlx::core::io::FileReader::label()'],['../classmlx_1_1core_1_1io_1_1_file_writer.html#a5093dce80ff0c51ea036a87e3e5fb456',1,'mlx::core::io::FileWriter::label()']]], + ['largest_5fprime_5ffactor_1',['largest_prime_factor',['../structpocketfft_1_1detail_1_1util.html#a0e9b92280f25063d1ebef942dd0d233c',1,'pocketfft::detail::util']]], + ['latch_2',['latch',['../classpocketfft_1_1detail_1_1threading_1_1latch.html#a9260c871bb927525f7f53caa23a19c15',1,'pocketfft::detail::threading::latch']]], + ['layer_5fnorm_3',['layer_norm',['../namespacemlx_1_1core_1_1fast.html#a01bd533ebd0e2415c4ee30032d51d7bf',1,'mlx::core::fast']]], + ['layernorm_4',['LayerNorm',['../classmlx_1_1core_1_1fast_1_1_layer_norm.html#a5ac38d50e62850589bf51ee313303153',1,'mlx::core::fast::LayerNorm']]], + ['layernormvjp_5',['LayerNormVJP',['../classmlx_1_1core_1_1fast_1_1_layer_norm_v_j_p.html#a41bc1391dbc0cf63b2c85b67956c08d9',1,'mlx::core::fast::LayerNormVJP']]], + ['ldexp_6',['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_7',['left_shift',['../group__ops.html#ga89682bf78491761e062d4ee7bef0c829',1,'mlx::core']]], + ['length_8',['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_9',['length_in',['../classpocketfft_1_1detail_1_1multi__iter.html#a5318b79d934cddf109dff7bf96a330c8',1,'pocketfft::detail::multi_iter']]], + ['length_5fout_10',['length_out',['../classpocketfft_1_1detail_1_1multi__iter.html#a93cd515d07cd479138a35da9df66bd41',1,'pocketfft::detail::multi_iter']]], + ['less_11',['Less',['../classmlx_1_1core_1_1_less.html#aa55c5cfbab0ac30e1b72c080fe9525d7',1,'mlx::core::Less']]], + ['less_12',['less',['../group__ops.html#ga9142b8d717699a8abfa2a7398891ff8a',1,'mlx::core']]], + ['less_5fequal_13',['less_equal',['../group__ops.html#ga0d49e0c7011d0573c369c13c8f045a09',1,'mlx::core']]], + ['lessequal_14',['LessEqual',['../classmlx_1_1core_1_1_less_equal.html#a52492a43224d47e7851beec646c27bbc',1,'mlx::core::LessEqual']]], + ['lib_5fname_15',['lib_name',['../classmlx_1_1core_1_1_compiled.html#ae5c16cb91ac31b97e7652cc526c07439',1,'mlx::core::Compiled']]], + ['linspace_16',['linspace',['../group__ops.html#ga968bcabed902311dcfbd903b0fb886ec',1,'mlx::core']]], + ['load_17',['Load',['../classmlx_1_1core_1_1_load.html#a3aa8a537cd90bab048df47dca1ed526a',1,'mlx::core::Load']]], + ['load_18',['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#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_19',['load_gguf',['../namespacemlx_1_1core.html#a2aa12b351ce559deb14cda0a5292c2ce',1,'mlx::core']]], + ['load_5fpadded_20',['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_21',['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_22',['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_23',['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_24',['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(): scan.h']]], + ['log_25',['Log',['../classmlx_1_1core_1_1_log.html#a663e54790c60b56eb0ff09f4f6635fb9',1,'mlx::core::Log']]], + ['log_26',['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_27',['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_28',['Log1p',['../classmlx_1_1core_1_1_log1p.html#ab0d6eb90c6f98775fce56f3446ff127a',1,'mlx::core::Log1p']]], + ['log1p_29',['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_30',['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_31',['LogAddExp',['../classmlx_1_1core_1_1_log_add_exp.html#ad8938ca90ccf1a3259973fc68902975a',1,'mlx::core::LogAddExp']]], + ['logaddexp_32',['logaddexp',['../group__ops.html#gaf985df6609c6bd75a14a844655d89eaa',1,'mlx::core']]], + ['logical_5fand_33',['logical_and',['../group__ops.html#ga768977cda8d68cf23f464a6af9907876',1,'mlx::core']]], + ['logical_5fnot_34',['logical_not',['../group__ops.html#gabca78d34ce93f0de2814e62225bb2a53',1,'mlx::core']]], + ['logical_5for_35',['logical_or',['../group__ops.html#ga23768728e4dd070c917fbb0ed0d0c2ec',1,'mlx::core']]], + ['logicaland_36',['LogicalAnd',['../classmlx_1_1core_1_1_logical_and.html#aaf2cab8ffcf6606b8babfef60fc06fb3',1,'mlx::core::LogicalAnd']]], + ['logicalnot_37',['LogicalNot',['../classmlx_1_1core_1_1_logical_not.html#a6f5850b4c78b83d5e2c0d37437fc79b7',1,'mlx::core::LogicalNot']]], + ['logicalor_38',['LogicalOr',['../classmlx_1_1core_1_1_logical_or.html#a269c22daca1c15ad010bb860bce93918',1,'mlx::core::LogicalOr']]], + ['logsumexp_39',['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_40',['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 new file mode 100644 index 000000000..6fddc77d0 --- /dev/null +++ b/docs/build/html/search/functions_d.js @@ -0,0 +1,47 @@ +var searchData= +[ + ['make_5farrays_0',['make_arrays',['../classmlx_1_1core_1_1array.html#a1173db4e23f5a8230911cb8fba45d5e6',1,'mlx::core::array']]], + ['make_5fsynchronize_5ftask_1',['make_synchronize_task',['../namespacemlx_1_1core_1_1metal.html#ab31abdda3052162d59f6590a89e38337',1,'mlx::core::metal']]], + ['make_5ftask_2',['make_task',['../namespacemlx_1_1core_1_1metal.html#a4552b7ccdfa7f3cc9895c09799d8048e',1,'mlx::core::metal']]], + ['malloc_3',['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_4',['malloc_or_wait',['../namespacemlx_1_1core_1_1allocator.html#a86ac0a11ff78f21e717f641716c34abc',1,'mlx::core::allocator']]], + ['matmul_5',['Matmul',['../classmlx_1_1core_1_1_matmul.html#adef92f30ab35e540ccb316ea6b94e6f7',1,'mlx::core::Matmul']]], + ['matmul_6',['matmul',['../group__ops.html#ga753d59f5a9f5f2362865ee83b4dced2a',1,'mlx::core']]], + ['matrixdescriptor_7',['matrixDescriptor',['../class_m_p_s_1_1_matrix_descriptor.html#a7a99042b3c8afa037719ca316500a37b',1,'MPS::MatrixDescriptor::matrixDescriptor(NS::UInteger rows, NS::UInteger columns, NS::UInteger rowBytes, NS::UInteger dataType)'],['../class_m_p_s_1_1_matrix_descriptor.html#a67e5df7d48fc175efd5124b3b43b6366',1,'MPS::MatrixDescriptor::matrixDescriptor(NS::UInteger rows, NS::UInteger columns, NS::UInteger matrices, NS::UInteger rowBytes, NS::UInteger matrixBytes, NS::UInteger dataType)']]], + ['max_8',['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_9',['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_10',['Maximum',['../classmlx_1_1core_1_1_maximum.html#a28389307e385efe1b2955b86b115e816',1,'mlx::core::Maximum']]], + ['maximum_11',['maximum',['../group__ops.html#ga7ade2ea305e2e4219c3609443fb5db8d',1,'mlx::core']]], + ['mb_5fblock_5fmerge_12',['mb_block_merge',['../kernels_2sort_8h.html#ab381cd57f344bc7304ab580bfdc78807',1,'sort.h']]], + ['mb_5fblock_5fpartition_13',['mb_block_partition',['../kernels_2sort_8h.html#a50ae11454e4dfa374a9bd256cdbbf605',1,'sort.h']]], + ['mb_5fblock_5fsort_14',['mb_block_sort',['../kernels_2sort_8h.html#a2a0533103661dd378d6bfe949930650a',1,'sort.h']]], + ['mean_15',['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_16',['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_17',['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_18',['merge_step',['../struct_block_merge_sort.html#ab65f190edf1851b37c39ad49ce99a43c',1,'BlockMergeSort']]], + ['meshgrid_19',['meshgrid',['../group__ops.html#ga577c911618575314de63d1060656a26e',1,'mlx::core']]], + ['min_20',['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_21',['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_22',['Minimum',['../classmlx_1_1core_1_1_minimum.html#ab0f2ce17108df44b82cff68886b0f6f5',1,'mlx::core::Minimum']]], + ['minimum_23',['minimum',['../group__ops.html#ga49ba00c090f81f331c91b0c97040bce0',1,'mlx::core']]], + ['mlx_5fatomic_5fcompare_5fexchange_5fweak_5fexplicit_24',['mlx_atomic_compare_exchange_weak_explicit',['../atomic_8h.html#af63dac2f2df485a85b490e58302491b3',1,'mlx_atomic_compare_exchange_weak_explicit(device mlx_atomic< T > *object, thread T *expected, T val, uint offset): atomic.h'],['../atomic_8h.html#a0c328b82e1b4c8cd0e9c864ecac30136',1,'mlx_atomic_compare_exchange_weak_explicit(device mlx_atomic< T > *object, thread uint *expected, uint val, uint offset): atomic.h']]], + ['mlx_5fatomic_5ffetch_5fadd_5fexplicit_25',['mlx_atomic_fetch_add_explicit',['../atomic_8h.html#a37cbd062017e3d056782dcfa7f5f6add',1,'atomic.h']]], + ['mlx_5fatomic_5ffetch_5fand_5fexplicit_26',['mlx_atomic_fetch_and_explicit',['../atomic_8h.html#a65bd5cae890db9b927d853a52bdc06e8',1,'atomic.h']]], + ['mlx_5fatomic_5ffetch_5fmax_5fexplicit_27',['mlx_atomic_fetch_max_explicit',['../atomic_8h.html#aafeb87661c0b216d994677807a78f6d7',1,'atomic.h']]], + ['mlx_5fatomic_5ffetch_5fmax_5fexplicit_3c_20float_20_3e_28',['mlx_atomic_fetch_max_explicit< float >',['../atomic_8h.html#a55a4a8fbb8951a18375bdb635cf81af0',1,'atomic.h']]], + ['mlx_5fatomic_5ffetch_5fmin_5fexplicit_29',['mlx_atomic_fetch_min_explicit',['../atomic_8h.html#ab962bd4d6ee8040e930e03f54c5ac16a',1,'atomic.h']]], + ['mlx_5fatomic_5ffetch_5fmin_5fexplicit_3c_20float_20_3e_30',['mlx_atomic_fetch_min_explicit< float >',['../atomic_8h.html#aa81c17d78ba4c9eb989f288000816c73',1,'atomic.h']]], + ['mlx_5fatomic_5ffetch_5fmul_5fexplicit_31',['mlx_atomic_fetch_mul_explicit',['../atomic_8h.html#adea4b9574507634f411de665f4db7c3c',1,'atomic.h']]], + ['mlx_5fatomic_5ffetch_5for_5fexplicit_32',['mlx_atomic_fetch_or_explicit',['../atomic_8h.html#a995c2d054cc4faa7b86e9a8719ff3e6f',1,'atomic.h']]], + ['mlx_5fatomic_5fload_5fexplicit_33',['mlx_atomic_load_explicit',['../atomic_8h.html#a802615a5c326e8dd4ab13fefa0231d4e',1,'atomic.h']]], + ['mlx_5fatomic_5fstore_5fexplicit_34',['mlx_atomic_store_explicit',['../atomic_8h.html#a8108e66ef9a5fa8c62e6a7c6504c43aa',1,'atomic.h']]], + ['mma_35',['mma',['../structmlx_1_1steel_1_1_block_m_m_a.html#a6a2c2a6d5e767d52c41b42a9d36086b0',1,'mlx::steel::BlockMMA']]], + ['move_5fshared_5fbuffer_36',['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_37',['moveaxis',['../group__ops.html#ga24067d10a842db2c9d509ea48135a2c3',1,'mlx::core']]], + ['mpinplace_38',['MPINPLACE',['../namespacepocketfft_1_1detail.html#af5eedf3cdfc83c0a30807092c39a9ce2',1,'pocketfft::detail']]], + ['mtl_5fdevice_39',['mtl_device',['../classmlx_1_1core_1_1metal_1_1_device.html#a31dba377f2be44a746db10d1b9367653',1,'mlx::core::metal::Device']]], + ['multi_5fiter_40',['multi_iter',['../classpocketfft_1_1detail_1_1multi__iter.html#a9be43bb18840202da6d17988fccc64b9',1,'pocketfft::detail::multi_iter']]], + ['multiply_41',['Multiply',['../classmlx_1_1core_1_1_multiply.html#aca5c50f900321f3eb4d6fbcbc225c00c',1,'mlx::core::Multiply']]], + ['multiply_42',['multiply',['../group__ops.html#gaf57392e641640b5d06e4c99518391c38',1,'mlx::core']]], + ['multivariate_5fnormal_43',['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 new file mode 100644 index 000000000..fe5936101 --- /dev/null +++ b/docs/build/html/search/functions_e.js @@ -0,0 +1,23 @@ +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()']]], + ['nbytes_1',['nbytes',['../classmlx_1_1core_1_1array.html#a387b67cd3ef5cfc1e749c371766c4a05',1,'mlx::core::array']]], + ['ndarr_2',['ndarr',['../classpocketfft_1_1detail_1_1ndarr.html#a8f0037a172d96cb1ad915a5069175fa2',1,'pocketfft::detail::ndarr']]], + ['ndim_3',['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_4',['Negative',['../classmlx_1_1core_1_1_negative.html#aa3b73395d9fa5b7215dca488bc0d3c70',1,'mlx::core::Negative']]], + ['negative_5',['negative',['../group__ops.html#ga95d9a9425533b5ed1707eb00184dffc6',1,'mlx::core']]], + ['new_5fqueue_6',['new_queue',['../classmlx_1_1core_1_1metal_1_1_device.html#a8135ae2a8c1e6f3861e84d4e60c28b67',1,'mlx::core::metal::Device']]], + ['new_5fstream_7',['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_8',['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()'],['../classmlx_1_1core_1_1random_1_1_key_sequence.html#a4193c5eac3ef093a740d5305b25d3e18',1,'mlx::core::random::KeySequence::next()']]], + ['nextafter_9',['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_10',['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_11',['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_12',['normalize_axis',['../namespacemlx_1_1core.html#a0181b5d72bf3d34448dabc70f7ff858d',1,'mlx::core']]], + ['not_5fequal_13',['not_equal',['../group__ops.html#ga28f22c5d2c399eee53be7b3facc11103',1,'mlx::core']]], + ['notequal_14',['NotEqual',['../classmlx_1_1core_1_1_not_equal.html#ac568397bd17b5d9f25ad1a0ebadedbb9',1,'mlx::core::NotEqual']]], + ['notify_5fnew_5ftask_15',['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_16',['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_17',['num_threads',['../namespacepocketfft_1_1detail_1_1threading.html#af5432c2e25aed679a73fe7b29534c833',1,'pocketfft::detail::threading']]], + ['number_5fof_5felements_18',['number_of_elements',['../group__ops.html#ga6d5f5f72362488b956cdc4615ef6c636',1,'mlx::core']]], + ['numberofelements_19',['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 new file mode 100644 index 000000000..bbc9b32e7 --- /dev/null +++ b/docs/build/html/search/functions_f.js @@ -0,0 +1,48 @@ +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']]], + ['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_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()()'],['../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_and.html#a52fcfa8e7e83e7be6313eb57c998bf47',1,'And::operator()()'],['../struct_or.html#a3798a4c73565aee2430459146305e44f',1,'Or::operator()()'],['../struct_sum.html#af9bfdc5603dd2b888d9e1416b70aefcc',1,'Sum::operator()()'],['../struct_prod.html#a4388efe5b733627175602c3f2d727c04',1,'Prod::operator()()'],['../struct_min.html#a3078861291a63404eee67ed057bc489a',1,'Min::operator()()'],['../struct_max.html#a5bcf100d50dc6c06833fd6e3e0345007',1,'Max::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_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_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 new file mode 100644 index 000000000..441683617 --- /dev/null +++ b/docs/build/html/search/groups_0.js @@ -0,0 +1,4 @@ +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 new file mode 100644 index 000000000..00c8f7415 --- /dev/null +++ b/docs/build/html/search/groups_1.js @@ -0,0 +1,4 @@ +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 new file mode 100644 index 000000000..0432ab19c --- /dev/null +++ b/docs/build/html/search/groups_2.js @@ -0,0 +1,4 @@ +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 new file mode 100644 index 000000000..ffb6cf0d0 --- /dev/null +++ b/docs/build/html/search/mag.svg @@ -0,0 +1,24 @@ + + + + + + + diff --git a/docs/build/html/search/mag_d.svg b/docs/build/html/search/mag_d.svg new file mode 100644 index 000000000..4122773f9 --- /dev/null +++ b/docs/build/html/search/mag_d.svg @@ -0,0 +1,24 @@ + + + + + + + diff --git a/docs/build/html/search/mag_sel.svg b/docs/build/html/search/mag_sel.svg new file mode 100644 index 000000000..553dba877 --- /dev/null +++ b/docs/build/html/search/mag_sel.svg @@ -0,0 +1,31 @@ + + + + + + + + + diff --git a/docs/build/html/search/mag_seld.svg b/docs/build/html/search/mag_seld.svg new file mode 100644 index 000000000..c906f84c8 --- /dev/null +++ b/docs/build/html/search/mag_seld.svg @@ -0,0 +1,31 @@ + + + + + + + + + diff --git a/docs/build/html/search/namespaces_0.js b/docs/build/html/search/namespaces_0.js new file mode 100644 index 000000000..7390c5c94 --- /dev/null +++ b/docs/build/html/search/namespaces_0.js @@ -0,0 +1,25 @@ +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']]], + ['mps_17',['MPS',['../namespace_m_p_s.html',1,'']]], + ['mtl_18',['MTL',['../namespace_m_t_l.html',1,'']]], + ['mtl_3a_3aprivate_19',['Private',['../namespace_m_t_l_1_1_private.html',1,'MTL']]], + ['mtl_3a_3aprivate_3a_3aclass_20',['Class',['../namespace_m_t_l_1_1_private_1_1_class.html',1,'MTL::Private']]], + ['mtl_3a_3aprivate_3a_3aselector_21',['Selector',['../namespace_m_t_l_1_1_private_1_1_selector.html',1,'MTL::Private']]] +]; diff --git a/docs/build/html/search/namespaces_1.js b/docs/build/html/search/namespaces_1.js new file mode 100644 index 000000000..566db62b6 --- /dev/null +++ b/docs/build/html/search/namespaces_1.js @@ -0,0 +1,6 @@ +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 new file mode 100644 index 000000000..d4956fba2 --- /dev/null +++ b/docs/build/html/search/related_0.js @@ -0,0 +1,4 @@ +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 new file mode 100644 index 000000000..48bb1a554 --- /dev/null +++ b/docs/build/html/search/related_1.js @@ -0,0 +1,5 @@ +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 new file mode 100644 index 000000000..19f76f9d5 --- /dev/null +++ b/docs/build/html/search/search.css @@ -0,0 +1,291 @@ +/*---------------- 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 new file mode 100644 index 000000000..666af01e5 --- /dev/null +++ b/docs/build/html/search/search.js @@ -0,0 +1,694 @@ +/* + @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, "_CPPv43padRK5arrayRKNSt4pairIiiEERK5array14StreamOrDevice"], [0, "_CPPv43padRK5arrayRKNSt6vectorINSt4pairIiiEEEERK5array14StreamOrDevice"], [0, "_CPPv43padRK5arrayRKNSt6vectorIiEERKNSt6vectorIiEERKNSt6vectorIiEERK5array14StreamOrDevice"], [0, "_CPPv43padRK5arrayiRK5array14StreamOrDevice"]], "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"]], "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"]], "where (c++ function)": [[0, "_CPPv45whereRK5arrayRK5arrayRK5array14StreamOrDevice"]], "zeros (c++ function)": [[0, "_CPPv45zerosRKNSt6vectorIiEE14StreamOrDevice"], [0, "_CPPv45zerosRKNSt6vectorIiEE5Dtype14StreamOrDevice"]], "zeros_like (c++ function)": [[0, "_CPPv410zeros_likeRK5array14StreamOrDevice"]], "device (class in mlx.core)": [[8, "mlx.core.Device"]], "__init__() (device method)": [[8, "mlx.core.Device.__init__"]], "dtype (class in mlx.core)": [[9, "mlx.core.Dtype"]], "__init__() (dtype method)": [[9, "mlx.core.Dtype.__init__"]], "dtypecategory (class in mlx.core)": [[10, "mlx.core.DtypeCategory"]], "__init__() (dtypecategory method)": [[10, "mlx.core.DtypeCategory.__init__"]], "abs() (in module mlx.core)": [[11, "mlx.core.abs"]], "add() (in module mlx.core)": [[12, "mlx.core.add"]], "addmm() (in module mlx.core)": [[13, "mlx.core.addmm"]], "all() (in module mlx.core)": [[14, "mlx.core.all"]], "allclose() (in module mlx.core)": [[15, "mlx.core.allclose"]], "any() (in module mlx.core)": [[16, "mlx.core.any"]], "arange() (in module mlx.core)": [[17, "mlx.core.arange"]], "arccos() (in module mlx.core)": [[18, "mlx.core.arccos"]], "arccosh() (in module mlx.core)": [[19, "mlx.core.arccosh"]], "arcsin() (in module mlx.core)": [[20, "mlx.core.arcsin"]], "arcsinh() (in module mlx.core)": [[21, "mlx.core.arcsinh"]], "arctan() (in module mlx.core)": [[22, "mlx.core.arctan"]], "arctan2() (in module mlx.core)": [[23, "mlx.core.arctan2"]], "arctanh() (in module mlx.core)": [[24, "mlx.core.arctanh"]], "argmax() (in module mlx.core)": [[25, "mlx.core.argmax"]], "argmin() (in module mlx.core)": [[26, "mlx.core.argmin"]], "argpartition() (in module mlx.core)": [[27, "mlx.core.argpartition"]], "argsort() (in module mlx.core)": [[28, "mlx.core.argsort"]], "__init__() (array method)": [[29, "mlx.core.array.__init__"]], "array (class in mlx.core)": [[29, "mlx.core.array"]], "t (array property)": [[30, "mlx.core.array.T"]], "abs() (array method)": [[31, "mlx.core.array.abs"]], "all() (array method)": [[32, "mlx.core.array.all"]], "any() (array method)": [[33, "mlx.core.array.any"]], "argmax() (array method)": [[34, "mlx.core.array.argmax"]], "argmin() (array method)": [[35, "mlx.core.array.argmin"]], "astype() (array method)": [[36, "mlx.core.array.astype"]], "at (array property)": [[37, "mlx.core.array.at"]], "cos() (array method)": [[38, "mlx.core.array.cos"]], "cummax() (array method)": [[39, "mlx.core.array.cummax"]], "cummin() (array method)": [[40, "mlx.core.array.cummin"]], "cumprod() (array method)": [[41, "mlx.core.array.cumprod"]], "cumsum() (array method)": [[42, "mlx.core.array.cumsum"]], "diag() (array method)": [[43, "mlx.core.array.diag"]], "diagonal() (array method)": [[44, "mlx.core.array.diagonal"]], "dtype (array property)": [[45, "mlx.core.array.dtype"]], "exp() (array method)": [[46, "mlx.core.array.exp"]], "flatten() (array method)": [[47, "mlx.core.array.flatten"]], "item() (array method)": [[48, "mlx.core.array.item"]], "itemsize (array property)": [[49, "mlx.core.array.itemsize"]], "log() (array method)": [[50, "mlx.core.array.log"]], "log10() (array method)": [[51, "mlx.core.array.log10"]], "log1p() (array method)": [[52, "mlx.core.array.log1p"]], "log2() (array method)": [[53, "mlx.core.array.log2"]], "logsumexp() (array method)": [[54, "mlx.core.array.logsumexp"]], "max() (array method)": [[55, "mlx.core.array.max"]], "mean() (array method)": [[56, "mlx.core.array.mean"]], "min() (array method)": [[57, "mlx.core.array.min"]], "moveaxis() (array method)": [[58, "mlx.core.array.moveaxis"]], "nbytes (array property)": [[59, "mlx.core.array.nbytes"]], "ndim (array property)": [[60, "mlx.core.array.ndim"]], "prod() (array method)": [[61, "mlx.core.array.prod"]], "reciprocal() (array method)": [[62, "mlx.core.array.reciprocal"]], "reshape() (array method)": [[63, "mlx.core.array.reshape"]], "round() (array method)": [[64, "mlx.core.array.round"]], "rsqrt() (array method)": [[65, "mlx.core.array.rsqrt"]], "shape (array property)": [[66, "mlx.core.array.shape"]], "sin() (array method)": [[67, "mlx.core.array.sin"]], "size (array property)": [[68, "mlx.core.array.size"]], "split() (array method)": [[69, "mlx.core.array.split"]], "sqrt() (array method)": [[70, "mlx.core.array.sqrt"]], "square() (array method)": [[71, "mlx.core.array.square"]], "squeeze() (array method)": [[72, "mlx.core.array.squeeze"]], "sum() (array method)": [[73, "mlx.core.array.sum"]], "swapaxes() (array method)": [[74, "mlx.core.array.swapaxes"]], "tolist() (array method)": [[75, "mlx.core.array.tolist"]], "transpose() (array method)": [[76, "mlx.core.array.transpose"]], "var() (array method)": [[77, "mlx.core.array.var"]], "array_equal() (in module mlx.core)": [[78, "mlx.core.array_equal"]], "as_strided() (in module mlx.core)": [[79, "mlx.core.as_strided"]], "atleast_1d() (in module mlx.core)": [[80, "mlx.core.atleast_1d"]], "atleast_2d() (in module mlx.core)": [[81, "mlx.core.atleast_2d"]], "atleast_3d() (in module mlx.core)": [[82, "mlx.core.atleast_3d"]], "bitwise_and() (in module mlx.core)": [[83, "mlx.core.bitwise_and"]], "bitwise_or() (in module mlx.core)": [[84, "mlx.core.bitwise_or"]], "bitwise_xor() (in module mlx.core)": [[85, "mlx.core.bitwise_xor"]], "block_masked_mm() (in module mlx.core)": [[86, "mlx.core.block_masked_mm"]], "block_sparse_mm() (in module mlx.core)": [[87, "mlx.core.block_sparse_mm"]], "broadcast_to() (in module mlx.core)": [[88, "mlx.core.broadcast_to"]], "ceil() (in module mlx.core)": [[89, "mlx.core.ceil"]], "clip() (in module mlx.core)": [[90, "mlx.core.clip"]], "compile() (in module mlx.core)": [[91, "mlx.core.compile"]], "concatenate() (in module mlx.core)": [[92, "mlx.core.concatenate"]], "conj() (in module mlx.core)": [[93, "mlx.core.conj"]], "conjugate() (in module mlx.core)": [[94, "mlx.core.conjugate"]], "conv1d() (in module mlx.core)": [[95, "mlx.core.conv1d"]], "conv2d() (in module mlx.core)": [[96, "mlx.core.conv2d"]], "conv_general() (in module mlx.core)": [[97, "mlx.core.conv_general"]], "convolve() (in module mlx.core)": [[98, "mlx.core.convolve"]], "cos() (in module mlx.core)": [[99, "mlx.core.cos"]], "cosh() (in module mlx.core)": [[100, "mlx.core.cosh"]], "cummax() (in module mlx.core)": [[101, "mlx.core.cummax"]], "cummin() (in module mlx.core)": [[102, "mlx.core.cummin"]], "cumprod() (in module mlx.core)": [[103, "mlx.core.cumprod"]], "cumsum() (in module mlx.core)": [[104, "mlx.core.cumsum"]], "default_device() (in module mlx.core)": [[105, "mlx.core.default_device"]], "default_stream() (in module mlx.core)": [[106, "mlx.core.default_stream"]], "degrees() (in module mlx.core)": [[107, "mlx.core.degrees"]], "dequantize() (in module mlx.core)": [[108, "mlx.core.dequantize"]], "diag() (in module mlx.core)": [[109, "mlx.core.diag"]], "diagonal() (in module mlx.core)": [[110, "mlx.core.diagonal"]], "disable_compile() (in module mlx.core)": [[111, "mlx.core.disable_compile"]], "divide() (in module mlx.core)": [[112, "mlx.core.divide"]], "divmod() (in module mlx.core)": [[113, "mlx.core.divmod"]], "enable_compile() (in module mlx.core)": [[114, "mlx.core.enable_compile"]], "equal() (in module mlx.core)": [[115, "mlx.core.equal"]], "erf() (in module mlx.core)": [[116, "mlx.core.erf"]], "erfinv() (in module mlx.core)": [[117, "mlx.core.erfinv"]], "eval() (in module mlx.core)": [[118, "mlx.core.eval"]], "exp() (in module mlx.core)": [[119, "mlx.core.exp"]], "expand_dims() (in module mlx.core)": [[120, "mlx.core.expand_dims"]], "expm1() (in module mlx.core)": [[121, "mlx.core.expm1"]], "eye() (in module mlx.core)": [[122, "mlx.core.eye"]], "layer_norm() (in module mlx.core.fast)": [[123, "mlx.core.fast.layer_norm"]], "rms_norm() (in module mlx.core.fast)": [[124, "mlx.core.fast.rms_norm"]], "rope() (in module mlx.core.fast)": [[125, "mlx.core.fast.rope"]], "scaled_dot_product_attention() (in module mlx.core.fast)": [[126, "mlx.core.fast.scaled_dot_product_attention"]], "fft() (in module mlx.core.fft)": [[127, "mlx.core.fft.fft"]], "fft2() (in module mlx.core.fft)": [[128, "mlx.core.fft.fft2"]], "fftn() (in module mlx.core.fft)": [[129, "mlx.core.fft.fftn"]], "ifft() (in module mlx.core.fft)": [[130, "mlx.core.fft.ifft"]], "ifft2() (in module mlx.core.fft)": [[131, "mlx.core.fft.ifft2"]], "ifftn() (in module mlx.core.fft)": [[132, "mlx.core.fft.ifftn"]], "irfft() (in module mlx.core.fft)": [[133, "mlx.core.fft.irfft"]], "irfft2() (in module mlx.core.fft)": [[134, "mlx.core.fft.irfft2"]], "irfftn() (in module mlx.core.fft)": [[135, "mlx.core.fft.irfftn"]], "rfft() (in module mlx.core.fft)": [[136, "mlx.core.fft.rfft"]], "rfft2() (in module mlx.core.fft)": [[137, "mlx.core.fft.rfft2"]], "rfftn() (in module mlx.core.fft)": [[138, "mlx.core.fft.rfftn"]], "flatten() (in module mlx.core)": [[139, "mlx.core.flatten"]], "floor() (in module mlx.core)": [[140, "mlx.core.floor"]], "floor_divide() (in module mlx.core)": [[141, "mlx.core.floor_divide"]], "full() (in module mlx.core)": [[142, "mlx.core.full"]], "gather_mm() (in module mlx.core)": [[143, "mlx.core.gather_mm"]], "gather_qmm() (in module mlx.core)": [[144, "mlx.core.gather_qmm"]], "grad() (in module mlx.core)": [[145, "mlx.core.grad"]], "greater() (in module mlx.core)": [[146, "mlx.core.greater"]], "greater_equal() (in module mlx.core)": [[147, "mlx.core.greater_equal"]], "identity() (in module mlx.core)": [[148, "mlx.core.identity"]], "inner() (in module mlx.core)": [[149, "mlx.core.inner"]], "isclose() (in module mlx.core)": [[150, "mlx.core.isclose"]], "isinf() (in module mlx.core)": [[151, "mlx.core.isinf"]], "isnan() (in module mlx.core)": [[152, "mlx.core.isnan"]], "isneginf() (in module mlx.core)": [[153, "mlx.core.isneginf"]], "isposinf() (in module mlx.core)": [[154, "mlx.core.isposinf"]], "issubdtype() (in module mlx.core)": [[155, "mlx.core.issubdtype"]], "jvp() (in module mlx.core)": [[156, "mlx.core.jvp"]], "left_shift() (in module mlx.core)": [[157, "mlx.core.left_shift"]], "less() (in module mlx.core)": [[158, "mlx.core.less"]], "less_equal() (in module mlx.core)": [[159, "mlx.core.less_equal"]], "cholesky() (in module mlx.core.linalg)": [[160, "mlx.core.linalg.cholesky"]], "inv() (in module mlx.core.linalg)": [[161, "mlx.core.linalg.inv"]], "norm() (in module mlx.core.linalg)": [[162, "mlx.core.linalg.norm"]], "qr() (in module mlx.core.linalg)": [[163, "mlx.core.linalg.qr"]], "svd() (in module mlx.core.linalg)": [[164, "mlx.core.linalg.svd"]], "linspace() (in module mlx.core)": [[165, "mlx.core.linspace"]], "load() (in module mlx.core)": [[166, "mlx.core.load"]], "log() (in module mlx.core)": [[167, "mlx.core.log"]], "log10() (in module mlx.core)": [[168, "mlx.core.log10"]], "log1p() (in module mlx.core)": [[169, "mlx.core.log1p"]], "log2() (in module mlx.core)": [[170, "mlx.core.log2"]], "logaddexp() (in module mlx.core)": [[171, "mlx.core.logaddexp"]], "logical_and() (in module mlx.core)": [[172, "mlx.core.logical_and"]], "logical_not() (in module mlx.core)": [[173, "mlx.core.logical_not"]], "logical_or() (in module mlx.core)": [[174, "mlx.core.logical_or"]], "logsumexp() (in module mlx.core)": [[175, "mlx.core.logsumexp"]], "matmul() (in module mlx.core)": [[176, "mlx.core.matmul"]], "max() (in module mlx.core)": [[177, "mlx.core.max"]], "maximum() (in module mlx.core)": [[178, "mlx.core.maximum"]], "mean() (in module mlx.core)": [[179, "mlx.core.mean"]], "meshgrid() (in module mlx.core)": [[180, "mlx.core.meshgrid"]], "clear_cache() (in module mlx.core.metal)": [[181, "mlx.core.metal.clear_cache"]], "device_info() (in module mlx.core.metal)": [[182, "mlx.core.metal.device_info"]], "get_active_memory() (in module mlx.core.metal)": [[183, "mlx.core.metal.get_active_memory"]], "get_cache_memory() (in module mlx.core.metal)": [[184, "mlx.core.metal.get_cache_memory"]], "get_peak_memory() (in module mlx.core.metal)": [[185, "mlx.core.metal.get_peak_memory"]], "is_available() (in module mlx.core.metal)": [[186, "mlx.core.metal.is_available"]], "reset_peak_memory() (in module mlx.core.metal)": [[187, "mlx.core.metal.reset_peak_memory"]], "set_cache_limit() (in module mlx.core.metal)": [[188, "mlx.core.metal.set_cache_limit"]], "set_memory_limit() (in module mlx.core.metal)": [[189, "mlx.core.metal.set_memory_limit"]], "start_capture() (in module mlx.core.metal)": [[190, "mlx.core.metal.start_capture"]], "stop_capture() (in module mlx.core.metal)": [[191, "mlx.core.metal.stop_capture"]], "min() (in module mlx.core)": [[192, "mlx.core.min"]], "minimum() (in module mlx.core)": [[193, "mlx.core.minimum"]], "moveaxis() (in module mlx.core)": [[194, "mlx.core.moveaxis"]], "multiply() (in module mlx.core)": [[195, "mlx.core.multiply"]], "negative() (in module mlx.core)": [[196, "mlx.core.negative"]], "new_stream() (in module mlx.core)": [[197, "mlx.core.new_stream"]], "not_equal() (in module mlx.core)": [[198, "mlx.core.not_equal"]], "ones() (in module mlx.core)": [[199, "mlx.core.ones"]], "ones_like() (in module mlx.core)": [[200, "mlx.core.ones_like"]], "outer() (in module mlx.core)": [[201, "mlx.core.outer"]], "pad() (in module mlx.core)": [[202, "mlx.core.pad"]], "partition() (in module mlx.core)": [[203, "mlx.core.partition"]], "power() (in module mlx.core)": [[204, "mlx.core.power"]], "prod() (in module mlx.core)": [[205, "mlx.core.prod"]], "quantize() (in module mlx.core)": [[206, "mlx.core.quantize"]], "quantized_matmul() (in module mlx.core)": [[207, "mlx.core.quantized_matmul"]], "radians() (in module mlx.core)": [[208, "mlx.core.radians"]], "bernoulli() (in module mlx.core.random)": [[209, "mlx.core.random.bernoulli"]], "categorical() (in module mlx.core.random)": [[210, "mlx.core.random.categorical"]], "gumbel() (in module mlx.core.random)": [[211, "mlx.core.random.gumbel"]], "key() (in module mlx.core.random)": [[212, "mlx.core.random.key"]], "multivariate_normal() (in module mlx.core.random)": [[213, "mlx.core.random.multivariate_normal"]], "normal() (in module mlx.core.random)": [[214, "mlx.core.random.normal"]], "randint() (in module mlx.core.random)": [[215, "mlx.core.random.randint"]], "seed() (in module mlx.core.random)": [[216, "mlx.core.random.seed"]], "split() (in module mlx.core.random)": [[217, "mlx.core.random.split"]], "truncated_normal() (in module mlx.core.random)": [[218, "mlx.core.random.truncated_normal"]], "uniform() (in module mlx.core.random)": [[219, "mlx.core.random.uniform"]], "reciprocal() (in module mlx.core)": [[220, "mlx.core.reciprocal"]], "remainder() (in module mlx.core)": [[221, "mlx.core.remainder"]], "repeat() (in module mlx.core)": [[222, "mlx.core.repeat"]], "reshape() (in module mlx.core)": [[223, "mlx.core.reshape"]], "right_shift() (in module mlx.core)": [[224, "mlx.core.right_shift"]], "round() (in module mlx.core)": [[225, "mlx.core.round"]], "rsqrt() (in module mlx.core)": [[226, "mlx.core.rsqrt"]], "save() (in module mlx.core)": [[227, "mlx.core.save"]], "save_gguf() (in module mlx.core)": [[228, "mlx.core.save_gguf"]], "save_safetensors() (in module mlx.core)": [[229, "mlx.core.save_safetensors"]], "savez() (in module mlx.core)": [[230, "mlx.core.savez"]], "savez_compressed() (in module mlx.core)": [[231, "mlx.core.savez_compressed"]], "set_default_device() (in module mlx.core)": [[232, "mlx.core.set_default_device"]], "set_default_stream() (in module mlx.core)": [[233, "mlx.core.set_default_stream"]], "sigmoid() (in module mlx.core)": [[234, "mlx.core.sigmoid"]], "sign() (in module mlx.core)": [[235, "mlx.core.sign"]], "sin() (in module mlx.core)": [[236, "mlx.core.sin"]], "sinh() (in module mlx.core)": [[237, "mlx.core.sinh"]], "softmax() (in module mlx.core)": [[238, "mlx.core.softmax"]], "sort() (in module mlx.core)": [[239, "mlx.core.sort"]], "split() (in module mlx.core)": [[240, "mlx.core.split"]], "sqrt() (in module mlx.core)": [[241, "mlx.core.sqrt"]], "square() (in module mlx.core)": [[242, "mlx.core.square"]], "squeeze() (in module mlx.core)": [[243, "mlx.core.squeeze"]], "stack() (in module mlx.core)": [[244, "mlx.core.stack"]], "std() (in module mlx.core)": [[245, "mlx.core.std"]], "stop_gradient() (in module mlx.core)": [[246, "mlx.core.stop_gradient"]], "stream() (in module mlx.core)": [[247, "mlx.core.stream"]], "subtract() (in module mlx.core)": [[248, "mlx.core.subtract"]], "sum() (in module mlx.core)": [[249, "mlx.core.sum"]], "swapaxes() (in module mlx.core)": [[250, "mlx.core.swapaxes"]], "synchronize() (in module mlx.core)": [[251, "mlx.core.synchronize"]], "take() (in module mlx.core)": [[252, "mlx.core.take"]], "take_along_axis() (in module mlx.core)": [[253, "mlx.core.take_along_axis"]], "tan() (in module mlx.core)": [[254, "mlx.core.tan"]], "tanh() (in module mlx.core)": [[255, "mlx.core.tanh"]], "tensordot() (in module mlx.core)": [[256, "mlx.core.tensordot"]], "tile() (in module mlx.core)": [[257, "mlx.core.tile"]], "topk() (in module mlx.core)": [[258, "mlx.core.topk"]], "trace() (in module mlx.core)": [[259, "mlx.core.trace"]], "transpose() (in module mlx.core)": [[260, "mlx.core.transpose"]], "tri() (in module mlx.core)": [[261, "mlx.core.tri"]], "tril() (in module mlx.core)": [[262, "mlx.core.tril"]], "triu() (in module mlx.core)": [[263, "mlx.core.triu"]], "value_and_grad() (in module mlx.core)": [[264, "mlx.core.value_and_grad"]], "var() (in module mlx.core)": [[265, "mlx.core.var"]], "vjp() (in module mlx.core)": [[266, "mlx.core.vjp"]], "vmap() (in module mlx.core)": [[267, "mlx.core.vmap"]], "where() (in module mlx.core)": [[268, "mlx.core.where"]], "zeros() (in module mlx.core)": [[269, "mlx.core.zeros"]], "zeros_like() (in module mlx.core)": [[270, "mlx.core.zeros_like"]], "quantize() (in module mlx.nn)": [[271, "mlx.nn.quantize"]], "value_and_grad() (in module mlx.nn)": [[272, "mlx.nn.value_and_grad"]], "clip_grad_norm() (in module mlx.optimizers)": [[273, "mlx.optimizers.clip_grad_norm"]], "tree_flatten() (in module mlx.utils)": [[274, "mlx.utils.tree_flatten"]], "tree_map() (in module mlx.utils)": [[275, "mlx.utils.tree_map"]], "tree_map_with_path() (in module mlx.utils)": [[276, "mlx.utils.tree_map_with_path"]], "tree_reduce() (in module mlx.utils)": [[277, "mlx.utils.tree_reduce"]], "tree_unflatten() (in module mlx.utils)": [[278, "mlx.utils.tree_unflatten"]], "stream (class in mlx.core)": [[279, "mlx.core.Stream"]], "__init__() (stream method)": [[279, "mlx.core.Stream.__init__"]], "alibi (class in mlx.nn)": [[288, "mlx.nn.ALiBi"]], "avgpool1d (class in mlx.nn)": [[289, "mlx.nn.AvgPool1d"]], "avgpool2d (class in mlx.nn)": [[290, "mlx.nn.AvgPool2d"]], "batchnorm (class in mlx.nn)": [[291, "mlx.nn.BatchNorm"]], "conv1d (class in mlx.nn)": [[292, "mlx.nn.Conv1d"]], "conv2d (class in mlx.nn)": [[293, "mlx.nn.Conv2d"]], "conv3d (class in mlx.nn)": [[294, "mlx.nn.Conv3d"]], "dropout (class in mlx.nn)": [[295, "mlx.nn.Dropout"]], "dropout2d (class in mlx.nn)": [[296, "mlx.nn.Dropout2d"]], "dropout3d (class in mlx.nn)": [[297, "mlx.nn.Dropout3d"]], "embedding (class in mlx.nn)": [[298, "mlx.nn.Embedding"]], "gelu (class in mlx.nn)": [[299, "mlx.nn.GELU"], [354, "mlx.nn.gelu"]], "gru (class in mlx.nn)": [[300, "mlx.nn.GRU"]], "groupnorm (class in mlx.nn)": [[301, "mlx.nn.GroupNorm"]], "instancenorm (class in mlx.nn)": [[302, "mlx.nn.InstanceNorm"]], "lstm (class in mlx.nn)": [[303, "mlx.nn.LSTM"]], "layernorm (class in mlx.nn)": [[304, "mlx.nn.LayerNorm"]], "linear (class in mlx.nn)": [[305, "mlx.nn.Linear"]], "maxpool1d (class in mlx.nn)": [[306, "mlx.nn.MaxPool1d"]], "maxpool2d (class in mlx.nn)": [[307, "mlx.nn.MaxPool2d"]], "mish (class in mlx.nn)": [[308, "mlx.nn.Mish"], [376, "mlx.nn.mish"]], "apply() (module method)": [[309, "mlx.nn.Module.apply"]], "apply_to_modules() (module method)": [[310, "mlx.nn.Module.apply_to_modules"]], "children() (module method)": [[311, "mlx.nn.Module.children"]], "eval() (module method)": [[312, "mlx.nn.Module.eval"]], "filter_and_map() (module method)": [[313, "mlx.nn.Module.filter_and_map"]], "freeze() (module method)": [[314, "mlx.nn.Module.freeze"]], "leaf_modules() (module method)": [[315, "mlx.nn.Module.leaf_modules"]], "load_weights() (module method)": [[316, "mlx.nn.Module.load_weights"]], "modules() (module method)": [[317, "mlx.nn.Module.modules"]], "named_modules() (module method)": [[318, "mlx.nn.Module.named_modules"]], "parameters() (module method)": [[319, "mlx.nn.Module.parameters"]], "save_weights() (module method)": [[320, "mlx.nn.Module.save_weights"]], "set_dtype() (module method)": [[321, "mlx.nn.Module.set_dtype"]], "state (module property)": [[322, "mlx.nn.Module.state"]], "train() (module method)": [[323, "mlx.nn.Module.train"]], "trainable_parameters() (module method)": [[324, "mlx.nn.Module.trainable_parameters"]], "training (module property)": [[325, "mlx.nn.Module.training"]], "unfreeze() (module method)": [[326, "mlx.nn.Module.unfreeze"]], "update() (module method)": [[327, "mlx.nn.Module.update"]], "update_modules() (module method)": [[328, "mlx.nn.Module.update_modules"]], "multiheadattention (class in mlx.nn)": [[329, "mlx.nn.MultiHeadAttention"]], "prelu (class in mlx.nn)": [[330, "mlx.nn.PReLU"], [377, "mlx.nn.prelu"]], "quantizedembedding (class in mlx.nn)": [[331, "mlx.nn.QuantizedEmbedding"]], "quantizedlinear (class in mlx.nn)": [[332, "mlx.nn.QuantizedLinear"]], "rmsnorm (class in mlx.nn)": [[333, "mlx.nn.RMSNorm"]], "rnn (class in mlx.nn)": [[334, "mlx.nn.RNN"]], "relu (class in mlx.nn)": [[335, "mlx.nn.ReLU"], [378, "mlx.nn.relu"]], "rope (class in mlx.nn)": [[336, "mlx.nn.RoPE"]], "selu (class in mlx.nn)": [[337, "mlx.nn.SELU"], [380, "mlx.nn.selu"]], "sequential (class in mlx.nn)": [[338, "mlx.nn.Sequential"]], "silu (class in mlx.nn)": [[339, "mlx.nn.SiLU"], [382, "mlx.nn.silu"]], "sinusoidalpositionalencoding (class in mlx.nn)": [[340, "mlx.nn.SinusoidalPositionalEncoding"]], "softshrink (class in mlx.nn)": [[341, "mlx.nn.Softshrink"], [385, "mlx.nn.softshrink"]], "step (class in mlx.nn)": [[342, "mlx.nn.Step"], [386, "mlx.nn.step"]], "transformer (class in mlx.nn)": [[343, "mlx.nn.Transformer"]], "upsample (class in mlx.nn)": [[344, "mlx.nn.Upsample"]], "constant() (in module mlx.nn.init)": [[345, "mlx.nn.init.constant"]], "glorot_normal() (in module mlx.nn.init)": [[346, "mlx.nn.init.glorot_normal"]], "glorot_uniform() (in module mlx.nn.init)": [[347, "mlx.nn.init.glorot_uniform"]], "he_normal() (in module mlx.nn.init)": [[348, "mlx.nn.init.he_normal"]], "he_uniform() (in module mlx.nn.init)": [[349, "mlx.nn.init.he_uniform"]], "identity() (in module mlx.nn.init)": [[350, "mlx.nn.init.identity"]], "normal() (in module mlx.nn.init)": [[351, "mlx.nn.init.normal"]], "uniform() (in module mlx.nn.init)": [[352, "mlx.nn.init.uniform"]], "elu (class in mlx.nn)": [[353, "mlx.nn.elu"]], "gelu_approx (class in mlx.nn)": [[355, "mlx.nn.gelu_approx"]], "gelu_fast_approx (class in mlx.nn)": [[356, "mlx.nn.gelu_fast_approx"]], "glu (class in mlx.nn)": [[357, "mlx.nn.glu"]], "hardswish (class in mlx.nn)": [[358, "mlx.nn.hardswish"]], "leaky_relu (class in mlx.nn)": [[359, "mlx.nn.leaky_relu"]], "log_sigmoid (class in mlx.nn)": [[360, "mlx.nn.log_sigmoid"]], "log_softmax (class in mlx.nn)": [[361, "mlx.nn.log_softmax"]], "binary_cross_entropy (class in mlx.nn.losses)": [[362, "mlx.nn.losses.binary_cross_entropy"]], "cosine_similarity_loss (class in mlx.nn.losses)": [[363, "mlx.nn.losses.cosine_similarity_loss"]], "cross_entropy (class in mlx.nn.losses)": [[364, "mlx.nn.losses.cross_entropy"]], "gaussian_nll_loss (class in mlx.nn.losses)": [[365, "mlx.nn.losses.gaussian_nll_loss"]], "hinge_loss (class in mlx.nn.losses)": [[366, "mlx.nn.losses.hinge_loss"]], "huber_loss (class in mlx.nn.losses)": [[367, "mlx.nn.losses.huber_loss"]], "kl_div_loss (class in mlx.nn.losses)": [[368, "mlx.nn.losses.kl_div_loss"]], "l1_loss (class in mlx.nn.losses)": [[369, "mlx.nn.losses.l1_loss"]], "log_cosh_loss (class in mlx.nn.losses)": [[370, "mlx.nn.losses.log_cosh_loss"]], "margin_ranking_loss (class in mlx.nn.losses)": [[371, "mlx.nn.losses.margin_ranking_loss"]], "mse_loss (class in mlx.nn.losses)": [[372, "mlx.nn.losses.mse_loss"]], "nll_loss (class in mlx.nn.losses)": [[373, "mlx.nn.losses.nll_loss"]], "smooth_l1_loss (class in mlx.nn.losses)": [[374, "mlx.nn.losses.smooth_l1_loss"]], "triplet_loss (class in mlx.nn.losses)": [[375, "mlx.nn.losses.triplet_loss"]], "relu6 (class in mlx.nn)": [[379, "mlx.nn.relu6"]], "sigmoid (class in mlx.nn)": [[381, "mlx.nn.sigmoid"]], "softmax (class in mlx.nn)": [[383, "mlx.nn.softmax"]], "softplus (class in mlx.nn)": [[384, "mlx.nn.softplus"]], "tanh (class in mlx.nn)": [[387, "mlx.nn.tanh"]], "module (class in mlx.nn)": [[392, "mlx.nn.Module"]], "adadelta (class in mlx.optimizers)": [[395, "mlx.optimizers.AdaDelta"]], "adafactor (class in mlx.optimizers)": [[396, "mlx.optimizers.Adafactor"]], "adagrad (class in mlx.optimizers)": [[397, "mlx.optimizers.Adagrad"]], "adam (class in mlx.optimizers)": [[398, "mlx.optimizers.Adam"]], "adamw (class in mlx.optimizers)": [[399, "mlx.optimizers.AdamW"]], "adamax (class in mlx.optimizers)": [[400, "mlx.optimizers.Adamax"]], "lion (class in mlx.optimizers)": [[401, "mlx.optimizers.Lion"]], "apply_gradients() (optimizer method)": [[402, "mlx.optimizers.Optimizer.apply_gradients"]], "init() (optimizer method)": [[403, "mlx.optimizers.Optimizer.init"]], "state (optimizer property)": [[404, "mlx.optimizers.Optimizer.state"]], "update() (optimizer method)": [[405, "mlx.optimizers.Optimizer.update"]], "rmsprop (class in mlx.optimizers)": [[406, "mlx.optimizers.RMSprop"]], "sgd (class in mlx.optimizers)": [[407, "mlx.optimizers.SGD"]], "cosine_decay() (in module mlx.optimizers)": [[408, "mlx.optimizers.cosine_decay"]], "exponential_decay() (in module mlx.optimizers)": [[409, "mlx.optimizers.exponential_decay"]], "join_schedules() (in module mlx.optimizers)": [[410, "mlx.optimizers.join_schedules"]], "linear_schedule() (in module mlx.optimizers)": [[411, "mlx.optimizers.linear_schedule"]], "step_decay() (in module mlx.optimizers)": [[412, "mlx.optimizers.step_decay"]], "optimizer (class in mlx.optimizers)": [[414, "mlx.optimizers.Optimizer"]]}}) \ No newline at end of file +Search.setIndex({"docnames": ["cpp/ops", "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.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.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_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.conv_general", "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.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.divide", "python/_autosummary/mlx.core.divmod", "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.layer_norm", "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.identity", "python/_autosummary/mlx.core.inner", "python/_autosummary/mlx.core.isclose", "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.inv", "python/_autosummary/mlx.core.linalg.norm", "python/_autosummary/mlx.core.linalg.qr", "python/_autosummary/mlx.core.linalg.svd", "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.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.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.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/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.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.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_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.conv_general.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.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.divide.rst", "python/_autosummary/mlx.core.divmod.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.layer_norm.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.identity.rst", "python/_autosummary/mlx.core.inner.rst", "python/_autosummary/mlx.core.isclose.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.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.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.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.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.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 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.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.sum", "mlx.core.array.swapaxes", "mlx.core.array.tolist", "mlx.core.array.transpose", "mlx.core.array.var", "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.conv_general", "mlx.core.convolve", "mlx.core.cos", "mlx.core.cosh", "mlx.core.cummax", "mlx.core.cummin", "mlx.core.cumprod", "mlx.core.cumsum", "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.divide", "mlx.core.divmod", "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.layer_norm", "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.identity", "mlx.core.inner", "mlx.core.isclose", "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.inv", "mlx.core.linalg.norm", "mlx.core.linalg.qr", "mlx.core.linalg.svd", "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.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.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.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, 4, 5, 6, 9, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 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, 106, 107, 108, 109, 112, 113, 116, 117, 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, 196, 197, 198, 199, 200, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 252, 253, 254, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 278, 293, 297, 313, 320, 327, 330, 335, 341, 361, 362, 363, 364, 365, 366, 367, 368, 369, 374, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 406, 409, 412, 415, 416, 417, 418, 419, 420, 421, 426, 427, 428, 429, 430, 431, 432, 439, 440, 441, 443, 444, 445, 447], "arang": [0, 166, 286, 361, 442, 444], "doubl": [0, 4], "start": [0, 1, 3, 4, 6, 7, 17, 129, 169, 194, 244, 282, 439, 442, 447], "stop": [0, 1, 4, 17, 169, 195, 250, 441, 442], "step": [0, 2, 4, 5, 17, 293, 307, 313, 345, 416, 423, 428, 430, 431, 432, 439, 440], "dtype": [0, 1, 4, 10, 17, 29, 36, 37, 75, 126, 143, 146, 152, 159, 166, 167, 169, 203, 215, 217, 218, 219, 222, 223, 263, 265, 270, 274, 286, 332, 361, 362, 363, 364, 365, 366, 367, 368, 369, 381, 383, 390, 428, 429, 430, 431, 432, 439, 440, 441, 442, 444, 445, 446], "streamordevic": [0, 1], "": [0, 1, 3, 4, 5, 45, 49, 60, 90, 105, 107, 132, 133, 135, 136, 138, 139, 141, 142, 149, 166, 168, 170, 183, 205, 210, 214, 229, 232, 233, 249, 251, 268, 269, 270, 272, 277, 293, 296, 307, 313, 318, 324, 325, 327, 331, 332, 333, 337, 345, 414, 423, 424, 436, 439, 441, 443, 444, 445, 446, 447], "A": [0, 1, 4, 6, 7, 8, 66, 78, 90, 127, 128, 130, 149, 160, 166, 167, 168, 170, 179, 180, 181, 186, 196, 210, 213, 214, 215, 217, 218, 219, 222, 223, 244, 248, 251, 268, 271, 272, 276, 277, 278, 279, 280, 281, 282, 283, 284, 293, 297, 302, 307, 308, 312, 314, 324, 328, 329, 332, 338, 339, 344, 350, 352, 360, 363, 364, 366, 373, 394, 395, 412, 414, 418, 420, 422, 423, 425, 430, 439, 440, 441, 443, 444], "1d": [0, 94, 97, 232, 257], "number": [0, 1, 10, 17, 59, 68, 90, 95, 96, 107, 126, 148, 149, 152, 160, 169, 206, 210, 211, 214, 218, 221, 223, 226, 229, 260, 261, 265, 268, 271, 272, 276, 293, 297, 298, 299, 300, 302, 303, 308, 312, 340, 341, 360, 361, 363, 364, 365, 366, 428, 430, 431, 436, 439, 441, 448], "option": [0, 2, 4, 13, 14, 16, 17, 25, 26, 27, 28, 31, 32, 33, 34, 35, 36, 38, 39, 40, 41, 42, 43, 44, 46, 47, 50, 51, 52, 53, 54, 55, 56, 57, 58, 61, 62, 63, 64, 65, 67, 69, 70, 71, 72, 73, 74, 76, 77, 79, 80, 81, 82, 86, 90, 91, 94, 95, 96, 97, 100, 101, 102, 103, 107, 108, 109, 114, 126, 127, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 146, 147, 148, 149, 152, 157, 158, 164, 165, 166, 167, 168, 169, 170, 179, 181, 183, 184, 193, 196, 203, 206, 207, 209, 210, 211, 213, 214, 215, 217, 218, 219, 221, 222, 223, 226, 227, 242, 243, 244, 247, 248, 249, 253, 255, 256, 260, 262, 263, 264, 265, 266, 267, 268, 269, 272, 274, 276, 279, 280, 281, 282, 295, 296, 297, 298, 299, 300, 307, 313, 316, 317, 318, 320, 324, 325, 327, 332, 337, 340, 342, 343, 345, 348, 352, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 415, 416, 417, 418, 419, 420, 421, 423, 426, 427, 428, 436, 439, 446, 448], "int": [0, 1, 4, 5, 8, 14, 16, 17, 25, 26, 27, 28, 32, 33, 34, 35, 39, 40, 41, 42, 43, 44, 47, 54, 55, 56, 57, 58, 61, 64, 66, 69, 72, 73, 74, 75, 77, 79, 86, 87, 91, 94, 95, 96, 100, 101, 102, 103, 107, 108, 109, 124, 126, 129, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 146, 148, 149, 152, 159, 166, 169, 179, 181, 183, 186, 187, 188, 189, 192, 193, 196, 198, 203, 206, 207, 209, 210, 211, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 226, 227, 229, 242, 243, 244, 247, 248, 249, 253, 254, 256, 257, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 272, 274, 276, 284, 293, 295, 296, 297, 298, 299, 300, 304, 306, 307, 308, 312, 313, 314, 316, 317, 318, 340, 342, 343, 344, 345, 348, 352, 360, 374, 382, 383, 387, 392, 394, 412, 428, 430, 431, 432], "linspac": 0, "num": [0, 4, 169, 221], "50": [0, 169], "float32": [0, 1, 10, 17, 126, 130, 152, 159, 166, 167, 169, 203, 215, 217, 218, 222, 223, 265, 274, 286, 361, 362, 363, 364, 365, 366, 367, 368, 369, 381, 383, 390, 428, 429, 430, 431, 432, 439, 440, 441, 442, 443, 444, 445, 446], "evenli": [0, 169], "space": [0, 1, 169, 392], "rang": [0, 1, 2, 3, 4, 5, 7, 17, 143, 147, 169, 364, 366, 372, 373, 414, 428, 429, 430, 431, 432, 436, 439, 441, 443, 447], "astyp": [0, 1, 4, 320, 444], "convert": [0, 1, 75, 80, 81, 82, 106, 143, 212, 342, 343, 443, 444, 445], "an": [0, 1, 2, 4, 5, 7, 9, 14, 16, 29, 80, 81, 82, 87, 94, 95, 96, 111, 122, 126, 127, 130, 143, 146, 152, 164, 166, 170, 193, 198, 203, 204, 206, 209, 210, 211, 226, 227, 229, 244, 247, 254, 256, 257, 260, 261, 265, 272, 274, 275, 279, 280, 281, 282, 293, 295, 296, 301, 308, 313, 314, 316, 317, 318, 320, 340, 341, 343, 345, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 372, 396, 409, 415, 425, 429, 434, 436, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448], "given": [0, 1, 7, 14, 16, 27, 37, 79, 87, 89, 91, 100, 101, 102, 103, 107, 109, 122, 124, 131, 132, 133, 134, 135, 136, 140, 141, 142, 146, 147, 166, 179, 181, 183, 192, 196, 201, 209, 217, 219, 229, 237, 242, 244, 249, 253, 255, 261, 262, 263, 265, 266, 267, 269, 284, 295, 296, 301, 317, 318, 324, 340, 382, 384, 390], "data": [0, 1, 5, 6, 9, 17, 126, 140, 141, 146, 152, 169, 203, 222, 263, 265, 270, 274, 303, 362, 363, 364, 365, 366, 367, 368, 369, 439, 440, 442, 444], "type": [0, 1, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 36, 66, 75, 78, 79, 80, 81, 82, 83, 84, 85, 87, 88, 89, 90, 91, 94, 95, 96, 97, 98, 99, 106, 107, 108, 109, 112, 113, 114, 116, 117, 119, 120, 121, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 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, 186, 192, 193, 196, 197, 198, 199, 200, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 252, 253, 254, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 278, 279, 282, 293, 332, 360, 362, 363, 364, 365, 366, 367, 368, 369, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 439, 442], "as_strid": 0, "std": [0, 1, 368], "vector": [0, 1, 3, 6, 153, 160, 166, 256, 271, 272, 304, 383, 445], "shape": [0, 1, 2, 4, 5, 63, 78, 79, 86, 87, 90, 94, 95, 96, 109, 112, 130, 131, 134, 137, 140, 141, 142, 146, 147, 160, 165, 180, 203, 204, 213, 214, 215, 217, 218, 219, 222, 223, 227, 257, 270, 271, 273, 274, 275, 293, 295, 296, 297, 298, 299, 300, 302, 303, 307, 312, 313, 316, 317, 318, 327, 345, 362, 363, 364, 365, 366, 367, 368, 369, 383, 394, 414, 439, 441, 442, 445, 447], "size_t": [0, 1], "stride": [0, 1, 79, 94, 95, 96, 295, 296, 298, 299, 300, 317, 318, 348, 442], "offset": [0, 1, 4, 44, 79, 109, 127, 129, 263], "creat": [0, 1, 4, 7, 79, 114, 126, 152, 251, 293, 412, 414, 430, 439, 442, 444], "view": [0, 2, 79, 444], "copi": [0, 1, 4, 6, 207, 243, 444], "anoth": [0, 89, 159, 180, 252, 273, 286, 293, 320, 439, 441, 442, 447], "full": [0, 1, 5, 63, 76, 97, 242, 338, 339, 384, 439, 440, 443], "val": [0, 29, 146], "fill": [0, 1, 146, 204, 265, 275, 362, 363, 364, 365, 366, 368, 369], "valu": [0, 3, 4, 11, 15, 17, 25, 26, 48, 75, 78, 89, 126, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 146, 154, 166, 168, 169, 186, 206, 213, 214, 215, 217, 218, 219, 222, 223, 232, 256, 257, 268, 272, 277, 279, 280, 281, 282, 286, 296, 301, 302, 303, 309, 312, 316, 318, 324, 340, 341, 356, 358, 360, 362, 381, 382, 383, 384, 385, 386, 388, 389, 390, 391, 392, 393, 406, 412, 416, 419, 428, 429, 431, 432, 441], "templat": [0, 1], "typenam": [0, 1], "t": [0, 1, 4, 7, 120, 130, 148, 164, 211, 268, 293, 295, 307, 313, 317, 345, 415, 416, 417, 418, 419, 420, 421, 426, 427, 439, 441, 447], "zero": [0, 126, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 184, 191, 265, 266, 267, 275, 293, 295, 296, 301, 302, 303, 327, 362, 363, 364, 365, 366, 367, 368, 369, 409, 416, 442], "const": [0, 1, 384], "inlin": 0, "zeros_lik": 0, "ones": [0, 1, 4, 204, 234, 265, 338, 339, 440, 442], "ones_lik": 0, "ey": [0, 4, 165], "n": [0, 1, 4, 29, 86, 94, 95, 96, 126, 131, 133, 134, 136, 137, 140, 142, 152, 217, 249, 265, 269, 295, 296, 297, 298, 299, 300, 302, 303, 307, 313, 317, 318, 345, 361, 389, 394, 440], "m": [0, 1, 4, 7, 86, 126, 147, 166, 265, 295, 296, 317, 318, 415, 439], "k": [0, 4, 43, 86, 108, 126, 130, 147, 262, 265, 266, 267, 295, 316, 317, 325], "specifi": [0, 1, 17, 36, 95, 96, 109, 138, 139, 146, 149, 166, 169, 198, 203, 214, 226, 254, 256, 257, 260, 263, 264, 268, 272, 274, 297, 358, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 406, 440, 441, 447], "diagon": [0, 43, 108, 126, 263, 265, 266, 267], "everywher": 0, "els": [0, 1, 4, 293, 325, 440, 443], "ident": [0, 126, 250, 293, 334], "squar": [0, 3, 4, 128, 152, 165, 230, 245, 268, 280, 293, 344, 391, 393, 415, 416, 418, 419, 420, 441, 444], "matrix": [0, 3, 13, 43, 86, 107, 108, 126, 147, 148, 152, 164, 165, 166, 167, 168, 180, 184, 210, 211, 217, 342, 343, 367, 409], "major": [0, 1], "tri": 0, "tril": 0, "x": [0, 1, 3, 4, 5, 37, 86, 112, 113, 120, 125, 127, 128, 148, 152, 166, 211, 215, 229, 234, 238, 266, 267, 273, 280, 282, 293, 295, 296, 297, 305, 306, 308, 312, 314, 315, 316, 317, 318, 319, 320, 341, 344, 346, 352, 358, 361, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 393, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 412, 414, 421, 439, 440, 441, 442, 443, 444, 445, 447], "0": [0, 1, 3, 4, 5, 7, 8, 13, 17, 37, 43, 44, 47, 64, 69, 77, 79, 91, 94, 95, 96, 108, 109, 126, 130, 143, 147, 149, 165, 166, 167, 185, 192, 206, 213, 218, 223, 226, 229, 244, 248, 249, 263, 265, 266, 267, 268, 269, 272, 278, 279, 281, 282, 293, 295, 296, 297, 298, 299, 300, 301, 302, 303, 305, 308, 309, 312, 314, 315, 317, 318, 341, 346, 348, 352, 356, 358, 360, 362, 363, 364, 365, 366, 367, 368, 369, 370, 372, 373, 375, 376, 377, 378, 381, 383, 385, 386, 390, 393, 394, 396, 397, 398, 399, 405, 406, 409, 412, 415, 416, 418, 419, 420, 421, 423, 426, 427, 428, 429, 430, 431, 432, 436, 439, 440, 441, 442, 443, 444, 445, 446], "triu": 0, "reshap": [0, 4, 166, 361, 442], "flatten": [0, 27, 28, 100, 101, 102, 103, 166, 205, 207, 226, 243, 256, 257, 262, 279], "start_axi": [0, 47, 143], "end_axi": [0, 47, 143], "1": [0, 1, 2, 4, 5, 13, 17, 27, 28, 37, 44, 47, 94, 95, 96, 108, 109, 125, 130, 131, 132, 134, 135, 137, 138, 139, 140, 141, 142, 143, 153, 159, 166, 167, 180, 184, 193, 205, 207, 210, 214, 217, 218, 223, 238, 243, 256, 262, 263, 268, 278, 281, 282, 286, 293, 295, 296, 297, 298, 299, 300, 301, 302, 303, 305, 306, 307, 308, 312, 313, 314, 316, 317, 318, 341, 344, 345, 348, 352, 358, 361, 363, 364, 365, 366, 367, 368, 369, 370, 372, 373, 374, 376, 379, 380, 381, 382, 383, 384, 385, 386, 387, 389, 390, 392, 393, 394, 399, 400, 402, 403, 404, 406, 409, 412, 414, 415, 416, 417, 418, 419, 420, 421, 423, 426, 427, 428, 429, 430, 431, 432, 439, 440, 441, 442, 444, 445, 446, 447], "dimens": [0, 1, 4, 14, 16, 25, 26, 60, 66, 75, 80, 81, 82, 90, 95, 96, 109, 124, 129, 138, 139, 141, 142, 143, 147, 148, 153, 164, 165, 166, 167, 168, 179, 180, 181, 183, 196, 209, 210, 214, 221, 249, 253, 257, 260, 264, 269, 297, 298, 299, 300, 302, 303, 306, 307, 308, 312, 313, 314, 340, 344, 345, 348, 360, 361, 374, 383, 439, 441], "squeez": [0, 361, 439], "ax": [0, 1, 14, 16, 25, 26, 76, 124, 132, 133, 135, 136, 138, 139, 141, 142, 143, 153, 166, 179, 181, 183, 196, 206, 209, 242, 247, 249, 253, 254, 260, 264, 269, 441], "remov": [0, 109, 180, 214, 247, 383], "singleton": [0, 14, 16, 25, 26, 114, 179, 180, 181, 183, 196, 209, 249, 253, 269], "axi": [0, 1, 4, 5, 14, 16, 25, 26, 27, 28, 32, 33, 34, 35, 39, 40, 41, 42, 54, 55, 56, 57, 61, 69, 72, 73, 77, 91, 100, 101, 102, 103, 109, 112, 124, 127, 128, 131, 134, 137, 138, 139, 140, 141, 142, 143, 166, 179, 181, 183, 196, 198, 206, 207, 209, 214, 226, 242, 243, 244, 247, 248, 249, 253, 254, 256, 257, 261, 262, 263, 264, 269, 270, 272, 295, 296, 306, 317, 318, 345, 374, 380, 382, 383, 387, 392, 394, 402, 403, 442], "all": [0, 1, 2, 5, 7, 15, 27, 37, 80, 81, 82, 90, 95, 96, 112, 113, 114, 126, 133, 136, 139, 142, 147, 148, 168, 180, 206, 207, 247, 276, 293, 320, 321, 325, 328, 329, 330, 335, 337, 340, 352, 360, 361, 409, 412, 434, 436, 439, 442, 443, 445, 448], "expand_dim": 0, "add": [0, 1, 2, 4, 13, 37, 124, 175, 206, 210, 298, 299, 300, 441, 447], "slice": [0, 442], "each": [0, 1, 66, 107, 122, 129, 148, 159, 164, 165, 168, 180, 184, 206, 210, 211, 214, 226, 234, 235, 244, 261, 264, 270, 272, 273, 302, 303, 304, 307, 308, 313, 345, 348, 360, 381, 383, 436, 439, 440, 443], "slice_upd": 0, "src": 0, "updat": [0, 1, 3, 4, 5, 37, 90, 276, 280, 282, 297, 320, 321, 327, 332, 333, 334, 339, 414, 416, 419, 421, 422, 423, 427, 428, 429, 430, 431, 432, 439, 440, 443], "from": [0, 1, 4, 5, 6, 79, 106, 107, 109, 112, 113, 138, 139, 141, 142, 146, 147, 166, 170, 180, 184, 189, 192, 204, 210, 212, 213, 214, 215, 216, 219, 222, 234, 247, 250, 252, 256, 257, 262, 263, 273, 275, 279, 280, 281, 282, 283, 293, 316, 325, 327, 340, 363, 364, 365, 366, 368, 369, 384, 393, 409, 438, 439, 440, 441, 443, 444, 445, 446, 447], "sourc": [0, 1, 2, 58, 198, 264, 440], "split": [0, 306, 308, 374], "num_split": 0, "sub": [0, 5, 109, 221, 263, 276], "along": [0, 1, 25, 26, 90, 91, 100, 101, 102, 103, 112, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 147, 148, 166, 226, 242, 244, 248, 256, 257, 260, 261, 262, 263, 270, 293, 306, 345, 374], "indic": [0, 1, 15, 25, 26, 27, 28, 37, 147, 148, 149, 154, 155, 156, 157, 158, 168, 244, 256, 257, 268, 334, 336, 383, 390, 430, 442], "meshgrid": 0, "bool": [0, 1, 14, 15, 16, 25, 26, 32, 33, 34, 35, 39, 40, 41, 42, 54, 55, 56, 57, 61, 73, 75, 77, 78, 90, 96, 100, 101, 102, 103, 114, 115, 129, 148, 154, 159, 164, 166, 170, 179, 181, 183, 184, 190, 193, 196, 209, 211, 249, 253, 269, 297, 298, 299, 300, 307, 308, 312, 313, 314, 316, 320, 324, 325, 327, 332, 334, 337, 340, 343, 345, 348, 352, 360, 361, 381, 384, 416, 427], "spars": [0, 184], "fals": [0, 1, 4, 14, 15, 16, 25, 26, 32, 33, 34, 35, 39, 40, 41, 42, 54, 55, 56, 57, 61, 73, 77, 78, 90, 96, 100, 101, 102, 103, 114, 154, 159, 164, 166, 170, 179, 181, 183, 184, 193, 196, 209, 249, 253, 269, 273, 276, 279, 280, 281, 282, 286, 308, 312, 314, 316, 325, 327, 337, 340, 343, 348, 352, 360, 361, 381, 384, 416, 427, 444], "string": [0, 1, 186, 444, 446], "index": [0, 1, 6, 8, 27, 37, 124, 126, 149, 184, 207, 256, 257, 268, 284], "xy": [0, 184], "coordin": [0, 184], "clip": [0, 278, 416], "a_min": [0, 89], "nullopt": 0, "a_max": [0, 89], "limit": [0, 1, 89, 192, 193, 442], "concaten": [0, 4, 112], "stack": [0, 439], "new": [0, 1, 5, 87, 109, 198, 201, 227, 248, 264, 270, 280, 281, 332, 340, 412, 414, 425, 430, 439, 442, 443, 444], "repeat": [0, 261], "arr": [0, 231, 442], "tile": [0, 130], "rep": [0, 261], "transpos": [0, 4, 30, 148, 211], "permut": [0, 5], "accord": [0, 215, 273, 276, 340, 363, 364, 365, 366], "initializer_list": 0, "swapax": 0, "axis1": [0, 44, 74, 109, 254, 263], "axis2": [0, 44, 74, 109, 254, 263], "swap": [0, 97, 193, 254, 339], "two": [0, 1, 12, 13, 15, 23, 78, 81, 83, 84, 85, 86, 109, 116, 119, 132, 135, 141, 147, 148, 150, 151, 154, 162, 163, 164, 165, 167, 168, 175, 180, 182, 197, 199, 202, 205, 254, 282, 296, 306, 313, 318, 374, 382, 439, 440, 441, 442, 447], "moveaxi": 0, "destin": [0, 1, 58, 198], "move": [0, 1, 198, 447], "pad": [0, 94, 95, 96, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 295, 296, 298, 299, 300, 317, 318], "low_pad_s": 0, "high_pad_s": 0, "pad_valu": 0, "constant": [0, 1, 4, 7, 127, 128, 206, 293, 297, 308, 314, 344, 384, 394, 426, 428, 439, 444], "pair": [0, 1, 206, 327, 348], "pad_width": [0, 206], "revers": [0, 1, 39, 40, 41, 42, 79, 100, 101, 102, 103, 264, 352], "order": [0, 27, 79, 96, 166, 207, 210, 262, 293, 308, 338, 350, 423, 439, 441], "broadcast_to": 0, "broadcast": [0, 1, 12, 15, 83, 84, 85, 87, 89, 116, 117, 119, 146, 150, 151, 154, 161, 162, 163, 175, 180, 182, 197, 199, 202, 208, 213, 214, 217, 222, 223, 225, 228, 252, 257, 273, 340], "broadcast_arrai": [0, 1], "input": [0, 1, 3, 4, 11, 12, 13, 14, 15, 16, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 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, 106, 108, 109, 112, 113, 116, 117, 119, 120, 121, 123, 124, 125, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 147, 148, 149, 150, 151, 153, 154, 155, 156, 157, 158, 160, 161, 162, 163, 164, 165, 166, 167, 168, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 196, 197, 198, 199, 200, 202, 204, 205, 206, 207, 208, 209, 210, 211, 212, 221, 224, 225, 226, 227, 228, 229, 230, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 252, 253, 254, 256, 257, 258, 259, 260, 261, 262, 263, 264, 266, 267, 268, 269, 270, 272, 273, 275, 295, 296, 297, 298, 299, 300, 302, 303, 304, 306, 307, 308, 312, 313, 314, 316, 317, 318, 340, 343, 344, 345, 348, 358, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 374, 381, 382, 384, 385, 386, 387, 389, 390, 392, 394, 406, 409, 439, 441, 442, 445, 446], "against": 0, "one": [0, 1, 4, 7, 37, 75, 80, 89, 95, 96, 124, 126, 127, 128, 166, 173, 180, 211, 214, 247, 252, 286, 337, 361, 383, 440, 447], "equal": [0, 15, 27, 78, 126, 151, 154, 163, 202, 207, 219, 244, 312, 316], "b": [0, 1, 2, 4, 12, 13, 15, 23, 78, 83, 84, 85, 86, 116, 117, 119, 145, 147, 150, 151, 153, 154, 161, 162, 163, 166, 175, 176, 178, 180, 182, 197, 199, 202, 205, 208, 210, 225, 228, 252, 260, 268, 281, 282, 306, 316, 345, 361, 374, 441, 442, 443, 444, 445, 446, 447], "return": [0, 1, 3, 4, 5, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 36, 48, 66, 75, 78, 79, 80, 81, 82, 83, 84, 85, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 106, 107, 108, 109, 112, 113, 114, 116, 117, 119, 120, 121, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 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, 188, 192, 193, 196, 197, 198, 199, 200, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 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, 293, 307, 313, 320, 321, 322, 324, 325, 326, 327, 328, 329, 330, 334, 335, 337, 338, 339, 345, 362, 363, 364, 365, 366, 367, 368, 369, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 409, 412, 422, 438, 439, 440, 441, 442, 443, 444, 446, 447], "element": [0, 1, 11, 12, 18, 19, 20, 21, 22, 23, 24, 27, 68, 79, 83, 84, 85, 88, 98, 99, 100, 101, 102, 103, 107, 116, 117, 119, 120, 121, 123, 125, 126, 144, 145, 148, 150, 151, 154, 155, 156, 157, 158, 161, 162, 163, 171, 172, 173, 174, 175, 176, 177, 178, 182, 184, 197, 199, 200, 202, 207, 208, 210, 211, 224, 225, 226, 228, 230, 238, 239, 240, 241, 245, 246, 252, 256, 258, 259, 262, 268, 270, 273, 301, 302, 303, 307, 311, 313, 319, 341, 345, 348, 376, 377, 379, 380, 395, 396, 398, 401, 402, 403, 404, 439, 441], "wise": [0, 1, 11, 12, 18, 19, 20, 21, 22, 23, 24, 83, 84, 85, 88, 98, 99, 116, 117, 119, 120, 121, 123, 125, 144, 145, 150, 151, 154, 161, 162, 163, 171, 172, 173, 174, 175, 176, 177, 178, 182, 197, 199, 200, 202, 208, 224, 225, 228, 230, 238, 239, 240, 241, 245, 246, 252, 258, 259, 302, 303, 311, 319, 341, 376, 377, 379, 380, 395, 396, 398, 401, 402, 403, 404, 439], "not_equ": 0, "greater": [0, 4, 27, 125, 151, 207, 278, 358, 406], "greater_equ": 0, "less": [0, 4, 27, 163, 207, 348, 393], "less_equ": 0, "array_equ": [0, 15, 154], "equal_nan": [0, 15, 78, 154], "true": [0, 1, 3, 4, 15, 39, 40, 41, 42, 78, 90, 100, 101, 102, 103, 129, 148, 154, 159, 164, 166, 170, 184, 193, 211, 242, 273, 276, 279, 280, 281, 282, 286, 293, 297, 298, 299, 300, 307, 308, 312, 313, 314, 316, 324, 325, 327, 334, 337, 343, 345, 348, 352, 360, 361, 381, 389, 416], "have": [0, 1, 4, 7, 15, 78, 80, 81, 82, 86, 112, 138, 139, 141, 142, 148, 154, 180, 194, 214, 270, 279, 313, 340, 350, 421, 423, 438, 439, 440, 442, 443, 447], "same": [0, 1, 4, 7, 15, 37, 78, 87, 90, 95, 96, 97, 112, 127, 128, 137, 140, 141, 142, 148, 149, 154, 160, 206, 214, 229, 270, 271, 273, 281, 293, 296, 297, 301, 308, 312, 318, 342, 362, 363, 364, 365, 366, 367, 368, 369, 383, 394, 412, 422, 436, 439, 440, 442, 447], "isnan": 0, "isinf": 0, "isposinf": 0, "isneginf": 0, "where": [0, 5, 126, 154, 210, 268, 272, 295, 296, 297, 298, 299, 300, 301, 302, 303, 305, 307, 308, 312, 313, 314, 316, 317, 318, 324, 341, 344, 345, 358, 365, 366, 370, 371, 373, 384, 390, 396, 399, 401, 406, 423, 440, 441, 442], "condit": [0, 1, 273, 447], "y": [0, 1, 3, 4, 5, 37, 273, 293, 297, 302, 308, 312, 314, 316, 344, 385, 390, 393, 414, 417, 439, 440, 441, 443, 444], "select": [0, 2, 7, 262, 273, 320, 324, 332], "depend": [0, 1, 2, 3, 7, 75, 166, 307, 313, 345, 440, 442, 446, 447], "keepdim": [0, 14, 16, 25, 26, 32, 33, 34, 35, 54, 55, 56, 57, 61, 73, 77, 166, 179, 181, 183, 196, 209, 242, 249, 253, 269], "ar": [0, 1, 3, 4, 5, 6, 7, 15, 17, 78, 86, 87, 89, 90, 96, 97, 109, 122, 126, 132, 133, 135, 136, 138, 139, 141, 142, 143, 148, 149, 154, 155, 156, 157, 158, 159, 160, 166, 167, 170, 180, 193, 205, 206, 207, 210, 211, 213, 214, 215, 219, 222, 223, 234, 235, 247, 248, 256, 268, 271, 272, 276, 279, 280, 286, 297, 298, 299, 300, 301, 302, 303, 308, 312, 314, 316, 327, 340, 343, 361, 381, 383, 384, 408, 412, 421, 423, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447], "non": [0, 1, 7, 184, 335, 345, 395, 412], "allclos": 0, "rtol": [0, 15, 154], "1e": [0, 3, 5, 15, 154, 297, 308, 312, 314, 315, 344, 382, 384, 394, 415, 416, 417, 418, 419, 420, 423, 426, 428, 429, 430, 431, 432], "5": [0, 1, 3, 4, 7, 166, 193, 213, 282, 295, 297, 301, 302, 303, 305, 309, 312, 317, 356, 361, 362, 365, 366, 372, 375, 393, 405, 409, 426, 428, 429, 439, 441, 442], "atol": [0, 15, 154], "8": [0, 1, 4, 7, 166, 210, 286, 296, 312, 318, 360, 382, 415, 416, 417, 418, 419, 420, 426, 439, 442, 445, 447], "within": [0, 2, 27, 154], "toler": [0, 15, 154], "isclos": 0, "boolean": [0, 15, 78, 154, 155, 156, 157, 158, 176, 177, 178, 286, 336, 442], "reduc": [0, 7, 14, 16, 25, 26, 113, 179, 181, 183, 196, 209, 249, 253, 269, 282, 297, 360, 389], "output": [0, 1, 4, 7, 14, 15, 16, 17, 27, 79, 86, 87, 90, 100, 101, 102, 103, 126, 127, 128, 129, 130, 137, 140, 141, 142, 146, 149, 152, 154, 166, 169, 179, 181, 183, 184, 196, 203, 204, 207, 209, 213, 214, 215, 217, 218, 219, 222, 223, 234, 235, 242, 247, 249, 253, 257, 263, 265, 268, 269, 270, 271, 272, 273, 274, 275, 295, 296, 297, 298, 299, 300, 312, 316, 317, 318, 340, 343, 358, 360, 361, 363, 364, 365, 366, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 406, 409, 439, 440, 441, 442, 443, 444, 445, 446, 447], "i": [0, 1, 2, 4, 5, 6, 7, 15, 17, 27, 36, 75, 79, 89, 95, 96, 97, 100, 101, 102, 103, 108, 109, 112, 113, 115, 117, 122, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 145, 146, 147, 148, 154, 159, 160, 164, 165, 166, 167, 168, 170, 175, 179, 180, 184, 190, 193, 206, 207, 210, 211, 213, 214, 217, 218, 221, 222, 223, 227, 231, 232, 233, 238, 242, 244, 249, 250, 255, 256, 257, 260, 263, 264, 268, 269, 270, 271, 272, 273, 276, 278, 279, 280, 281, 282, 286, 288, 293, 295, 296, 297, 298, 299, 300, 301, 302, 303, 305, 307, 308, 312, 313, 314, 316, 317, 318, 324, 325, 331, 333, 334, 336, 337, 339, 340, 341, 343, 344, 345, 348, 352, 358, 360, 361, 365, 366, 371, 373, 381, 382, 384, 389, 390, 393, 394, 396, 401, 406, 412, 416, 419, 421, 422, 423, 428, 430, 431, 436, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448], "correspond": [0, 1, 14, 16, 75, 89, 107, 109, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 179, 181, 196, 209, 253, 260, 272, 280, 441], "ani": [0, 1, 4, 6, 17, 90, 279, 280, 281, 282, 283, 293, 305, 320, 321, 324, 333, 343, 360, 361, 409, 431, 438, 439, 441, 443, 445, 446, 447], "sum": [0, 1, 3, 12, 103, 113, 153, 166, 179, 242, 260, 263, 293, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 440, 442, 444], "mean": [0, 3, 4, 5, 128, 217, 218, 268, 293, 297, 308, 325, 344, 368, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 439, 441, 444], "comput": [0, 1, 3, 4, 5, 6, 7, 100, 101, 102, 103, 107, 125, 129, 149, 160, 164, 165, 166, 175, 183, 205, 210, 225, 242, 249, 250, 260, 268, 269, 271, 277, 293, 297, 307, 308, 312, 313, 314, 325, 338, 343, 344, 348, 360, 363, 364, 365, 366, 372, 373, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 414, 415, 416, 418, 419, 420, 421, 425, 439, 440, 441, 445, 447], "var": [0, 297, 308, 312, 314, 384], "ddof": [0, 77, 249, 269], "varianc": [0, 249, 269, 297, 308, 384], "standard": [0, 5, 48, 75, 180, 215, 218, 249, 360, 363, 365, 368, 440, 445], "deviat": [0, 218, 249, 363, 365, 368], "deviatoin": 0, "prod": 0, "The": [0, 1, 2, 4, 5, 6, 7, 11, 12, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 36, 45, 49, 59, 60, 66, 75, 78, 79, 80, 81, 82, 83, 84, 85, 87, 88, 89, 90, 91, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 106, 107, 108, 109, 112, 113, 114, 116, 117, 119, 120, 121, 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, 150, 151, 152, 153, 154, 155, 156, 157, 158, 160, 161, 162, 163, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 188, 189, 192, 193, 194, 196, 197, 198, 199, 200, 202, 203, 204, 205, 206, 207, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 221, 222, 223, 224, 225, 226, 227, 228, 232, 233, 238, 239, 240, 241, 242, 243, 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, 286, 288, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 306, 307, 308, 312, 313, 314, 316, 317, 318, 320, 321, 325, 327, 331, 332, 333, 334, 337, 338, 339, 340, 342, 343, 344, 345, 348, 350, 352, 358, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 374, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 406, 409, 412, 414, 415, 416, 417, 418, 419, 420, 421, 424, 426, 427, 428, 431, 434, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448], "product": [0, 1, 13, 79, 102, 153, 160, 180, 205, 209, 260, 271, 340, 445], "max": [0, 1, 166, 182, 317, 318, 341, 376, 377, 382, 384, 385, 390, 394, 396, 398, 416, 420, 439, 441, 447], "maximum": [0, 5, 25, 37, 89, 100, 189, 193, 278, 293, 315, 346, 352, 372, 373, 378, 397, 412, 443], "min": [0, 1, 166, 197, 341, 376, 377, 396, 398], "minimum": [0, 26, 37, 89, 101, 352, 382], "argmin": 0, "argmax": [0, 5], "sort": [0, 27, 28, 207, 262], "argsort": 0, "partit": [0, 27], "kth": [0, 27, 207], "smaller": [0, 7, 207, 421, 439], "first": [0, 1, 2, 3, 4, 5, 7, 109, 112, 143, 149, 161, 168, 176, 178, 180, 207, 221, 228, 254, 260, 263, 268, 279, 281, 282, 293, 296, 308, 318, 361, 382, 390, 416, 418, 419, 420, 423, 439, 441, 444, 447], "argpartit": 0, "topk": 0, "logsumexp": 0, "ab": [0, 15, 154, 166, 268, 308, 312, 314, 319, 344, 373, 395, 439], "absolut": [0, 11, 15, 154, 372, 373, 393], "neg": [0, 109, 143, 157, 263, 315, 317, 318, 340, 384, 392, 394, 442], "negat": [0, 200], "sign": [0, 15, 154, 286, 421], "logical_not": 0, "logic": [0, 1, 176, 177, 178], "logical_and": 0, "logical_or": 0, "reciproc": [0, 230], "subtract": [0, 37], "multipli": [0, 1, 37, 148, 210, 211, 301, 352, 361], "divid": [0, 1, 37, 145, 210, 225, 440], "divmod": 0, "quotient": [0, 116, 117, 145], "remaind": [0, 117], "floor_divid": 0, "integ": [0, 10, 145, 147, 148, 159, 166, 186, 206, 210, 211, 213, 219, 244, 260, 272, 286, 304, 332, 430, 442], "divis": [0, 116, 145, 210, 225], "equival": [0, 1, 30, 63, 76, 117, 145, 148, 256, 305, 309, 310, 311, 339, 341, 343, 346, 347, 349, 351, 353, 354, 355, 356, 357, 359], "do": [0, 1, 4, 7, 270, 293, 326, 337, 409, 412, 419, 439, 440, 441, 443], "floor": [0, 145], "between": [0, 1, 6, 89, 143, 360, 382, 385, 386, 389, 430, 440, 443, 444, 447], "ceil": 0, "exp": [0, 125, 175, 179, 215, 242, 370, 387, 399, 400, 404, 439, 447], "exponenti": [0, 123, 125, 349, 370, 399, 429], "sin": [0, 352, 441, 445], "sine": [0, 20, 21, 240, 241, 441], "co": [0, 1, 352, 441], "cosin": [0, 18, 19, 98, 99, 382, 428, 430, 441], "tan": 0, "tangent": [0, 1, 22, 23, 24, 160, 258, 259, 359, 407], "arcsin": 0, "arc": 0, "arcco": 0, "arctan": 0, "arctan2": 0, "invers": [0, 18, 19, 20, 21, 22, 23, 24, 121, 134, 135, 136, 137, 138, 139, 165], "ratio": [0, 23], "sinh": 0, "hyperbol": [0, 19, 21, 24, 99, 241, 259, 359, 407], "cosh": [0, 389], "tanh": [0, 293, 305, 307, 313, 319, 345, 372, 395], "arcsinh": 0, "arccosh": 0, "arctanh": 0, "degre": [0, 212, 394], "radian": [0, 106], "log": [0, 173, 175, 179, 379, 380, 384, 387, 389, 392, 404], "natur": [0, 171, 173, 443], "logarithm": [0, 171, 172, 173, 174], "log2": 0, "base": [0, 1, 129, 166, 172, 174, 208, 348, 360, 412, 414, 420, 434, 436, 439, 442], "2": [0, 1, 3, 4, 5, 37, 95, 108, 109, 120, 132, 135, 137, 138, 139, 140, 141, 142, 143, 159, 164, 165, 166, 167, 168, 174, 180, 210, 217, 221, 260, 263, 265, 266, 267, 278, 282, 286, 293, 295, 296, 299, 305, 315, 317, 318, 344, 352, 361, 362, 363, 364, 365, 366, 367, 368, 369, 372, 383, 384, 386, 393, 394, 409, 412, 415, 417, 418, 419, 423, 426, 439, 440, 441, 442, 443, 444, 445, 446, 447], "log10": 0, "10": [0, 2, 4, 5, 172, 229, 234, 280, 293, 327, 409, 430, 432, 439, 440, 442], "log1p": 0, "plu": [0, 173], "logaddexp": 0, "sigmoid": [0, 4, 293, 351, 373, 379, 401], "logist": [0, 3, 238, 373, 401], "erf": [0, 121, 439], "error": [0, 1, 7, 114, 120, 121, 193, 244, 305, 371, 372, 373, 389, 391, 441, 444], "function": [0, 1, 2, 3, 4, 5, 6, 15, 79, 90, 117, 120, 121, 149, 154, 160, 164, 165, 166, 167, 168, 180, 238, 268, 271, 272, 277, 278, 280, 281, 282, 293, 305, 306, 309, 310, 311, 319, 321, 325, 332, 337, 341, 345, 346, 347, 349, 350, 351, 353, 354, 355, 356, 357, 358, 359, 360, 371, 372, 373, 374, 375, 376, 377, 379, 380, 395, 400, 402, 403, 404, 405, 406, 407, 409, 414, 423, 436, 438, 440, 442, 443, 444, 446], "erfinv": 0, "expm1": 0, "stop_gradi": [0, 441], "flow": [0, 250, 443], "gradient": [0, 3, 5, 149, 250, 268, 277, 278, 293, 325, 338, 343, 360, 389, 412, 414, 415, 416, 418, 419, 420, 421, 422, 425, 427, 439, 440, 441, 442, 443, 444, 445], "round": [0, 210], "decim": [0, 64, 229], "float": [0, 1, 10, 13, 15, 17, 75, 127, 128, 129, 130, 145, 146, 154, 159, 166, 211, 213, 218, 278, 286, 297, 301, 302, 303, 308, 312, 314, 320, 332, 344, 348, 352, 358, 360, 361, 362, 363, 364, 365, 366, 368, 369, 382, 383, 384, 386, 390, 393, 394, 405, 406, 415, 416, 417, 418, 419, 420, 421, 426, 427, 428, 429, 431, 432], "point": [0, 1, 3, 4, 7, 79, 145, 211, 286], "matmul": [0, 147, 447], "multipl": [0, 7, 13, 86, 127, 128, 147, 148, 180, 199, 210, 211, 340, 352, 429, 430, 432, 439, 443, 446], "gather": [0, 112, 147, 148], "slice_s": 0, "entri": [0, 302, 303], "take": [0, 1, 4, 5, 83, 84, 85, 90, 147, 149, 160, 182, 197, 204, 211, 257, 268, 271, 272, 275, 281, 282, 340, 436, 440, 441, 442, 446, 447, 448], "treat": [0, 1, 138, 139, 141, 142, 256, 361, 439], "take_along_axi": [0, 442], "scatter": 0, "paramet": [0, 1, 3, 4, 5, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 36, 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, 106, 107, 108, 109, 112, 113, 114, 116, 117, 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, 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, 192, 193, 194, 196, 197, 198, 199, 200, 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, 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, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 312, 313, 314, 315, 316, 317, 318, 320, 321, 324, 325, 327, 332, 333, 334, 337, 338, 339, 340, 341, 342, 343, 344, 345, 348, 350, 352, 356, 358, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 374, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 406, 408, 409, 412, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 425, 426, 427, 428, 429, 430, 431, 432, 434, 439, 440, 441, 443], "determin": [0, 1, 109, 217, 282, 286, 331, 446], "locat": [0, 1, 79, 338, 339, 440, 447], "assum": [0, 1, 4, 86, 167, 280, 293, 295, 296, 308, 317, 318], "d": [0, 1, 4, 108, 109, 153, 166, 180, 184, 205, 256, 263, 265, 266, 267, 283, 300, 303, 307, 313, 345, 415, 418, 420, 447], "simplic": 0, "which": [0, 1, 4, 5, 6, 7, 17, 36, 79, 90, 96, 109, 122, 129, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 149, 155, 156, 157, 158, 160, 164, 165, 166, 167, 168, 170, 184, 194, 210, 214, 215, 226, 227, 231, 232, 233, 234, 235, 247, 248, 256, 263, 268, 271, 272, 276, 296, 302, 303, 305, 318, 320, 324, 348, 383, 386, 390, 393, 409, 422, 423, 436, 439, 440, 441, 442, 443, 447, 448], "appli": [0, 37, 129, 130, 147, 168, 280, 281, 282, 293, 295, 296, 297, 298, 299, 300, 302, 303, 305, 306, 308, 309, 310, 311, 312, 314, 315, 316, 317, 318, 319, 321, 334, 341, 343, 344, 345, 346, 347, 349, 351, 353, 354, 355, 356, 357, 358, 359, 361, 370, 371, 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, 409, 422, 425, 431, 434, 439, 440], "note": [0, 1, 4, 7, 15, 79, 86, 90, 130, 138, 139, 148, 154, 166, 187, 210, 214, 270, 276, 293, 344, 361, 444, 446], "assign": [0, 1, 37, 412], "henc": [0, 1, 210, 439], "size": [0, 1, 4, 5, 49, 66, 86, 95, 107, 124, 127, 128, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 146, 148, 152, 159, 166, 188, 193, 210, 211, 214, 227, 244, 247, 270, 276, 293, 295, 296, 298, 299, 300, 304, 312, 317, 318, 342, 343, 361, 416, 440, 443, 444], "If": [0, 1, 4, 7, 14, 15, 16, 17, 25, 26, 27, 28, 75, 78, 79, 89, 91, 97, 100, 101, 102, 103, 108, 109, 112, 113, 114, 122, 127, 129, 140, 141, 142, 145, 146, 149, 154, 164, 166, 170, 179, 180, 181, 183, 184, 192, 193, 196, 203, 206, 207, 209, 214, 217, 226, 242, 243, 244, 249, 253, 255, 256, 257, 260, 262, 263, 268, 269, 272, 274, 276, 280, 282, 297, 298, 299, 300, 308, 314, 316, 325, 327, 337, 343, 345, 348, 350, 352, 361, 381, 383, 394, 416, 439, 440, 441, 443, 446, 447, 448], "provid": [0, 1, 4, 79, 107, 149, 260, 268, 280, 282, 288, 293, 320, 325, 327, 337, 338, 339, 342, 343, 360, 361, 408, 412, 440, 446, 448], "rank": [0, 390, 440], "must": [0, 1, 2, 7, 86, 89, 146, 148, 166, 213, 214, 217, 219, 222, 223, 273, 361, 444], "In": [0, 1, 4, 5, 37, 180, 210, 280, 293, 302, 308, 412, 415, 417, 418, 420, 421, 422, 438, 439, 440, 441, 443, 446, 447], "other": [0, 1, 4, 6, 159, 166, 293, 326, 412, 421, 439, 440, 442, 443, 445], "word": 0, "ndim": [0, 1, 143, 166, 168, 361], "lead": [0, 17, 79, 439], "remain": [0, 4, 268, 281, 301, 302, 303, 440], "For": [0, 1, 4, 7, 37, 130, 147, 159, 166, 210, 283, 293, 297, 302, 320, 325, 334, 337, 343, 348, 352, 361, 363, 364, 365, 366, 409, 436, 439, 440, 441, 442, 443, 444, 445, 446, 447], "exampl": [0, 2, 3, 4, 5, 7, 17, 37, 143, 166, 167, 251, 256, 278, 281, 282, 293, 295, 296, 297, 312, 317, 318, 325, 327, 334, 337, 361, 362, 363, 364, 365, 366, 367, 368, 369, 381, 383, 390, 409, 414, 423, 428, 429, 430, 431, 432, 436, 441, 442, 443, 444, 445, 446], "auto": [0, 1, 7], "4": [0, 1, 4, 107, 143, 148, 166, 210, 211, 234, 276, 282, 286, 295, 296, 297, 312, 317, 318, 342, 343, 360, 361, 363, 364, 365, 381, 439, 440, 442, 445, 447], "3": [0, 1, 4, 7, 143, 159, 166, 167, 278, 282, 300, 305, 361, 364, 366, 372, 377, 416, 421, 436, 439, 442, 444, 445], "out": [0, 1, 7, 86, 295, 296, 302, 303, 317, 318, 334, 439, 440, 441, 442], "produc": [0, 1, 7, 90, 340, 409], "thi": [0, 1, 4, 5, 7, 14, 15, 16, 17, 25, 26, 27, 28, 79, 118, 147, 148, 154, 160, 164, 165, 166, 167, 168, 175, 179, 180, 181, 183, 185, 187, 196, 207, 209, 214, 237, 242, 243, 244, 249, 253, 256, 262, 269, 278, 281, 282, 293, 301, 302, 303, 306, 307, 313, 321, 322, 324, 325, 328, 329, 330, 335, 337, 338, 339, 340, 343, 345, 358, 363, 364, 365, 366, 372, 373, 374, 389, 406, 412, 423, 438, 439, 440, 441, 443, 444, 446], "row": [0, 1, 79, 126, 152, 210, 265], "posit": [0, 4, 27, 109, 129, 143, 149, 158, 164, 198, 207, 217, 263, 268, 280, 293, 298, 299, 300, 340, 348, 352, 384, 394], "ad": [0, 1, 3, 7, 127, 312, 412, 415, 416, 417, 418, 419, 420, 426, 440, 443, 446], "we": [0, 1, 3, 4, 5, 107, 148, 210, 211, 293, 304, 342, 350, 419, 421, 436, 438, 439, 440, 441, 443, 447], "also": [0, 1, 4, 5, 6, 7, 10, 12, 83, 84, 85, 110, 116, 117, 119, 133, 136, 139, 142, 150, 151, 161, 162, 163, 175, 182, 197, 199, 202, 208, 210, 225, 228, 252, 276, 277, 288, 293, 324, 338, 340, 342, 343, 351, 371, 399, 401, 408, 414, 439, 440, 441, 442, 443, 444, 445, 448], "To": [0, 1, 2, 3, 4, 5, 7, 192, 293, 409, 439, 440, 441, 445], "control": [0, 315, 436, 443], "addit": [0, 1, 4, 7, 12, 13, 127, 128, 130, 170, 297, 308, 314, 340, 344, 412, 441], "item": [0, 1, 3, 4, 5, 280, 443, 444, 445], "togeth": [0, 1, 5, 210, 280, 281, 440], "doe": [0, 1, 2, 4, 7, 187, 270, 278, 293, 439, 442, 443, 444], "perform": [0, 1, 2, 4, 6, 13, 86, 96, 100, 101, 102, 103, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 147, 148, 180, 211, 229, 242, 256, 293, 308, 360, 365, 366, 439, 440, 442, 443, 447], "bound": [0, 219, 222, 223, 305, 369, 439, 442, 447], "check": [0, 1, 7, 78, 115, 159, 190, 327, 441, 442], "access": [0, 4, 48, 293, 412, 423, 440, 443, 447], "undefin": [0, 27, 164, 207, 217, 442], "typic": [0, 130, 304, 414, 439, 443], "result": [0, 4, 13, 17, 37, 75, 79, 90, 127, 128, 148, 166, 180, 211, 217, 226, 248, 280, 281, 282, 352, 439, 441, 444], "unintend": 0, "invalid": [0, 79], "memori": [0, 1, 6, 79, 185, 187, 188, 189, 191, 192, 193, 360, 412, 416, 439, 443, 444], "write": [0, 1, 4, 293, 444], "scatter_add": 0, "scatter_prod": 0, "scatter_max": 0, "linear": [0, 1, 4, 5, 6, 276, 280, 293, 305, 306, 315, 327, 343, 345, 346, 347, 349, 351, 361, 370, 371, 372, 373, 374, 378, 397, 398, 399, 401, 409, 412, 423, 431, 439], "scatter_min": 0, "sqrt": [0, 4, 120, 130, 297, 305, 308, 312, 314, 316, 344, 352, 363, 364, 365, 366, 372, 415, 417, 418, 419, 426, 439], "root": [0, 4, 128, 230, 245, 344], "rsqrt": 0, "softmax": [0, 4, 130, 293, 380, 383], "precis": [0, 1, 4, 125, 130, 293, 305, 344, 422, 439], "power": [0, 441, 444], "rais": [0, 4, 166, 193, 208, 244, 327], "cumsum": 0, "inclus": [0, 39, 40, 41, 42, 100, 101, 102, 103, 143], "cumul": [0, 79, 100, 101, 102, 103], "cumprod": 0, "cummax": 0, "cummin": 0, "conv_gener": 0, "weight": [0, 3, 94, 95, 96, 127, 128, 280, 293, 327, 331, 342, 343, 381, 383, 412, 416, 419, 421, 423, 427, 441, 443], "padding_lo": 0, "padding_hi": 0, "kernel_dil": [0, 96], "input_dil": [0, 96], "group": [0, 94, 95, 96, 107, 112, 113, 114, 130, 148, 210, 211, 270, 276, 308, 342, 343, 440], "flip": [0, 96, 97], "gener": [0, 1, 2, 3, 10, 17, 96, 126, 138, 139, 169, 184, 213, 217, 218, 219, 222, 223, 360, 436, 439, 442, 443, 448], "convolut": [0, 94, 95, 96, 97, 298, 299, 300, 302, 303], "filter": [0, 97, 298, 299, 300, 320, 324], "conv1d": [0, 293], "dilat": [0, 94, 95, 96, 298, 299], "conv2d": [0, 293], "2d": [0, 95, 109, 210, 297, 302], "conv3d": [0, 293], "tupl": [0, 29, 63, 66, 76, 91, 95, 96, 117, 122, 124, 160, 166, 167, 168, 206, 210, 227, 247, 268, 271, 279, 280, 281, 282, 283, 295, 296, 299, 300, 317, 318, 327, 329, 350, 361, 416, 418, 419, 420, 421, 438, 441], "3d": [0, 1, 297, 303, 361], "quantized_matmul": 0, "w": [0, 3, 95, 107, 148, 210, 211, 268, 281, 296, 297, 299, 300, 302, 303, 316, 318, 427, 441], "scale": [0, 1, 4, 13, 107, 127, 128, 129, 130, 148, 210, 211, 218, 278, 302, 303, 314, 340, 348, 349, 352, 361, 399, 416], "bias": [0, 107, 148, 210, 211, 307, 313, 325, 337, 340], "group_siz": [0, 107, 148, 210, 211, 276, 342, 343], "64": [0, 86, 107, 148, 210, 211, 276, 286, 342, 343], "bit": [0, 107, 148, 161, 210, 211, 228, 276, 286, 320, 342, 343, 344], "quantiz": [0, 107, 148, 170, 211, 342, 343], "its": [0, 1, 7, 180, 207, 221, 265, 277, 283, 293, 343, 418, 419, 420, 440, 444, 447], "last": [0, 4, 28, 75, 127, 128, 133, 136, 138, 139, 141, 142, 143, 147, 148, 153, 164, 165, 167, 168, 180, 189, 214, 243, 260, 270, 298, 299, 300, 302, 303, 308, 361, 444], "dequant": [0, 210], "gather_qmm": 0, "lhs_indic": [0, 147, 148], "rhs_indic": [0, 147, 148], "level": [0, 147, 148, 365, 366], "tensordot": 0, "contract": 0, "over": [0, 1, 4, 5, 14, 16, 25, 26, 27, 28, 94, 95, 96, 100, 101, 102, 103, 133, 136, 139, 142, 153, 166, 168, 169, 179, 181, 183, 196, 207, 209, 230, 242, 243, 249, 253, 260, 262, 269, 297, 298, 299, 300, 308, 314, 344, 383, 428, 431, 440, 441], "axes_a": 0, "axes_b": 0, "outer": [0, 439, 443], "inner": [0, 439], "addmm": 0, "c": [0, 1, 4, 13, 166, 295, 296, 297, 298, 299, 300, 302, 303, 312, 313, 317, 318, 444, 445, 447], "alpha": [0, 1, 13, 210, 370, 394, 396, 399, 419, 426], "f": [0, 1, 3, 5, 166, 293, 313, 419, 439, 444], "beta": [0, 1, 13, 107, 210, 297, 308, 312, 314, 393, 418, 419, 420, 421], "block_masked_mm": 0, "block_siz": [0, 86], "mask_out": [0, 86], "mask_lh": [0, 86], "mask_rh": [0, 86], "block": [0, 1, 4, 86, 360], "mask": [0, 4, 86, 130, 334, 340, 442], "gather_mm": [0, 148], "extract": [0, 4, 43, 108, 109, 293, 324, 412, 440], "construct": [0, 1, 5, 43, 108, 146, 203, 261, 274], "diag": [0, 168], "trace": [0, 2, 439], "implement": [0, 3, 5, 129, 130, 166, 304, 324, 340, 348, 350, 352, 358, 360, 361, 406, 415, 416, 417, 418, 420, 421, 422, 434, 439, 441], "allow": [0, 1, 159, 278, 293, 339, 412, 434, 440, 442, 445], "inject": 0, "ensur": [0, 1, 7, 278, 389, 440], "been": [0, 1, 4, 188, 443], "when": [0, 1, 4, 6, 7, 90, 96, 164, 165, 166, 168, 170, 298, 299, 300, 361, 365, 366, 387, 393, 412, 430, 436, 439, 440, 447], "atleast_1d": 0, "atleast": 0, "atleast_2d": 0, "atleast_3d": 0, "number_of_el": 0, "invert": 0, "int32": [0, 10, 17, 37, 143, 159, 166, 219, 286, 361, 442, 445], "some": [0, 1, 3, 4, 5, 325, 337, 423, 439, 441, 443], "scalar": [0, 1, 12, 13, 15, 29, 48, 75, 78, 83, 84, 85, 86, 87, 89, 116, 117, 119, 145, 146, 149, 150, 151, 154, 161, 162, 163, 166, 169, 175, 176, 177, 178, 180, 182, 197, 199, 202, 206, 208, 213, 219, 222, 223, 225, 228, 232, 252, 268, 270, 273, 277, 394, 441, 443, 445], "us": [0, 2, 3, 4, 5, 6, 7, 17, 37, 79, 107, 110, 112, 113, 117, 129, 143, 148, 161, 164, 165, 166, 167, 168, 180, 187, 188, 189, 192, 210, 211, 226, 227, 228, 255, 279, 282, 286, 288, 293, 296, 302, 304, 305, 307, 313, 316, 318, 320, 324, 331, 338, 340, 342, 343, 345, 348, 352, 360, 361, 365, 366, 372, 373, 382, 409, 412, 414, 415, 416, 418, 419, 420, 421, 422, 423, 436, 438, 439, 440, 441, 442, 445, 447], "shapeless": [0, 90], "compil": [0, 2, 6, 7, 110, 118, 440, 441, 443], "pun": 0, "intend": [0, 439], "conjug": [0, 92], "bitwise_and": 0, "bitwis": [0, 83, 84, 85, 161, 228], "bitwise_or": 0, "bitwise_xor": 0, "exclus": [0, 79, 85], "left_shift": 0, "shift": [0, 161, 228, 297], "left": [0, 4, 129, 161, 166, 210, 295, 296, 305, 317, 318, 348, 361, 372, 373, 384, 386, 394], "right_shift": 0, "right": [0, 1, 7, 210, 228, 295, 296, 305, 317, 318, 361, 372, 373, 384, 386, 394], "you": [1, 2, 4, 5, 6, 7, 293, 352, 360, 409, 436, 439, 440, 441, 442, 444, 446, 447], "can": [1, 2, 4, 6, 7, 12, 17, 63, 76, 79, 83, 84, 85, 90, 109, 110, 111, 116, 117, 119, 122, 150, 151, 161, 162, 163, 166, 175, 182, 197, 199, 202, 208, 213, 214, 219, 222, 223, 225, 228, 232, 252, 263, 268, 282, 293, 296, 304, 318, 324, 337, 342, 350, 361, 383, 409, 412, 414, 422, 423, 436, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448], "extend": [1, 206], "guid": [1, 6], "explain": 1, "how": [1, 4, 5, 293, 295, 296, 298, 299, 300, 304, 317, 318, 342, 361, 422, 439, 442, 447], "simpl": [1, 4, 5, 293, 304, 408, 439, 440, 441, 443], "let": [1, 3, 4, 439, 441, 443, 444], "sai": [1, 4, 409, 443], "would": [1, 4, 361, 440, 442, 443, 444, 447], "like": [1, 4, 6, 159, 204, 275, 303, 389, 423, 425, 439, 440, 441, 443, 444, 445, 447], "them": [1, 4, 112, 293, 325, 337, 440, 447], "both": [1, 12, 83, 84, 85, 116, 117, 119, 150, 151, 159, 161, 162, 163, 166, 175, 182, 197, 199, 202, 208, 214, 225, 228, 252, 276, 295, 296, 312, 313, 317, 318, 414, 439, 440, 441, 445, 447], "coeffici": [1, 415, 416, 418, 419, 420, 421], "respect": [1, 3, 5, 127, 128, 147, 148, 149, 210, 268, 280, 293, 297, 305, 308, 312, 314, 412, 441, 445], "get": [1, 3, 5, 7, 95, 96, 104, 105, 186, 187, 188, 189, 216, 293, 439, 441, 443, 447], "z": [1, 307, 439, 443], "directli": [1, 4, 79], "import": [1, 2, 3, 4, 5, 7, 166, 234, 268, 279, 280, 281, 282, 283, 293, 295, 296, 297, 312, 317, 318, 327, 361, 381, 383, 390, 409, 412, 439, 440, 441, 442, 443, 444, 445], "core": [1, 2, 3, 4, 5, 276, 293, 295, 296, 297, 312, 317, 318, 327, 330, 332, 335, 361, 362, 363, 364, 365, 366, 367, 368, 369, 381, 383, 390, 409, 412, 414, 439, 440, 444, 445], "mx": [1, 2, 3, 4, 5, 37, 92, 93, 114, 143, 159, 166, 167, 170, 234, 268, 278, 293, 295, 296, 297, 312, 315, 317, 318, 320, 327, 331, 346, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 378, 381, 382, 383, 387, 390, 397, 407, 409, 412, 414, 436, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448], "def": [1, 3, 4, 5, 268, 293, 412, 439, 440, 441, 442, 443, 444, 447], "simple_axpbi": 1, "while": [1, 2, 4, 7, 227, 348, 443, 444], "leav": [1, 122, 280, 281, 282], "howev": [1, 293, 305, 308, 423, 436, 439, 440, 443, 444], "mai": [1, 166, 276, 302, 440, 441, 442], "need": [1, 4, 5, 6, 7, 78, 210, 293, 338, 339, 352, 360, 436, 440, 441, 443, 444, 445, 447], "underli": [1, 270], "perhap": [1, 4], "make": [1, 2, 4, 5, 7, 180, 201, 237, 293, 428, 429, 431, 432, 439, 443, 445, 447], "faster": [1, 117, 371, 439, 441], "differenti": [1, 6], "tutori": 1, "go": [1, 4, 441], "through": [1, 250, 360, 421, 439, 441, 444], "It": [1, 4, 7, 149, 237, 268, 278, 282, 293, 339, 343, 422, 434, 444, 446], "cover": 1, "structur": [1, 422, 441], "librari": [1, 7, 288, 293], "redirect": 1, "acceler": [1, 297], "appropri": [1, 439], "metal": [1, 6], "vjp": [1, 445], "jvp": [1, 445], "graph": [1, 4, 5, 6, 441], "rule": 1, "evalu": [1, 4, 5, 6, 122, 160, 271, 293, 323, 334, 412, 414, 439, 445], "discuss": 1, "more": [1, 2, 5, 9, 75, 109, 147, 164, 165, 168, 180, 192, 193, 232, 233, 286, 293, 297, 302, 348, 352, 360, 361, 363, 364, 365, 366, 436, 439, 440, 441, 442, 445, 447], "detail": [1, 9, 192, 293, 302, 348, 352, 361, 363, 364, 365, 366, 415, 417, 418, 420, 421, 442, 445], "front": 1, "thei": [1, 3, 4, 7, 15, 97, 148, 154, 350, 385, 412, 421, 438, 439, 440, 443, 445, 446, 447], "defin": [1, 3, 4, 5, 7, 148, 166, 211, 276, 279, 444], "api": [1, 440, 441], "axpbi": 1, "follow": [1, 4, 5, 6, 7, 17, 97, 107, 147, 166, 210, 281, 293, 372, 373, 387, 415, 416, 417, 418, 419, 420, 421, 427, 436, 439, 440, 441, 447], "numpi": [1, 4, 5, 6, 12, 15, 17, 83, 84, 85, 87, 116, 117, 119, 150, 151, 154, 161, 162, 163, 175, 180, 182, 197, 199, 202, 208, 225, 228, 252, 443, 445, 446], "style": [1, 12, 15, 83, 84, 85, 116, 117, 119, 150, 151, 154, 161, 162, 163, 175, 180, 182, 197, 199, 202, 208, 225, 228, 252], "upcast": 1, "factor": [1, 13, 164, 167, 361, 383, 429, 432], "stream": [1, 6, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 31, 32, 33, 34, 35, 36, 38, 39, 40, 41, 42, 43, 44, 46, 47, 50, 51, 52, 53, 54, 55, 56, 57, 58, 61, 62, 63, 64, 65, 67, 69, 70, 71, 72, 73, 74, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 105, 106, 107, 108, 109, 116, 117, 119, 120, 121, 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, 150, 151, 152, 153, 154, 155, 156, 157, 158, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 217, 218, 219, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 269, 270, 273, 274, 275, 440, 447], "schedul": [1, 193, 414, 428, 429, 430, 431, 432, 434, 447], "simplest": [1, 293, 440], "wai": [1, 4, 7, 293, 361, 439, 440, 441, 442], "term": [1, 384, 415, 416, 417, 418, 419, 420, 426], "exist": [1, 2, 4, 325, 337], "themselv": [1, 439], "contain": [1, 4, 7, 27, 28, 66, 90, 109, 137, 138, 139, 147, 148, 166, 176, 177, 178, 210, 244, 273, 278, 293, 324, 326, 327, 333, 360, 390, 409, 412, 439, 440, 441], "act": [1, 389], "nor": [1, 149, 268], "rather": [1, 441, 447], "easi": [1, 293, 440], "interfac": 1, "part": [1, 441, 442], "further": [1, 7, 441], "ha": [1, 2, 4, 5, 6, 7, 75, 90, 109, 137, 138, 140, 141, 142, 149, 164, 165, 168, 184, 188, 214, 297, 307, 313, 316, 345, 412, 414, 439, 442, 443, 445, 447], "method": [1, 4, 8, 9, 10, 29, 111, 276, 284, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 331, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 412, 415, 416, 417, 418, 419, 420, 421, 423, 426, 427, 434], "run": [1, 2, 4, 5, 6, 7, 8, 205, 284, 297, 320, 415, 416, 418, 419, 420, 439, 440, 443, 447, 448], "our": [1, 4, 5, 350, 415, 416, 417, 418, 420, 421, 440], "concret": [1, 307, 313, 316, 345, 443, 447], "class": [1, 4, 5, 8, 9, 10, 29, 111, 284, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 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, 412, 415, 416, 417, 418, 419, 420, 421, 426, 427, 434], "public": [1, 293], "explicit": [1, 423, 436, 444], "alpha_": 1, "beta_": 1, "know": [1, 4], "itself": [1, 276, 423], "popul": 1, "avoid": [1, 332, 439], "unnecessari": [1, 4], "alloc": [1, 188, 192, 193, 412], "respons": 1, "void": 1, "eval_cpu": 1, "overrid": [1, 118], "eval_gpu": 1, "jacobian": [1, 160, 271, 445], "primal": [1, 160, 271], "argnum": [1, 149, 268, 441], "cotan": 1, "across": [1, 308, 440], "repres": [1, 4, 111, 114, 148, 390, 394, 444], "virtual": 1, "vmap": [1, 441, 443, 445], "print": [1, 3, 4, 5, 7, 278, 279, 280, 281, 283, 293, 436, 439, 440, 441, 442, 443, 444, 445], "ostream": 1, "o": [1, 7, 130, 313], "is_equival": 1, "privat": 1, "fall": 1, "eval": [1, 2, 3, 4, 5, 293, 412, 414, 439, 440, 441, 443, 445], "deriv": [1, 441, 443], "pass": [1, 4, 5, 63, 76, 205, 206, 268, 277, 279, 280, 281, 293, 325, 337, 338, 339, 350, 439, 440, 443], "reimplement": 1, "now": [1, 4, 7, 343, 439, 440, 444], "promot": 1, "promoted_dtyp": 1, "promote_typ": 1, "out_dtyp": 1, "is_floating_point": 1, "cast": [1, 36, 140, 141, 142, 170, 320, 332, 444], "up": [1, 4, 439], "x_cast": 1, "y_cast": 1, "broadcasted_input": 1, "out_shap": 1, "unique_ptr": 1, "make_shar": 1, "to_stream": 1, "handl": [1, 293, 439], "resolv": 1, "No": [1, 4], "happen": [1, 4, 127, 360, 414, 439, 443], "call": [1, 2, 4, 5, 30, 145, 185, 189, 293, 304, 325, 337, 342, 350, 412, 414, 423, 439, 440, 441, 443], "alon": [1, 444], "onli": [1, 4, 6, 7, 78, 86, 95, 96, 166, 210, 217, 270, 293, 324, 325, 327, 332, 334, 337, 338, 339, 412, 439, 440, 441, 446, 447], "execut": [1, 7, 80, 81, 82, 189, 444, 447], "devic": [1, 6, 7, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 31, 32, 33, 34, 35, 36, 38, 39, 40, 41, 42, 43, 44, 46, 47, 50, 51, 52, 53, 54, 55, 56, 57, 58, 61, 62, 63, 64, 65, 67, 69, 70, 71, 72, 73, 74, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 116, 117, 119, 120, 121, 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, 150, 151, 152, 153, 154, 155, 156, 157, 158, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 186, 193, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 217, 218, 219, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 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, 269, 270, 273, 274, 275, 284, 447, 448], "user": [1, 4, 293], "naiv": [1, 441], "version": [1, 7, 107, 175, 179, 210, 242, 272, 436, 441, 442], "declar": 1, "member": [1, 293, 330, 335], "earlier": 1, "find": [1, 3, 7, 440], "captur": [1, 2, 90, 194, 195, 293, 439], "axpby_impl": 1, "readi": 1, "malloc_or_wait": 1, "synchron": [1, 439], "avail": [1, 3, 4, 5, 7, 9, 115, 190, 288, 447], "There": [1, 293, 361, 439], "wait": [1, 4, 193], "here": [1, 4, 439, 441, 443, 446, 447], "request": 1, "under": [1, 166], "pressur": 1, "set_data": 1, "nbyte": 1, "collect": [1, 280, 281, 438], "pointer": 1, "x_ptr": 1, "y_ptr": 1, "out_ptr": 1, "relev": 1, "static_cast": 1, "out_idx": 1, "map": [1, 5, 37, 170, 280, 304, 320], "x_offset": 1, "elem_to_loc": 1, "y_offset": 1, "contigu": [1, 79], "regularli": 1, "default": [1, 7, 13, 14, 15, 16, 17, 25, 26, 27, 28, 78, 79, 86, 90, 91, 94, 95, 96, 104, 105, 107, 108, 109, 112, 113, 114, 126, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 147, 148, 149, 152, 154, 164, 165, 166, 167, 168, 169, 170, 179, 181, 183, 184, 192, 193, 196, 203, 207, 209, 210, 211, 213, 214, 215, 217, 218, 219, 221, 222, 223, 226, 227, 229, 236, 237, 243, 244, 247, 248, 249, 251, 253, 255, 260, 262, 263, 264, 265, 266, 267, 268, 269, 272, 274, 276, 286, 295, 296, 297, 298, 299, 300, 306, 307, 309, 312, 313, 315, 316, 317, 318, 320, 325, 327, 332, 334, 337, 340, 341, 342, 343, 345, 348, 352, 356, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 374, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 412, 415, 416, 417, 418, 419, 420, 421, 426, 427, 428, 436, 438, 439, 441, 444, 446, 448], "doesn": [1, 293], "should": [1, 3, 4, 5, 7, 79, 109, 112, 127, 128, 130, 160, 185, 194, 210, 257, 263, 268, 271, 276, 279, 293, 298, 299, 300, 302, 303, 334, 340, 350, 383, 385, 390, 412, 438, 439, 440, 441, 443, 444, 448], "work": [1, 2, 4, 7, 193, 439, 440, 441, 442, 443], "incom": 1, "accordingli": 1, "dispatch": 1, "float16": [1, 10, 170, 286, 320, 443, 444], "bfloat16": [1, 10, 286, 444], "complex64": [1, 286], "throw": [1, 90, 114], "encount": [1, 441], "unexpect": [1, 17], "correct": [1, 7, 418, 419, 420, 442, 443], "float16_t": 1, "bfloat16_t": 1, "complex64_t": 1, "runtime_error": 1, "support": [1, 4, 6, 7, 15, 86, 130, 143, 154, 164, 165, 167, 168, 170, 180, 210, 217, 440, 441, 442, 444, 446], "good": [1, 7, 439, 440, 447], "fallback": 1, "routin": 1, "framework": [1, 6], "certain": [1, 334, 439], "case": [1, 4, 114, 133, 136, 137, 139, 140, 141, 142, 143, 164, 165, 167, 168, 180, 227, 247, 296, 302, 318, 358, 375, 393, 399, 405, 406, 422, 423, 439, 441, 445, 446, 447, 448], "half": [1, 17, 219, 223, 348, 443], "fix": [1, 4, 7, 443], "direct": [1, 4, 322, 421, 447], "column": [1, 126, 152, 210], "place": [1, 4, 37, 229, 276, 440, 443, 444], "expect": [1, 4, 298, 299, 300, 301, 302, 303, 352, 360, 384, 439, 442], "catlas_saxpbi": 1, "axpby_impl_acceler": 1, "special": 1, "copy_inplac": 1, "copytyp": 1, "inplac": 1, "incx": 1, "inci": 1, "fit": [1, 210, 447], "criteria": 1, "With": 1, "mind": [1, 4], "finish": 1, "assert": 1, "singl": [1, 5, 122, 160, 170, 184, 206, 271, 296, 318, 439, 442, 446], "flag": [1, 7, 439, 444], "row_contigu": 1, "col_contigu": 1, "common": [1, 414, 439, 443], "just": [1, 5, 314, 439, 442], "much": [1, 4, 295, 296, 317, 318, 439, 443], "enough": [1, 443], "plan": [1, 439], "enjoi": 1, "speed": 1, "appl": [1, 4, 6, 7, 447], "silicon": [1, 4, 6, 7, 447], "address": 1, "shade": 1, "languag": 1, "kernel": [1, 7, 94, 95, 96, 295, 296, 317, 318, 439, 442], "written": 1, "help": [1, 4, 439, 447], "resourc": 1, "walkthrough": 1, "pipelin": 1, "document": [1, 2, 63, 76, 232, 233, 286, 439, 441, 442], "specif": [1, 7, 440, 441], "cpp": 1, "keep": [1, 14, 16, 25, 26, 179, 181, 183, 196, 209, 249, 253, 269, 293, 324, 441, 443], "launch": [1, 114, 440, 442], "exactli": [1, 4, 327, 441], "mani": [1, 79, 244, 298, 299, 300, 304, 342, 439, 440, 443], "thread": 1, "pick": 1, "axpby_gener": 1, "buffer": [1, 187, 444], "x_stride": 1, "6": [1, 4, 166, 234, 347, 360, 364, 372, 373, 377, 384, 394, 398, 426, 439, 442, 445], "y_stride": 1, "7": [1, 4, 166, 210, 442], "uint": 1, "thread_position_in_grid": 1, "instanti": [1, 5, 443], "give": [1, 4, 5, 27, 439], "uniqu": [1, 436], "host": 1, "name": [1, 148, 170, 210, 211, 232, 233, 234, 235, 293, 308, 324, 327, 329, 440, 442, 446], "so": [1, 4, 7, 149, 268, 301, 361, 414, 439, 440, 443, 447], "identifi": [1, 279, 438], "instantiate_axpbi": 1, "type_nam": 1, "host_nam": 1, "axpby_general_": 1, "set": [1, 4, 5, 7, 90, 110, 112, 113, 114, 118, 127, 129, 186, 192, 193, 236, 237, 251, 305, 314, 316, 323, 325, 332, 333, 334, 337, 338, 343, 348, 358, 382, 394, 406, 412, 416, 423, 436, 441, 443], "grid": [1, 184], "shown": 1, "below": [1, 7, 166, 265, 267, 286, 361, 443], "prepar": [1, 4], "carri": 1, "ostringstream": 1, "kname": 1, "axpby_": 1, "general_": 1, "type_to_nam": 1, "sure": [1, 2, 4, 7, 293, 439], "look": [1, 4, 440], "folder": 1, "register_librari": 1, "mlx_ext": 1, "get_colocated_mtllib_path": 1, "get_kernel": 1, "str": [1, 97, 149, 166, 170, 184, 186, 194, 231, 232, 233, 234, 235, 268, 279, 283, 320, 321, 324, 325, 327, 329, 331, 337, 361, 365, 366, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394], "encod": [1, 129, 348, 352, 360, 383], "compute_encod": 1, "get_command_encod": 1, "setcomputepipelinest": 1, "regist": [1, 5], "those": [1, 4, 293], "nelem": 1, "set_input_arrai": 1, "set_output_arrai": 1, "setbyt": 1, "sizeof": 1, "threadgroup": 1, "higher": [1, 153, 390, 441], "than": [1, 4, 75, 97, 109, 117, 129, 147, 150, 151, 162, 163, 164, 165, 168, 180, 192, 278, 280, 348, 358, 361, 390, 393, 406, 416, 421, 439, 441, 447], "tgp_size": 1, "maxtotalthreadsperthreadgroup": 1, "mtl": 1, "group_dim": 1, "grid_dim": 1, "among": 1, "dispatchthread": 1, "few": [1, 4, 5, 6, 7, 440, 443, 445], "thing": [1, 4, 440], "about": [1, 4, 5, 186, 443, 447], "befor": [1, 4, 7, 27, 207, 324, 360, 423, 440, 442, 443], "track": [1, 293, 297], "activ": [1, 7, 187, 302, 358, 360, 375, 395, 405, 406, 408, 439], "command_buff": 1, "mtlcommandbuff": 1, "associ": [1, 234, 235, 443], "reli": 1, "u": [1, 164, 168, 316, 339, 434, 443], "command": [1, 2, 7, 440], "instead": [1, 7, 293, 339, 352, 440, 441, 443], "end_encod": 1, "until": [1, 443, 445], "hit": 1, "flush": 1, "next": [1, 4, 5, 192], "These": [1, 90, 257, 383, 447], "built": [1, 7, 443], "top": [1, 262, 316, 361], "includ": [1, 100, 101, 102, 103, 187, 188, 193, 314, 321, 333, 343, 384, 439, 441, 442, 445, 446, 448], "forward": [1, 268, 439, 443], "mode": [1, 97, 323, 334, 336, 361, 365, 366, 440], "diff": 1, "push": 1, "op": [1, 205, 270, 325, 443], "similarli": [1, 7, 180, 441, 443], "scale_arr": 1, "contribut": 1, "tangent_x": 1, "tangent_i": 1, "cotang": [1, 271], "unus": 1, "arg": [1, 4, 9, 10, 111, 122, 234, 235], "push_back": 1, "fulli": [1, 6, 439, 440, 444, 447], "overal": 1, "directori": [1, 4, 7], "h": [1, 94, 95, 166, 296, 297, 299, 300, 302, 303, 307, 313, 318, 345, 441, 443], "mlx_sample_extens": 1, "__init__": [1, 4, 5, 8, 9, 10, 29, 111, 284, 293, 412], "py": [1, 4, 7, 440], "cmakelist": 1, "txt": 1, "setup": [1, 3, 5, 7, 439], "packag": [1, 3, 5, 288, 409, 440], "hold": [1, 4, 9, 10, 166, 439], "instal": 1, "nanobind": [1, 7, 360], "sinc": [1, 4, 5, 148, 189, 412, 421, 430, 444, 447], "compon": [1, 4], "etc": [1, 210, 293, 361, 440], "alreadi": [1, 2, 4, 440], "nb_modul": 1, "_ext": 1, "doc": [1, 5, 440], "sampl": [1, 3, 4, 169, 213, 214, 215, 217, 219, 222, 223, 363, 364, 365, 366, 368, 369, 384, 390, 394, 436, 439], "_a": 1, "nb": 1, "kw_onli": 1, "none": [1, 4, 8, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 31, 32, 33, 34, 35, 36, 38, 39, 40, 41, 42, 43, 44, 46, 47, 50, 51, 52, 53, 54, 55, 56, 57, 58, 61, 62, 63, 64, 65, 67, 69, 70, 71, 72, 73, 74, 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, 106, 107, 108, 109, 110, 112, 113, 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, 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, 191, 194, 195, 196, 197, 198, 199, 200, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 233, 234, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 272, 273, 274, 275, 276, 279, 280, 281, 282, 284, 295, 296, 305, 317, 318, 320, 324, 325, 332, 337, 340, 345, 352, 360, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 416, 434, 442], "r": [1, 4, 167, 268, 302, 307], "most": [1, 214, 293, 425, 439, 440, 441, 442, 443], "complex": [1, 92, 93, 138, 139, 140, 141, 142, 279, 286, 293, 339, 439, 441], "abov": [1, 4, 210, 266, 293, 361, 419, 440, 441, 442, 443, 447], "come": [1, 4, 440, 441], "bell": 1, "whistl": 1, "liter": [1, 361, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394], "modul": [1, 4, 5, 276, 277, 350, 360, 409, 425, 438, 439, 443], "caster": 1, "requir": [1, 4, 293, 440, 443, 444], "find_packag": 1, "config": [1, 440], "link": [1, 7], "your": [1, 4, 7, 412, 441, 443], "add_librari": 1, "target_sourc": 1, "cmake_current_list_dir": 1, "header": 1, "target_include_directori": 1, "target_link_librari": 1, "attach": 1, "conveni": [1, 5, 159], "mlx_build_metallib": 1, "metallib": [1, 7], "target": [1, 268, 381, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 439], "automat": [1, 6, 170, 440, 445, 446, 447], "what": [1, 4, 280], "practic": [1, 439], "mlx_build_met": [1, 7], "mlx_ext_metallib": 1, "titl": 1, "include_dir": 1, "project_source_dir": 1, "mlx_include_dir": 1, "output_directori": 1, "cmake_library_output_directori": 1, "add_depend": 1, "endif": 1, "final": [1, 3, 4, 5, 428, 431], "nanobind_add_modul": 1, "nb_static": 1, "stable_abi": 1, "lto": 1, "nomins": 1, "nb_domain": 1, "build_shared_lib": [1, 7], "target_link_opt": 1, "wl": 1, "rpath": 1, "loader_path": 1, "onc": [1, 7, 439], "describ": [1, 443], "util": [1, 4, 6, 7, 234, 293, 440], "__name__": [1, 4], "__main__": [1, 4], "descript": [1, 4, 286], "ext_modul": 1, "cmakeextens": 1, "cmdclass": 1, "build_ext": 1, "cmakebuild": 1, "package_data": 1, "dylib": 1, "extras_requir": 1, "dev": [1, 7], "zip_saf": 1, "python_requir": 1, "even": [1, 4, 90, 439, 443, 444], "though": [1, 4, 439, 443, 444], "pip": [1, 7], "develop": [1, 7], "j8": 1, "libmlx_ext": 1, "cpython": 1, "3x": 1, "darwin": 1, "try": [1, 7], "after": [1, 4, 5, 27, 143, 145, 148, 185, 207, 210, 297, 308, 314, 320, 321, 325, 327, 334, 337, 338, 339, 340, 360, 393, 439, 447], "abl": [1, 210], "simpli": [1, 4, 7, 315, 346, 370, 378, 397, 407, 412, 439, 440, 441], "plai": [1, 4], "quick": [1, 6], "benchmark": [1, 439], "see": [1, 4, 5, 7, 9, 10, 31, 32, 33, 34, 35, 38, 39, 40, 41, 42, 44, 46, 47, 50, 51, 52, 53, 54, 55, 56, 57, 58, 61, 62, 63, 64, 65, 67, 69, 70, 71, 72, 73, 74, 76, 77, 166, 192, 232, 233, 276, 286, 293, 297, 302, 305, 309, 310, 311, 323, 341, 342, 343, 346, 347, 348, 349, 351, 352, 353, 354, 355, 356, 357, 359, 361, 363, 364, 365, 366, 371, 372, 373, 399, 439, 440, 441, 442, 445, 447], "compar": [1, 78, 439], "time": [1, 4, 7, 193, 261, 293, 295, 296, 307, 313, 317, 318, 345, 439, 441, 443, 447], "set_default_devic": 1, "256": [1, 5], "512": [1, 2, 4, 360, 447], "random": [1, 2, 3, 4, 5, 6, 295, 296, 297, 312, 317, 318, 327, 334, 439, 441, 447, 448], "normal": [1, 3, 4, 127, 128, 217, 222, 293, 295, 296, 297, 308, 312, 314, 317, 318, 344, 360, 363, 365, 444, 447], "bench": 1, "warm": [1, 439], "100": [1, 3, 4, 431, 439, 441, 443, 447], "5000": 1, "e": [1, 5, 7, 120, 147, 148, 160, 238, 297, 298, 299, 300, 302, 303, 308, 312, 314, 325, 344, 379, 380, 402, 403, 408, 414, 417, 439, 443, 448], "simple_tim": 1, "custom_tim": 1, "3f": [1, 5, 439], "114": 1, "109": 1, "modest": 1, "improv": [1, 2, 4, 415, 416, 417, 418, 419, 420, 426, 439, 440], "awai": [1, 4], "nn": [1, 4, 5, 234, 280, 293, 409, 412, 414, 423, 425, 439, 443], "grad": [1, 3, 5, 268, 278, 414, 422, 439, 440, 441, 442, 443, 445], "profil": 2, "kei": [2, 4, 130, 186, 213, 214, 215, 217, 218, 219, 221, 222, 223, 279, 280, 324, 325, 337, 340, 423, 436, 438, 441], "optim": [2, 3, 5, 6, 338, 439, 440, 441, 443], "build": [2, 4, 6, 365, 412, 439], "mlx": [2, 3, 4, 5, 7, 288, 293, 409, 412, 414, 436, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447], "mlx_metal_debug": [2, 7], "debug": [2, 440], "record": [2, 189, 443], "dure": [2, 90, 301, 302, 303, 361, 444], "later": [2, 7], "inspect": [2, 439, 445], "label": [2, 3, 383, 390], "object": [2, 9, 29, 48, 75, 90, 159, 234, 272, 279, 280, 281, 282, 286, 302, 360, 438], "queue": 2, "readabl": 2, "enabl": [2, 4, 7, 90, 118, 427], "python": [2, 4, 48, 66, 75, 122, 279, 280, 281, 282, 283, 412, 422, 423, 425, 438, 440, 441, 444], "prepend": [2, 180], "cmake_arg": 2, "dmlx_metal_debug": 2, "ON": [2, 7], "start_captur": 2, "initi": [2, 3, 4, 114, 282, 293, 297, 308, 312, 314, 316, 341, 344, 362, 363, 364, 365, 366, 367, 368, 369, 412, 423, 428, 429, 431, 432, 439, 440, 443], "gpu": [2, 6, 7, 186, 439, 442, 447], "applic": [2, 7], "mtl_capture_en": 2, "uniform": [2, 293, 316, 327, 364, 366, 409, 436, 439, 441, 447], "trace_fil": 2, "mlx_trace": 2, "gputrac": [2, 194], "path": [2, 7, 194, 234, 235, 276, 281, 327, 440], "_": [2, 3, 4, 281, 293, 428, 429, 430, 431, 432, 436, 439, 443, 447], "stop_captur": 2, "open": [2, 7, 17, 219, 223], "replai": 2, "great": 2, "overview": 2, "oper": [2, 4, 6, 8, 36, 80, 81, 82, 96, 130, 147, 148, 208, 242, 250, 257, 284, 293, 360, 421, 439, 440, 441, 442, 443, 444, 445, 447, 448], "checkout": [2, 439], "inform": [2, 4, 5, 7, 186, 232, 233, 286, 293, 297, 305, 340, 441, 447], "skip": [2, 79], "save": [2, 4, 6, 170, 194, 210, 232, 233, 234, 235, 331, 443], "project": [2, 4, 340], "cmake": [2, 7], "mkdir": [2, 7], "cd": [2, 7], "g": [2, 7, 166, 210, 313, 408, 426, 427, 443, 448], "xcodeproj": 2, "metal_captur": 2, "schema": 2, "basic": [3, 229, 441], "model": [3, 5, 6, 234, 276, 277, 280, 281, 293, 320, 323, 325, 327, 331, 334, 336, 337, 338, 340, 360, 409, 412, 414, 422, 423, 425, 439, 440, 443], "learn": [3, 5, 6, 297, 308, 312, 314, 341, 344, 415, 416, 417, 418, 419, 420, 421, 426, 427], "problem": [3, 5, 293], "metadata": [3, 170, 232, 233], "num_featur": [3, 297], "num_exampl": 3, "1_000": 3, "num_it": 3, "10_000": 3, "iter": [3, 5, 168, 280, 281, 436, 439, 443], "sgd": [3, 5, 414, 421, 423, 428, 429, 432, 439], "lr": [3, 421], "01": [3, 315, 378, 419], "rate": [3, 415, 416, 417, 418, 419, 420, 421, 426, 427], "ll": [3, 5, 386, 439, 441], "synthet": 3, "dataset": [3, 440, 443], "design": [3, 6, 436, 447], "ground": [3, 4, 383, 393], "truth": [3, 383, 393], "w_star": 3, "gaussian": [3, 305, 371, 372, 373, 384], "nois": 3, "noisi": 3, "ep": [3, 127, 128, 297, 308, 312, 314, 344, 382, 384, 394, 415, 416, 417, 418, 419, 420, 426], "loss": [3, 5, 268, 293, 414, 439, 440, 441, 443], "loss_fn": [3, 5, 414, 439, 441], "grad_fn": [3, 439, 441], "randomli": [3, 4, 301, 302, 303], "Then": [3, 7], "repeatedli": 3, "verifi": [3, 7], "close": [3, 6, 7, 15, 154], "error_norm": 3, "5f": 3, "someth": [3, 4, 442], "00005": 3, "00364": 3, "complet": [3, 4, 7, 193, 338, 339, 441, 447], "github": [3, 5, 7, 439], "repo": [3, 5, 7, 439], "effici": [4, 6, 147, 302, 348, 443, 445], "larg": [4, 293, 340, 389, 439, 440, 443], "ish": 4, "transform": [4, 6, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 277, 293, 297, 308, 314, 316, 324, 325, 337, 343, 348, 442], "without": [4, 6, 250, 340, 408, 438, 439, 440, 443, 444, 447], "compromis": 4, "eas": 4, "llama": 4, "famili": 4, "200": [4, 430], "line": [4, 440, 443, 444], "neural": [4, 6, 304, 363, 364, 395, 409, 412, 426], "network": [4, 6, 297, 302, 304, 363, 364, 409, 412, 426, 440], "concis": 4, "architectur": [4, 7, 186, 293, 339, 447], "notabl": [4, 6], "rope": [4, 293], "cach": [4, 7, 185, 187, 188, 192, 439], "llamaattent": 4, "self": [4, 5, 8, 29, 30, 31, 32, 33, 34, 35, 36, 38, 39, 40, 41, 42, 43, 44, 46, 47, 48, 50, 51, 52, 53, 54, 55, 56, 57, 58, 61, 62, 63, 64, 65, 67, 69, 70, 71, 72, 73, 74, 75, 76, 77, 284, 293, 395, 412], "dim": [4, 129, 130, 304, 308, 312, 314, 340, 342, 344, 348, 352, 360], "num_head": [4, 340, 360], "super": [4, 5, 293, 412], "tradit": [4, 129, 302, 303, 348], "query_proj": 4, "bia": [4, 107, 127, 148, 210, 211, 280, 293, 298, 299, 300, 307, 313, 314, 316, 325, 327, 337, 340, 343, 345, 418, 419, 420, 423, 441], "key_proj": 4, "value_proj": 4, "out_proj": [4, 412], "__call__": [4, 5, 293, 412], "queri": [4, 130, 340], "l": [4, 5, 164, 293, 295, 297, 298, 307, 313, 317, 345, 393], "combin": [4, 168, 282], "key_cach": 4, "value_cach": 4, "math": [4, 394, 439], "score": [4, 130, 390], "values_hat": 4, "possibli": [4, 13, 86, 147, 180, 278], "rm": [4, 7, 128, 416], "swiglu": 4, "rmsnorm": [4, 293], "llamaencoderlay": 4, "mlp_dim": [4, 360], "norm1": 4, "norm2": 4, "linear1": 4, "linear2": 4, "linear3": 4, "instanc": [4, 37, 210, 283, 293, 312, 320, 321, 322, 325, 327, 328, 329, 334, 337, 338, 339, 350, 412, 444], "embed": [4, 276, 293, 342, 348, 352, 382], "emb": [4, 304, 342, 352], "token": [4, 304, 342], "num_lay": [4, 5, 414], "vocab_s": 4, "norm": [4, 128, 278, 308, 394, 420, 421], "multiheadattent": [4, 293], "create_additive_causal_mask": 4, "list": [4, 9, 14, 16, 29, 69, 75, 79, 80, 81, 82, 87, 90, 91, 96, 122, 132, 133, 135, 136, 138, 139, 141, 142, 146, 149, 160, 166, 179, 181, 183, 184, 196, 203, 206, 209, 213, 214, 215, 217, 218, 219, 222, 223, 232, 242, 244, 248, 249, 253, 260, 261, 264, 268, 269, 271, 274, 279, 282, 283, 293, 325, 327, 328, 329, 330, 335, 337, 338, 339, 412, 418, 419, 420, 421, 430, 438, 439, 440, 441, 443], "still": [4, 7, 166, 439, 443], "consid": [4, 15, 78, 154, 279, 280, 281, 308, 438], "train": [4, 5, 293, 297, 301, 302, 303, 323, 325, 337, 363, 364], "process": [4, 96, 97, 111, 112, 113, 114, 280, 281, 303, 304, 360, 438, 440], "ignor": [4, 37, 89, 90, 122, 416], "whatsoev": 4, "rest": [4, 129, 280, 281, 348], "subsect": 4, "prompt": 4, "autoregress": 4, "yield": [4, 5, 436], "temp": 4, "causal": 4, "append": [4, 180, 439, 443], "store": 4, "per": [4, 5, 107, 148, 210, 211, 276, 297, 308, 312, 314, 344, 434, 439, 440, 443], "care": [4, 443], "logit": [4, 214, 381, 383, 439], "categor": 4, "lazili": [4, 293], "noth": [4, 293, 443], "yet": [4, 166, 293, 412, 423, 441, 442, 443, 445], "forc": [4, 5, 293, 440, 445], "choos": [4, 129, 348], "pars": 4, "feed": 4, "back": [4, 190, 444], "loop": [4, 5, 439, 440, 441, 443], "unsqueez": 4, "sequenc": [4, 14, 16, 32, 33, 54, 55, 56, 57, 61, 69, 72, 73, 77, 79, 87, 96, 124, 132, 133, 135, 136, 138, 139, 141, 142, 146, 179, 181, 183, 196, 203, 209, 213, 214, 215, 217, 218, 219, 222, 223, 227, 242, 244, 247, 249, 253, 260, 261, 264, 269, 274, 297, 298, 307, 313, 345, 360, 436, 447], "length": [4, 247, 297, 298, 307, 313, 345, 430], "len": [4, 133, 136, 139, 142, 430], "overwrit": 4, "discard": [4, 279], "old": 4, "moment": [4, 416, 418, 419, 420], "anymor": 4, "everyth": [4, 440], "small": [4, 125, 127, 128, 297, 308, 314, 344, 384, 389, 394, 439, 440, 447], "12": [4, 430], "8192": 4, "1024": 4, "actual": [4, 17, 327, 412, 443], "materi": [4, 6], "could": [4, 293], "20_000": 4, "machin": [4, 6, 7, 426, 440], "8gb": 4, "ram": 4, "32": [4, 5, 86, 210, 211, 286, 296, 318, 344, 439], "44": 4, "bracket": 4, "becaus": [4, 187, 293, 443], "batch": [4, 13, 86, 147, 148, 180, 217, 297, 298, 299, 300, 302, 303, 307, 313, 340, 345, 361, 443], "zip": [4, 5], "haven": 4, "anyth": [4, 268, 443], "veri": [4, 340, 440, 443, 447], "similar": [4, 148, 159, 280, 338, 339, 340, 382, 444, 446], "runtim": [4, 114, 288, 439, 440], "section": [4, 7, 244, 394, 439, 440, 441], "origin": [4, 109, 278, 297, 333, 363, 364, 365, 366, 415, 416, 417, 418, 420, 421, 444], "sentencepiec": 4, "pytorch": [4, 6, 308, 441], "compat": [4, 214, 217, 446], "npz": [4, 170, 234, 235, 327, 331, 446], "file": [4, 7, 170, 231, 232, 233, 234, 235, 327, 331, 440, 441, 446], "argpars": 4, "itertool": [4, 280], "starmap": [4, 280], "np": [4, 5, 440, 444, 445], "torch": [4, 444], "map_torch_to_mlx": 4, "tok_embed": 4, "elif": 4, "replac": [4, 338, 339, 360, 393], "attention_norm": 4, "ffn_norm": 4, "wq": 4, "wk": 4, "wv": 4, "wo": 4, "w1": [4, 278], "w2": [4, 278], "w3": 4, "ffn": 4, "separ": [4, 63, 76, 308, 390], "submodul": [4, 5, 293, 321, 325, 326, 337, 339], "feed_forward": 4, "parser": 4, "argumentpars": 4, "add_argu": 4, "torch_weight": 4, "output_fil": 4, "parse_arg": 4, "state": [4, 5, 293, 307, 313, 345, 414, 423, 436, 439], "savez": [4, 331, 446], "v": [4, 97, 130, 293, 325, 444], "disk": 4, "text": [4, 295, 296, 305, 307, 313, 317, 318, 319, 345, 358, 363, 364, 365, 366, 372, 375, 376, 377, 384, 385, 386, 389, 390, 393, 395, 396, 399, 400, 405, 406, 416, 421], "format": [4, 170, 231, 232, 233, 234, 235, 444], "dictionari": [4, 90, 170, 186, 232, 233, 278, 279, 282, 293, 324, 333, 338, 339, 424, 438, 446], "represent": [4, 210, 270, 279, 283], "tree_unflatten": 4, "helper": [4, 439], "weight_fil": 4, "incur": [4, 7], "sever": [4, 7, 94, 95, 96, 234, 235, 439, 446], "futur": [4, 343, 442, 443], "pth": 4, "current": [4, 6, 7, 79, 86, 186, 188, 210, 282, 293, 416, 440, 443], "around": 4, "m1": [4, 439, 441, 447], "ultra": 4, "7b": 4, "me": 4, "ishmael": 4, "year": 4, "ago": 4, "never": [4, 443], "long": 4, "info": [4, 7], "247": 4, "press": [4, 166], "enter": 4, "littl": 4, "monei": 4, "my": [4, 7], "purs": 4, "consequ": 4, "walk": 4, "down": [4, 278], "gower": 4, "street": 4, "afternoon": 4, "heavi": 4, "rain": 4, "saw": [4, 441], "off": [4, 7, 443], "man": 4, "rag": 4, "who": 4, "sat": 4, "upon": [4, 280, 281], "hi": [4, 313], "bundl": 4, "hard": 4, "wet": 4, "he": [4, 365, 366], "were": [4, 447], "cry": 4, "watch": [4, 439], "him": 4, "observ": 4, "numer": [4, 127, 128, 166, 175, 179, 242, 297, 308, 312, 314, 344, 382, 384, 394, 415, 416, 417, 418, 419, 420, 426, 439, 443], "crowd": 4, "wa": [4, 79, 440, 443], "hurri": 4, "437": 4, "330": 4, "second": [4, 7, 109, 161, 176, 178, 180, 228, 254, 263, 268, 296, 318, 382, 390, 416, 418, 419, 420, 441, 447], "spent": 4, "amount": [4, 189, 295, 317], "39": 4, "By": [4, 276, 332, 441, 444], "bigger": [4, 416], "well": [4, 293, 325, 337, 340, 443], "almost": 4, "nobodi": 4, "took": 4, "least": [4, 80, 81, 82, 89, 164, 165, 167, 168, 210], "notic": [4, 441, 446], "distanc": [4, 394], "had": 4, "doubt": 4, "minut": 4, "straight": 4, "slowli": 4, "speak": [4, 166], "resum": 4, "postur": 4, "stood": 4, "feel": 4, "pain": 4, "heart": 4, "said": 4, "smile": 4, "face": 4, "am": 4, "someon": 4, "three": [4, 82, 361], "quarter": 4, "hour": 4, "made": [4, 288], "immedi": [4, 320], "repli": 4, "again": [4, 7, 293, 439], "hand": [4, 441, 443], "did": 4, "accustom": 4, "thu": [4, 293], "question": [4, 443], "reason": [4, 442], "tell": [4, 439, 444], "understand": [4, 363, 364], "579": 4, "690": 4, "500": [4, 447], "628": 4, "went": 4, "nervou": 4, "trembl": 4, "told": 4, "why": 4, "And": [4, 361], "surpris": 4, "matter": [4, 293], "shall": 4, "anyhow": 4, "friend": 4, "ye": 4, "slight": [4, 443], "kind": 4, "want": [4, 440, 441, 447], "longer": [4, 97, 441], "soon": 4, "unless": [4, 15, 154, 166, 412], "unlik": [4, 15, 154, 302, 303, 333], "strang": 4, "amus": 4, "That": 4, "secret": 4, "disappoint": 4, "mine": 4, "cannot": [4, 89, 442, 444], "happi": 4, "ask": [4, 440], "shop": 4, "bui": 4, "food": 4, "633": 4, "21": [4, 432], "475": 4, "su": 4, "j": [4, 7, 166, 302, 417, 418, 420], "lu": 4, "pan": 4, "murtadha": 4, "wen": 4, "liu": 4, "2021": 4, "roform": [4, 348], "enhanc": [4, 348, 443], "rotari": [4, 129, 348], "arxiv": [4, 308, 312, 314, 319, 344, 373, 395, 415, 421], "preprint": [4, 415, 421], "2104": 4, "09864": 4, "zhang": 4, "sennrich": 4, "2019": [4, 419], "advanc": [4, 439], "system": [4, 7, 186, 187, 188], "shazeer": 4, "2020": 4, "glu": [4, 293], "variant": [4, 393, 420], "2002": 4, "05202": 4, "classifi": 5, "mnist": 5, "As": [5, 37, 256, 293, 439], "mlp": [5, 293, 360, 414], "inherit": [5, 438], "idiom": [5, 439], "input_dim": [5, 293, 316, 343], "hidden_dim": [5, 412, 414], "output_dim": [5, 293, 316, 343], "layer_s": 5, "idim": 5, "odim": 5, "cross": [5, 96, 381, 383], "entropi": [5, 381, 383], "commonli": [5, 338, 409, 439], "cross_entropi": [5, 293], "accuraci": 5, "valid": [5, 97, 143, 272, 279, 325, 337, 438], "eval_fn": 5, "load": [5, 6, 288, 327, 440], "loader": 5, "num_class": [5, 414], "batch_siz": [5, 414], "num_epoch": [5, 414], "learning_r": [5, 414, 415, 416, 417, 418, 419, 420, 421, 423, 426, 427, 428, 429, 430, 431, 432, 439], "train_imag": [5, 414], "train_label": [5, 414], "test_imag": 5, "test_label": 5, "re": [5, 7, 409], "shuffl": 5, "minibatch": 5, "batch_iter": [5, 414], "perm": 5, "id": [5, 7], "put": [5, 439, 440], "trainabl": [5, 277, 293, 412], "loss_and_grad_fn": [5, 414, 439, 441], "value_and_grad": [5, 293, 338, 412, 414, 425, 439, 441, 444, 445], "epoch": 5, "test": [5, 7, 440], "confus": 5, "decent": 5, "95": 5, "flexibl": 6, "brought": 6, "research": 6, "except": [6, 126, 137, 138, 140, 141, 142, 308, 327, 442, 444], "featur": [6, 94, 95, 96, 129, 297, 307, 308, 312, 313, 314, 316, 343, 344, 345, 348, 360, 361, 439, 443], "main": [6, 109, 126, 263, 280, 281, 293, 440], "differ": [6, 159, 252, 270, 393, 441], "compos": [6, 293, 439, 441, 445], "lazi": [6, 412, 445], "multi": [6, 130, 298, 299, 300, 442, 444], "cpu": [6, 7, 167, 439, 447], "inspir": 6, "jax": [6, 436], "arrayfir": 6, "unifi": 6, "live": [6, 447], "share": [6, 107, 148, 210, 211, 270, 440], "convers": 6, "distribut": [6, 7, 213, 214, 215, 217, 218, 222, 223, 316, 363, 364, 365, 366, 368, 369, 384, 387, 392, 394, 409], "commun": [6, 111, 114, 115], "regress": [6, 389], "layer": [6, 127, 276, 293, 295, 296, 302, 303, 307, 308, 313, 314, 316, 317, 318, 334, 339, 342, 343, 345, 350, 360, 408, 412], "perceptron": 6, "llm": 6, "infer": [6, 146, 170, 263, 440], "fast": [6, 305, 373, 440, 447], "fft": 6, "algebra": 6, "tree": [6, 90, 122, 149, 268, 272, 279, 280, 281, 282, 283, 422, 423, 425, 434, 441], "custom": [6, 360], "extens": [6, 170, 194, 331, 446], "debugg": 6, "pypi": 7, "own": [7, 444], "meet": 7, "seri": 7, "chip": 7, "nativ": 7, "maco": 7, "13": 7, "highli": 7, "recommend": [7, 193, 421], "14": 7, "sonoma": 7, "conda": [7, 440], "forg": 7, "match": [7, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 187, 327, 361, 383, 440, 442, 444], "probabl": [7, 219, 301, 302, 303, 343, 381, 383, 387, 447], "platform": 7, "processor": 7, "arm": 7, "i386": 7, "switch": 7, "17": 7, "clang": 7, "24": 7, "xcode": 7, "15": [7, 166, 282, 439], "sdk": 7, "environ": [7, 110, 118, 440], "via": [7, 422, 425, 440, 443, 444], "rosetta": 7, "unam": 7, "p": [7, 213, 293, 301, 302, 303, 394, 418, 420], "clone": 7, "git": 7, "com": [7, 440], "ml": 7, "explor": 7, "http": [7, 308, 312, 314, 319, 344, 373, 395], "wjakob": 7, "2f04eac452a6d9142dedb957701bdb20125561e4": 7, "env": 7, "cmake_build_parallel_level": 7, "edit": [7, 339], "unittest": 7, "discov": 7, "stub": 7, "generate_stub": 7, "either": [7, 12, 63, 75, 76, 83, 84, 85, 89, 116, 117, 119, 145, 150, 151, 161, 162, 163, 166, 175, 180, 182, 197, 199, 202, 208, 225, 228, 252, 268, 296, 318, 350, 361, 365, 366, 444], "static": 7, "libmlx": 7, "preprocessor": 7, "metal_path": 7, "mlx_build_test": 7, "mlx_build_exampl": 7, "mlx_build_benchmark": 7, "mlx_build_cpu": 7, "mlx_build_python_bind": 7, "mlx_build_safetensor": 7, "mlx_build_gguf": 7, "mlx_metal_jit": 7, "wish": 7, "variabl": [7, 90, 110, 118, 149, 160, 268, 271, 272, 440], "export": 7, "developer_dir": 7, "app": 7, "content": [7, 324, 439], "xcrun": 7, "macosx": 7, "show": [7, 286, 439], "cmake_build_typ": 7, "minsizerel": 7, "don": [7, 439, 447], "backend": [7, 114, 115], "safetensor": [7, 170, 233, 327, 331, 443, 446], "gguf": [7, 170, 232, 446], "dcmake_build_typ": 7, "dbuild_shared_lib": 7, "dmlx_build_cpu": 7, "dmlx_build_safetensor": 7, "dmlx_build_gguf": 7, "dmlx_metal_jit": 7, "THE": 7, "pre": [7, 130], "substanti": 7, "cold": 7, "cost": [7, 416, 440, 443], "anwywher": 7, "hundr": 7, "millisecond": [7, 439, 447], "persist": 7, "accross": 7, "reboot": 7, "unabl": 7, "tool": 7, "sudo": 7, "ouptut": 7, "finder": 7, "iterm": 7, "termin": 7, "click": 7, "uncheck": 7, "window": [7, 295, 296, 317, 318], "restart": 7, "grep": 7, "cmake_host_system_processor": 7, "arm64": 7, "x86_64": 7, "wipe": 7, "cahc": 7, "rf": 7, "devicetyp": 8, "attribut": [8, 9, 29, 284, 333, 412, 434], "kwarg": [9, 10, 111, 234, 235, 448], "categori": [10, 286], "bool_": [10, 286], "unsignedinteg": 10, "uint8": [10, 286], "uint16": [10, 286], "uint32": [10, 25, 26, 27, 28, 214, 286], "uint64": [10, 286], "signedinteg": [10, 159], "int8": [10, 286], "int64": [10, 286], "inexact": [10, 159], "complexflo": 10, "complex128": 10, "issubdtyp": [10, 286], "semant": [12, 83, 84, 85, 87, 116, 117, 119, 150, 151, 161, 162, 163, 175, 180, 182, 197, 199, 202, 208, 225, 228, 252, 447], "reduct": [14, 16, 113, 179, 181, 196, 209, 282, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 440], "unspecifi": [14, 16, 17, 25, 26, 27, 28, 91, 100, 101, 102, 103, 146, 179, 181, 183, 196, 203, 207, 209, 226, 242, 243, 249, 253, 256, 262, 263, 269, 274, 448], "entir": [14, 16, 25, 26, 179, 181, 183, 196, 209, 249, 253, 269, 302, 303], "05": [15, 154, 297, 308, 312, 314, 344], "08": [15, 154, 382, 417, 418, 419, 420, 426], "approxim": [15, 305, 371, 372, 373], "comparison": [15, 119, 150, 151, 162, 163, 202], "infinit": [15, 154], "nan": [15, 78, 154, 156], "rel": [15, 154, 416, 439], "interv": [17, 169, 219, 223], "increment": 17, "otherwis": [17, 96, 114, 193, 276, 279, 280, 281, 282, 325, 327, 337, 358, 360, 361, 375, 381, 386, 393, 405, 406, 443, 444], "convent": [17, 97, 361, 419], "fraction": 17, "integr": [17, 256, 443], "dimension": [29, 127, 128, 131, 132, 133, 134, 135, 136, 140, 141, 142, 295, 296, 297, 298, 299, 300, 304, 316, 317, 318, 342, 343, 352, 442, 444], "ndarrai": [29, 442, 443, 445], "properti": [30, 37, 45, 49, 59, 60, 66, 68, 333, 336, 424, 441], "argument": [30, 63, 76, 90, 122, 149, 268, 280, 281, 282, 293, 361, 436, 440, 441, 446, 447, 448], "union": [31, 32, 33, 34, 35, 36, 38, 39, 40, 41, 42, 43, 44, 46, 47, 50, 51, 52, 53, 54, 55, 56, 57, 58, 61, 62, 63, 64, 65, 67, 69, 70, 71, 72, 73, 74, 76, 77, 80, 81, 82, 86, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 157, 158, 186, 221, 222, 251, 263], "regular": [37, 302, 395, 419, 439, 442], "idx": [37, 442], "correctli": 37, "syntax": [37, 442], "datatyp": 49, "byte": [49, 59, 187, 188, 189, 192, 193, 286], "indices_or_sect": [69, 244], "nest": [75, 90, 282, 293, 412, 438, 441], "alwai": [79, 187, 279, 441], "regardless": [79, 130], "storag": 79, "caution": 79, "chang": [79, 90, 237, 270, 338, 343, 361, 386, 393, 439, 444], "crash": [79, 439], "begin": [79, 189, 210, 296, 307, 313, 318, 358, 375, 386, 393, 399, 405, 406], "ari": [80, 81, 82], "xor": 85, "lhs_mask": 86, "lceil": 86, "rceil": 86, "rhs_mask": 86, "out_mask": 86, "edg": [89, 206, 361, 439], "At": 89, "fun": [90, 149, 160, 268, 271, 272, 439, 442, 443, 447], "callabl": [90, 149, 160, 268, 271, 272, 276, 277, 279, 280, 281, 282, 320, 321, 324, 332, 345, 350, 360, 362, 363, 364, 365, 366, 367, 368, 369, 415, 416, 417, 418, 419, 420, 421, 426, 427, 428, 429, 430, 431, 432], "dict": [90, 122, 170, 186, 232, 233, 234, 278, 330, 335, 338, 339, 412, 422, 423, 425, 438, 441, 446], "arbitrarili": [90, 293, 438, 441, 445], "leaf": [90, 276, 279, 280, 281, 282, 324], "node": [90, 122, 272, 281, 282], "recompil": [90, 439], "Not": [90, 202, 439], "attempt": 90, "elementwis": [92, 93], "alia": [92, 93], "conj": 93, "channel": [94, 95, 96, 297, 298, 299, 300, 302, 303], "c_in": [94, 95, 96], "c_out": [94, 95, 96], "convolv": [94, 95, 96], "spatial": [95, 96, 295, 308, 317, 361], "symmetr": [95, 164], "correl": [96, 302], "discret": [97, 131, 132, 133, 134, 135, 136, 140, 141, 142, 304, 342], "conv": 97, "signal": [97, 361], "th": [100, 101, 102, 103, 108, 126, 430], "angl": [106, 212, 315], "configur": [107, 440], "formal": [107, 210], "notat": [107, 279, 329], "w_i": [107, 210], "hat": [107, 210], "occupi": [107, 148, 210, 211], "subarrai": [109, 244], "insert": [109, 124, 447], "end": [109, 190, 210, 296, 307, 313, 318, 358, 375, 386, 393, 399, 405, 406, 428, 431], "taken": [109, 256, 263], "global": [110, 112, 113, 114, 118, 220, 278, 436, 439], "disabl": [110, 192, 439], "mlx_disable_compil": [110, 118, 439], "independ": [111, 302, 303], "particip": [112, 113], "strict": [114, 150, 162, 325, 327, 337], "is_avail": 114, "fuction": 117, "mathrm": [120, 238, 312], "frac": [120, 210, 238, 295, 296, 297, 301, 302, 303, 308, 312, 314, 316, 317, 318, 344, 363, 364, 365, 366, 382, 384, 386, 389, 400, 402, 403, 415, 417, 418, 419, 420, 426], "pi": [120, 305, 352, 372, 441], "int_0": 120, "dt": 120, "minu": 125, "whose": [126, 276, 277], "translat": [127, 314], "stabil": [127, 128, 297, 308, 312, 314, 344, 382, 384, 415, 416, 417, 418, 419, 420, 426], "traditino": 129, "rotat": [129, 348], "larger": [129, 348, 421], "unchang": [129, 250, 348], "consecut": [129, 210, 348], "angular": [129, 348], "frequenc": [129, 348, 352], "q": [130, 167], "head": [130, 340, 360], "attent": [130, 325, 340, 352, 360], "One": [131, 134, 140, 230, 439, 441], "fourier": [131, 132, 133, 134, 135, 136, 140, 141, 142], "truncat": [131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 222], "dft": [131, 132, 133, 134, 135, 136, 140, 141, 142], "rfft": 137, "real": [137, 138, 139, 140, 141, 142, 164], "rfft2": 138, "rfftn": 139, "silent": [140, 141, 142], "outsid": 143, "clamp": 143, "operand": 147, "explicitli": [147, 293, 436], "flat": [147, 148, 279, 283], "a1": 147, "a2": 147, "AS": 147, "b1": 147, "b2": 147, "pack": [148, 210, 211], "unsign": [148, 210, 211, 286], "whether": [148, 211, 307, 313, 324, 340, 345, 381, 384, 390], "argnam": [149, 268], "neither": [149, 268], "keyword": [149, 234, 235, 268, 280, 293, 436, 446, 448], "ordinari": 153, "inifn": 155, "infin": [155, 157, 158, 317, 318, 420], "dtypecategori": [159, 286], "subtyp": [159, 286], "subdtyp": 159, "float64": 159, "too": [159, 439, 443], "upper": [164, 210, 219, 222, 223, 369], "decomposit": [164, 168], "semi": [164, 217], "definit": [164, 217], "behaviour": 164, "triangular": 164, "lower": [164, 210, 219, 222, 223, 265, 369], "trinagular": 164, "dot": [164, 165, 260, 279, 329, 340], "ainv": 165, "ord": 166, "tabl": [166, 286, 304], "frobeniu": 166, "matric": [166, 167, 168], "strictli": 166, "mathemat": 166, "variou": 166, "purpos": 166, "calcul": [166, 384, 390, 416], "fro": 166, "inf": [166, 340], "largest": [166, 262], "sing": 166, "smallest": 166, "singular": [166, 168], "nuclear": 166, "_f": 166, "sum_": [166, 295, 296, 389], "a_": 166, "valueerror": [166, 327, 441], "refer": [166, 312, 319, 333, 363, 364, 365, 366, 373, 395, 442], "golub": 166, "van": 166, "loan": 166, "baltimor": 166, "md": 166, "john": 166, "hopkin": 166, "univers": 166, "1985": 166, "pg": 166, "la": 166, "9": [166, 383, 415, 418, 419, 420, 421, 423, 429, 432, 444], "74597": 166, "20": 166, "84804": 166, "41421": 166, "23607": [166, 167], "74166": 166, "24264": 166, "11": 166, "225": 166, "894427": 167, "447214": 167, "57771": 167, "vt": 168, "return_metadata": 170, "binari": [170, 231, 232, 233, 234, 235, 270, 358, 381, 406, 439], "npy": [170, 231, 446], "matadata": 170, "unsupport": 170, "tensor": [170, 260, 295, 296, 317, 318, 394, 444], "stabl": [175, 179, 242, 389], "multidimension": 184, "dens": [184, 447], "cartesian": 184, "ij": 184, "clear": 185, "get_cache_memori": 185, "max_buffer_s": 186, "max_recommended_working_set_s": 186, "memory_s": 186, "report": [187, 193], "peak": [189, 191], "program": [189, 440], "reset_peak_memori": 189, "reset": 191, "free": 192, "reclaim": 192, "set_memory_limit": 192, "previou": [192, 193], "relax": 193, "task": [193, 389], "exceed": 193, "potenti": 193, "beforehand": 205, "pad_with": 206, "constant_valu": 206, "before_1": 206, "after_1": 206, "before_2": 206, "after_2": 206, "before_n": 206, "after_n": 206, "before_i": 206, "after_i": 206, "side": [206, 295, 296, 317, 318, 439], "everi": [210, 280, 432, 441], "particular": [210, 308], "w_1": 210, "w_g": 210, "align": [210, 296, 307, 313, 318], "max_i": 210, "min_i": 210, "textrm": [210, 305, 306, 371, 374], "1st": 210, "signific": 210, "2nd": 210, "w_q": 210, "prng": [213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 436], "num_sampl": 214, "unnorm": [214, 381, 383], "draw": 214, "cdf": [215, 305, 371], "seed": 216, "cov": 217, "jointli": 217, "covari": [217, 297], "behavior": [217, 389, 442, 443], "empti": 217, "loc": 218, "low": [219, 223, 369, 409], "high": [219, 223, 293, 304, 369, 409], "roadcast": 219, "domain": [222, 440], "uniformli": 223, "repetit": 226, "preserv": [227, 441], "obj": 232, "uncompress": 234, "my_path": 234, "tree_flatten": [234, 280, 283, 293], "transformerencod": 234, "128": [234, 293], "flat_param": 234, "compress": 235, "possibl": [244, 304, 342, 439, 440, 442, 447], "divisor": [249, 269], "being": [250, 293], "prevent": [250, 394, 444], "streamcontext": 251, "context": 251, "manag": [251, 436, 440, 447], "prior": [256, 257], "exclud": 257, "necessarili": 262, "elsewher": [265, 442], "col": 265, "triangl": 265, "mse": 268, "param": [268, 293, 409, 441], "lvalu": 268, "dlvalu": 268, "dparam": 268, "lasso": 268, "l1": [268, 386, 388, 389, 393], "impli": 270, "gaurante": 270, "in_ax": [272, 441], "out_ax": [272, 441], "prefix": [272, 279], "class_pred": 276, "predic": [276, 332], "to_quant": 276, "receiv": [276, 430, 444], "fn": [277, 280, 281, 282, 445], "wrt": 277, "max_norm": 278, "exce": 278, "proportion": 278, "clipped_grad": 278, "total_norm": 278, "rescal": 278, "is_leaf": [279, 280, 281, 282], "arbitrari": [279, 412], "depth": [279, 300, 303, 441], "hello": [279, 283], "charact": 279, "superset": [280, 422], "extra": [280, 281], "closer": 280, "decid": [280, 324], "constitut": 280, "dict_kei": [280, 423], "lambda": [280, 281, 282, 293, 309, 320, 325, 332, 356, 375, 399, 405, 415, 416, 417, 418, 419, 420, 421, 426, 427, 439, 440, 441], "tree_map": [281, 293, 440], "new_tre": 281, "accumul": [282, 344], "acc": 282, "recreat": 283, "world": [283, 440], "42": 283, "16": [286, 295, 312, 317, 320, 412], "int16": 286, "brain": 286, "e8": 286, "m7": 286, "ieee": 286, "e5": 286, "m10": 286, "hierarchi": 286, "mpi": 288, "done": [293, 301, 344, 439, 440, 443, 444], "manual": 293, "solv": 293, "intuit": 293, "freez": [293, 337, 412], "finetun": 293, "in_dim": [293, 412], "out_dim": [293, 412], "enumer": 293, "caus": [293, 439, 443], "local": [293, 302, 440], "scope": 293, "l2_loss": 293, "y_hat": 293, "trainable_paramet": [293, 324, 423], "loss_and_grad": 293, "workhors": 293, "Its": 293, "recurs": [293, 324, 325, 330, 335, 337, 412], "frozen": [293, 325, 335, 337, 343, 412], "individu": [293, 302, 303], "subset": [293, 324], "action": 293, "displai": 293, "count": [293, 430], "num_param": 293, "preclud": 293, "pure": [293, 414], "pattern": [293, 443], "achiev": [293, 440], "other_input": 293, "necessari": 293, "wrap": 293, "apply_to_modul": [293, 325], "children": 293, "filter_and_map": 293, "leaf_modul": 293, "load_weight": [293, 443], "named_modul": 293, "save_weight": 293, "set_dtyp": 293, "unfreez": [293, 325], "update_modul": 293, "alibi": 293, "avgpool1d": 293, "avgpool2d": 293, "batchnorm": 293, "dropout": [293, 302, 303, 334, 360, 439], "dropout2d": 293, "dropout3d": 293, "gelu": [293, 372, 373, 439], "groupnorm": 293, "gru": 293, "hardshrink": [293, 375], "hardtanh": [293, 376], "hardswish": 293, "instancenorm": 293, "layernorm": 293, "leakyrelu": 293, "lstm": 293, "maxpool1d": 293, "maxpool2d": 293, "mish": 293, "prelu": 293, "quantizedembed": 293, "quantizedlinear": 293, "relu": [293, 341, 360, 396, 409], "relu6": 293, "rnn": [293, 307], "selu": 293, "sequenti": [293, 409], "silu": 293, "sinusoidalpositionalencod": 293, "softmin": 293, "softshrink": 293, "softsign": 293, "softplu": [293, 319, 395], "upsampl": 293, "elu": [293, 399], "gelu_approx": [293, 305, 371], "gelu_fast_approx": [293, 305, 371], "hard_shrink": [293, 309], "hard_tanh": [293, 310], "leaky_relu": 293, "log_sigmoid": 293, "log_softmax": 293, "binary_cross_entropi": [293, 439], "cosine_similarity_loss": 293, "gaussian_nll_loss": 293, "hinge_loss": 293, "huber_loss": 293, "kl_div_loss": 293, "l1_loss": 293, "log_cosh_loss": 293, "margin_ranking_loss": 293, "mse_loss": 293, "nll_loss": 293, "smooth_l1_loss": 293, "triplet_loss": 293, "init": [293, 341, 409, 414, 428, 429, 431, 432, 440], "glorot_norm": 293, "glorot_uniform": 293, "he_norm": 293, "he_uniform": 293, "kernel_s": [295, 296, 298, 299, 300, 317, 318], "averag": [295, 296, 415, 416, 418, 419, 420, 440], "pool": [295, 296, 317, 318, 447], "l_": [295, 317, 386], "n_i": [295, 296, 317, 318], "c_j": [295, 296, 317, 318], "ldot": [295, 296, 317, 318], "lfloor": [295, 296, 317, 318], "_size": [295, 296, 317, 318], "rfloor": [295, 296, 317, 318], "k_h": [296, 318], "k_w": [296, 318], "h_": [296, 307, 313, 318, 345], "w_": [296, 307, 313, 318, 345, 415, 416, 417, 418, 419, 420, 421, 426, 427], "height": [296, 297, 299, 300, 302, 303, 318], "width": [296, 297, 299, 300, 302, 303, 318, 342, 343], "momentum": [297, 421, 423, 427, 439], "affin": [297, 308, 312, 314, 316, 343], "track_running_stat": 297, "epsilon": [297, 308, 312, 314, 344, 382, 384, 415, 417, 418, 419, 420, 426], "gamma": [297, 308, 312, 314, 344, 363, 364, 365, 366], "nc": 297, "nlc": [297, 298], "four": 297, "nhwc": [297, 299], "paper": [297, 352, 415, 416, 417, 418, 420, 421], "deep": [297, 363, 364, 365, 366], "intern": 297, "bn": 297, "in_channel": [298, 299, 300], "out_channel": [298, 299, 300], "learnabl": [298, 299, 300, 350], "imag": [299, 300, 302, 303, 361], "ndhwc": [300, 303], "portion": 301, "nwhc": 302, "whc": 302, "maintain": [302, 303, 421], "benefici": [302, 303, 443], "earli": 302, "adjac": 302, "pixel": 302, "effect": [302, 439, 443], "thompson": 302, "goroshin": 302, "jain": 302, "lecun": 302, "bregler": 302, "2015": [302, 418, 420], "cvpr": 302, "dhwc": 303, "often": 303, "medic": 303, "video": 303, "num_embed": [304, 342], "lookup": 304, "usual": [304, 342, 438, 443], "vocabulari": [304, 342], "approx": 305, "unit": [305, 306, 307, 315, 346, 347, 349, 351, 363, 364, 365, 366, 370, 371, 372, 373, 374, 378, 397, 398, 399, 401], "phi": [305, 371], "geluapprox": 305, "044715": [305, 372], "gelufast": 305, "sigma": [305, 306, 307, 313, 363, 364, 365, 366, 373, 374, 379, 400, 401], "773": 305, "regard": 305, "gate": [306, 307, 374], "halv": [306, 374], "input_s": [307, 313, 345], "hidden_s": [307, 313, 345], "recurr": [307, 313, 345], "nld": [307, 313, 345], "ld": [307, 313, 345], "r_t": 307, "xr": 307, "x_t": [307, 313, 345], "hr": 307, "h_t": [307, 313, 345], "b_": [307, 313], "z_t": 307, "xz": 307, "hz": 307, "n_t": 307, "xn": 307, "odot": [307, 313], "hn": 307, "hidden": [307, 313, 345, 360], "nh": [307, 313, 345], "nlh": [307, 313, 345], "lh": [307, 313, 345], "num_group": 308, "pytorch_compat": 308, "preced": 308, "org": [308, 312, 314, 319, 344, 373, 395], "1803": 308, "08494": 308, "lambd": [309, 356, 375, 405], "denomin": [312, 382, 415, 417, 418, 419, 420, 426], "inorm": 312, "1607": [312, 314], "08022": 312, "i_t": 313, "xi": 313, "f_t": 313, "xf": 313, "hf": 313, "g_t": [313, 415, 417, 418, 419, 420, 421, 426, 427], "xg": 313, "hg": 313, "o_t": 313, "xo": 313, "ho": 313, "c_": [313, 421], "c_t": [313, 421], "cell": 313, "06450": 314, "realli": 314, "negative_slop": [315, 378], "leaki": [315, 378], "rectifi": [315, 346, 347, 365, 366, 378, 397, 398], "slope": 315, "mathcal": 316, "d_i": 316, "max_": [317, 318], "1908": [319, 395], "08681": [319, 395], "map_fn": [320, 324], "filter_fn": [320, 324], "valid_parameter_filt": 320, "apply_fn": 321, "descend": 322, "is_leaf_fn": 324, "found": 324, "drop": 324, "idempot": [325, 337], "endswith": 325, "file_or_weight": 327, "miss": [327, 446], "ok": [327, 441], "save_safetensor": [331, 446], "reflect": [333, 439, 442, 444], "ie": [337, 440], "noop": 337, "unfrozen": 337, "tracer": 338, "partial": [338, 339, 439, 443], "child": 339, "flexibli": 339, "programmat": 339, "query_input_dim": 340, "key_input_dim": 340, "value_input_dim": 340, "value_dim": 340, "value_output_dim": 340, "aggreg": 340, "linearli": 340, "attend": 340, "num_paramet": 341, "25": [341, 361], "parametr": [341, 396], "from_embed": 342, "classmethod": [342, 343], "from_linear": 343, "1910": 344, "07467": 344, "nonlinear": [345, 439], "elman": 345, "ih": 345, "hh": 345, "func": 345, "10000": 348, "slightli": [348, 447], "plain": 350, "known": [351, 401], "swish": [351, 401], "min_freq": 352, "0001": 352, "max_freq": 352, "cos_first": 352, "full_turn": 352, "sinusoid": 352, "threshold": [358, 386, 393, 406], "geq": [358, 406], "num_encoder_lay": 360, "num_decoder_lay": 360, "nb_func": 360, "custom_encod": 360, "custom_decod": 360, "norm_first": 360, "checkpoint": 360, "decod": 360, "interact": 360, "mechan": 360, "chekpoint": 360, "usag": [360, 439], "expens": 360, "scale_factor": 361, "nearest": 361, "align_corn": 361, "audio": 361, "4d": 361, "forth": 361, "algorithm": [361, 421], "neighbor": 361, "interpol": 361, "cubic": 361, "bilinear": 361, "trilinear": 361, "bicub": 361, "corner": 361, "bottom": 361, "75": 361, "33333": 361, "66667": 361, "init_fn": [362, 363, 364, 365, 366, 367, 368, 369, 409], "glorot": [363, 364], "fan_in": [363, 364, 365, 366], "fan_out": [363, 364, 365, 366], "fan": [363, 364, 365, 366], "_in": [363, 364], "_out": [363, 364], "difficulti": [363, 364], "feedforward": [363, 364], "191107": 363, "61278": 363, "150594": 363, "363207": 363, "gain": [363, 364, 365, 366], "89613": 363, "53947": 363, "48095": 363, "995016": 363, "223404": 364, "890597": 364, "379159": 364, "776856": 364, "90041": 364, "02264": 364, "912766": 364, "12451": 364, "delv": [365, 366], "surpass": [365, 366], "human": [365, 366], "imagenet": [365, 366], "classif": [365, 366], "25211": 365, "458835": 365, "177208": 365, "0137595": 365, "6967": 365, "02765": 365, "15268": 365, "75787": 365, "kaim": 366, "0300242": 366, "0184009": 366, "793615": 366, "666329": 366, "64331": 366, "16506": 366, "08619": 366, "79854": 366, "982273": 368, "534422": 368, "380709": 368, "0645099": 368, "883935": 369, "863726": 369, "617261": 369, "417497": 369, "exact": [372, 373], "0005": 372, "015": 373, "702": 373, "cdot": [373, 382, 385, 401], "hendryck": 373, "1606": 373, "08415": 373, "min_val": 376, "max_val": 376, "_val": 376, "sum_i": 380, "x_i": [380, 402, 403], "with_logit": 381, "predict": [381, 384, 385, 386, 387, 388, 389, 391, 392, 393], "105361": 381, "223144": 381, "20397": 381, "916291": 381, "539245": 381, "prob": 381, "510826": 381, "x1": 382, "x2": 382, "x_1": [382, 390], "x_2": [382, 390], "label_smooth": 383, "hot": 383, "smooth": [383, 393, 426], "0485873": 383, "348587": 383, "06": [384, 394, 415], "likelihood": [384, 392], "nll": [384, 392], "hing": 385, "y_": [385, 389], "pred": [385, 389], "delta": [386, 415], "huber": 386, "leq": [386, 399], "l2": [386, 389, 427], "kullback": 387, "leibler": 387, "diverg": 387, "logcosh": 389, "sensit": 389, "outlier": 389, "dual": 389, "offer": 389, "balanc": 389, "robust": 389, "approach": [389, 441], "inputs1": 390, "inputs2": 390, "margin": [390, 394], "573409": 390, "765166": 390, "0638": 390, "75596": 390, "225763": 390, "256995": 390, "773433": 390, "formula": 393, "anchor": 394, "triplet": 394, "_p": 394, "pairwis": 394, "instabl": 394, "monoton": 395, "0507": 399, "67326": 399, "sum_j": [402, 403], "x_j": [402, 403], "subclass": 412, "concept": 412, "mymlp": 412, "in_proj": 412, "involv": [414, 439], "subsequ": 414, "far": 414, "apply_gradi": 414, "rmsprop": 414, "adagrad": 414, "adafactor": 414, "adadelta": 414, "adam": [414, 420, 421, 430, 431], "adamw": [414, 421], "adamax": 414, "lion": 414, "cosine_decai": [414, 430], "exponential_decai": 414, "join_schedul": 414, "linear_schedul": [414, 430], "step_decai": 414, "rho": 415, "zeiler": 415, "2012": [415, 426], "adapt": [415, 416, 417, 440], "1212": 415, "5701": 415, "v_": [415, 417, 418, 419, 420, 426, 427], "v_t": [415, 417, 418, 419, 420, 426, 427], "u_t": 415, "u_": 415, "w_t": [415, 417, 418, 419, 420, 421, 426, 427], "30": 416, "001": 416, "clip_threshold": 416, "decay_r": [416, 429, 432], "beta_1": [416, 418, 419, 420, 421], "weight_decai": [416, 419, 421, 427], "scale_paramet": 416, "relative_step": 416, "warmup_init": 416, "sublinear": 416, "epsilon_1": 416, "epsilon_2": 416, "parameter_scal": 416, "unscal": 416, "decai": [416, 419, 421, 427, 428, 429, 432], "duchi": 417, "hazan": 417, "singer": 417, "2011": 417, "subgradi": 417, "onlin": 417, "stochast": [417, 418, 420, 427, 443], "jmlr": 417, "999": [418, 419, 420], "omit": [418, 420, 440], "estim": [418, 420], "kingma": [418, 420], "ba": [418, 420], "iclr": [418, 419, 420], "m_": [418, 419, 420, 421], "m_t": [418, 419, 420, 421], "beta_2": [418, 419, 420, 421], "contrast": 419, "loshchilov": 419, "hutter": 419, "decoupl": 419, "99": [421, 426], "tend": 421, "10x": 421, "strength": [421, 427], "wd": 421, "chen": 421, "symbol": 421, "discoveri": 421, "2302": 421, "06675": 421, "eta": 421, "opt": [422, 440], "tieleman": 426, "hinton": 426, "lectur": 426, "coursera": 426, "dampen": 427, "nesterov": 427, "descent": [427, 439, 443], "mu": 427, "tau": 427, "penalti": 427, "decay_step": 428, "beyond": [428, 431], "lr_schedul": [428, 429, 430, 432], "1000": [428, 439], "0999961": 428, "06561": 429, "boundari": 430, "join": 430, "transit": 430, "warmup": [430, 431], "0999938": 430, "101": 431, "step_siz": 432, "081": 432, "basi": 434, "implicit": [436, 439, 441], "fine": [436, 443], "grain": 436, "pseudo": 436, "altern": 436, "splittabl": 436, "threefri": 436, "counter": 436, "cycl": 438, "merg": 439, "fuse": 439, "big": 439, "awar": [439, 443], "36788": 439, "compiled_fun": 439, "code": [439, 440, 443], "slow": 439, "rerun": [439, 443], "frequent": [439, 443], "destroi": 439, "anonym": 439, "unari": 439, "overhead": [439, 443, 447], "bandwidth": [439, 440], "fusibl": 439, "consider": 439, "versu": 439, "timeit": [439, 441], "tic": 439, "perf_count": 439, "toc": 439, "tpi": 439, "1e3": 439, "4096": [439, 441, 447], "On": [439, 441, 443], "five": 439, "latest": 439, "won": 439, "placehold": 439, "insid": 439, "disable_compil": 439, "okai": [439, 443], "deal": 439, "pretti": [439, 443], "inconveni": 439, "functool": 439, "particularli": 439, "backward": [439, 441], "compiled_grad_fn": 439, "71828": 439, "opportun": 439, "physic": 440, "lot": [440, 441], "figur": 440, "best": 440, "mac": 440, "abil": 440, "talk": 440, "minim": 440, "all_sum": 440, "mpirun": 440, "mpiexec": 440, "send": 440, "homebrew": 440, "anaconda": 440, "openmpi": 440, "libmpi": 440, "dyld": 440, "dyld_library_path": 440, "lib": 440, "connect": 440, "ssh": 440, "checklist": 440, "issu": [440, 441, 444], "hostnam": 440, "password": 440, "confirm": 440, "foo": 440, "bar": 440, "host1": 440, "host2": 440, "qualifi": 440, "ip": 440, "slot": 440, "hostfil": 440, "parallel": [440, 447], "snippet": 440, "loss_grad_fn": 440, "all_avg": 440, "all_reduce_grad": 440, "latenc": 440, "mca": 440, "btl_tcp_link": 440, "tcp": 440, "idea": [441, 443], "behind": 441, "dfdx": [441, 442], "d2fdx2": 441, "zero_grad": 441, "detach": 441, "requires_grad": 441, "dloss_dw": 441, "dloss_dx": 441, "redund": 441, "continu": 441, "suppos": [441, 447], "nice": [441, 443], "propag": [441, 442], "autom": 441, "contriv": [441, 447], "sake": 441, "clariti": 441, "quit": [441, 444], "difficult": 441, "primit": 441, "priorit": 441, "naive_add": 441, "vmap_add": 441, "total": 441, "390": 441, "wherea": 441, "025": 441, "ten": [441, 443], "Of": 441, "cours": 441, "better": [441, 447], "handi": 441, "ellipsi": 442, "mix": 442, "lack": 442, "extrem": [442, 443], "ineffici": [442, 443], "nonzero": 442, "dynam": 443, "easier": 443, "worri": 443, "fun1": 443, "expensive_fun": 443, "consum": 443, "eager": 443, "thank": 443, "weights_fp16": 443, "trade": 443, "bad": 443, "grow": 443, "computation": 443, "costli": 443, "luckili": 443, "wide": 443, "thousand": 443, "value_and_grad_fn": 443, "implicitli": 443, "anytim": 443, "memoryview": [443, 444], "perfectli": 443, "first_lay": 443, "second_layer_a": 443, "second_layer_b": 443, "protocol": 444, "dlpack": 444, "pep": 444, "3118": 444, "a_view": 444, "owndata": 444, "extern": 444, "demonstr": 444, "x_view": 444, "modifi": 444, "df": 444, "x\u00b2": 444, "2x": 444, "indirectli": 444, "modif": 444, "seen": 444, "occur": 444, "incorpor": 444, "aris": 444, "incorrect": 444, "experiment": 444, "break": 444, "advis": 444, "intermedi": 444, "jnp": 444, "tf": 444, "page": 445, "composit": 445, "archiv": 446, "savez_compress": 446, "save_gguf": 446, "arr_0": 446, "advantag": 447, "race": 447, "interest": 447, "albeit": 447, "d1": 447, "d2": 447, "But": 447, "twice": 447, "measur": 447, "default_stream": 448, "default_devic": 448, "my_devic": 448}, "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, "_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, "_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, "_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, "_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, "_CPPv43padRK5arrayRKNSt4pairIiiEERK5array14StreamOrDevice", "pad"], [0, 0, 1, "_CPPv43padRK5arrayRKNSt6vectorINSt4pairIiiEEEERK5array14StreamOrDevice", "pad"], [0, 0, 1, "_CPPv43padRK5arrayRKNSt6vectorIiEERKNSt6vectorIiEERKNSt6vectorIiEERK5array14StreamOrDevice", "pad"], [0, 0, 1, "_CPPv43padRK5arrayiRK5array14StreamOrDevice", "pad"], [0, 1, 1, "_CPPv43padRK5arrayRKNSt4pairIiiEERK5array14StreamOrDevice", "pad::a"], [0, 1, 1, "_CPPv43padRK5arrayRKNSt6vectorINSt4pairIiiEEEERK5array14StreamOrDevice", "pad::a"], [0, 1, 1, "_CPPv43padRK5arrayRKNSt6vectorIiEERKNSt6vectorIiEERKNSt6vectorIiEERK5array14StreamOrDevice", "pad::a"], [0, 1, 1, "_CPPv43padRK5arrayiRK5array14StreamOrDevice", "pad::a"], [0, 1, 1, "_CPPv43padRK5arrayRKNSt6vectorIiEERKNSt6vectorIiEERKNSt6vectorIiEERK5array14StreamOrDevice", "pad::axes"], [0, 1, 1, "_CPPv43padRK5arrayRKNSt6vectorIiEERKNSt6vectorIiEERKNSt6vectorIiEERK5array14StreamOrDevice", "pad::high_pad_size"], [0, 1, 1, "_CPPv43padRK5arrayRKNSt6vectorIiEERKNSt6vectorIiEERKNSt6vectorIiEERK5array14StreamOrDevice", "pad::low_pad_size"], [0, 1, 1, "_CPPv43padRK5arrayRKNSt4pairIiiEERK5array14StreamOrDevice", "pad::pad_value"], [0, 1, 1, "_CPPv43padRK5arrayRKNSt6vectorINSt4pairIiiEEEERK5array14StreamOrDevice", "pad::pad_value"], [0, 1, 1, "_CPPv43padRK5arrayRKNSt6vectorIiEERKNSt6vectorIiEERKNSt6vectorIiEERK5array14StreamOrDevice", "pad::pad_value"], [0, 1, 1, "_CPPv43padRK5arrayiRK5array14StreamOrDevice", "pad::pad_value"], [0, 1, 1, "_CPPv43padRK5arrayRKNSt4pairIiiEERK5array14StreamOrDevice", "pad::pad_width"], [0, 1, 1, "_CPPv43padRK5arrayRKNSt6vectorINSt4pairIiiEEEERK5array14StreamOrDevice", "pad::pad_width"], [0, 1, 1, "_CPPv43padRK5arrayiRK5array14StreamOrDevice", "pad::pad_width"], [0, 1, 1, "_CPPv43padRK5arrayRKNSt4pairIiiEERK5array14StreamOrDevice", "pad::s"], [0, 1, 1, "_CPPv43padRK5arrayRKNSt6vectorINSt4pairIiiEEEERK5array14StreamOrDevice", "pad::s"], [0, 1, 1, "_CPPv43padRK5arrayRKNSt6vectorIiEERKNSt6vectorIiEERKNSt6vectorIiEERK5array14StreamOrDevice", "pad::s"], [0, 1, 1, "_CPPv43padRK5arrayiRK5array14StreamOrDevice", "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, "_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, "_CPPv45sliceRK5arrayNSt6vectorIiEENSt6vectorIiEENSt6vectorIiEE14StreamOrDevice", "slice"], [0, 0, 1, "_CPPv45sliceRK5arrayRKNSt6vectorIiEERKNSt6vectorIiEE14StreamOrDevice", "slice"], [0, 1, 1, "_CPPv45sliceRK5arrayNSt6vectorIiEENSt6vectorIiEENSt6vectorIiEE14StreamOrDevice", "slice::a"], [0, 1, 1, "_CPPv45sliceRK5arrayRKNSt6vectorIiEERKNSt6vectorIiEE14StreamOrDevice", "slice::a"], [0, 1, 1, "_CPPv45sliceRK5arrayNSt6vectorIiEENSt6vectorIiEENSt6vectorIiEE14StreamOrDevice", "slice::s"], [0, 1, 1, "_CPPv45sliceRK5arrayRKNSt6vectorIiEERKNSt6vectorIiEE14StreamOrDevice", "slice::s"], [0, 1, 1, "_CPPv45sliceRK5arrayNSt6vectorIiEENSt6vectorIiEENSt6vectorIiEE14StreamOrDevice", "slice::start"], [0, 1, 1, "_CPPv45sliceRK5arrayRKNSt6vectorIiEERKNSt6vectorIiEE14StreamOrDevice", "slice::start"], [0, 1, 1, "_CPPv45sliceRK5arrayNSt6vectorIiEENSt6vectorIiEENSt6vectorIiEE14StreamOrDevice", "slice::stop"], [0, 1, 1, "_CPPv45sliceRK5arrayRKNSt6vectorIiEERKNSt6vectorIiEE14StreamOrDevice", "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, 1, 1, "_CPPv44takeRK5arrayRK5array14StreamOrDevice", "take::a"], [0, 1, 1, "_CPPv44takeRK5arrayRK5arrayi14StreamOrDevice", "take::a"], [0, 1, 1, "_CPPv44takeRK5arrayRK5arrayi14StreamOrDevice", "take::axis"], [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, 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": [[8, 3, 1, "", "Device"], [9, 3, 1, "", "Dtype"], [10, 3, 1, "", "DtypeCategory"], [284, 3, 1, "", "Stream"], [11, 5, 1, "", "abs"], [12, 5, 1, "", "add"], [13, 5, 1, "", "addmm"], [14, 5, 1, "", "all"], [15, 5, 1, "", "allclose"], [16, 5, 1, "", "any"], [17, 5, 1, "", "arange"], [18, 5, 1, "", "arccos"], [19, 5, 1, "", "arccosh"], [20, 5, 1, "", "arcsin"], [21, 5, 1, "", "arcsinh"], [22, 5, 1, "", "arctan"], [23, 5, 1, "", "arctan2"], [24, 5, 1, "", "arctanh"], [25, 5, 1, "", "argmax"], [26, 5, 1, "", "argmin"], [27, 5, 1, "", "argpartition"], [28, 5, 1, "", "argsort"], [29, 3, 1, "", "array"], [78, 5, 1, "", "array_equal"], [79, 5, 1, "", "as_strided"], [80, 5, 1, "", "atleast_1d"], [81, 5, 1, "", "atleast_2d"], [82, 5, 1, "", "atleast_3d"], [83, 5, 1, "", "bitwise_and"], [84, 5, 1, "", "bitwise_or"], [85, 5, 1, "", "bitwise_xor"], [86, 5, 1, "", "block_masked_mm"], [87, 5, 1, "", "broadcast_to"], [88, 5, 1, "", "ceil"], [89, 5, 1, "", "clip"], [90, 5, 1, "", "compile"], [91, 5, 1, "", "concatenate"], [92, 5, 1, "", "conj"], [93, 5, 1, "", "conjugate"], [94, 5, 1, "", "conv1d"], [95, 5, 1, "", "conv2d"], [96, 5, 1, "", "conv_general"], [97, 5, 1, "", "convolve"], [98, 5, 1, "", "cos"], [99, 5, 1, "", "cosh"], [100, 5, 1, "", "cummax"], [101, 5, 1, "", "cummin"], [102, 5, 1, "", "cumprod"], [103, 5, 1, "", "cumsum"], [104, 5, 1, "", "default_device"], [105, 5, 1, "", "default_stream"], [106, 5, 1, "", "degrees"], [107, 5, 1, "", "dequantize"], [108, 5, 1, "", "diag"], [109, 5, 1, "", "diagonal"], [110, 5, 1, "", "disable_compile"], [116, 5, 1, "", "divide"], [117, 5, 1, "", "divmod"], [118, 5, 1, "", "enable_compile"], [119, 5, 1, "", "equal"], [120, 5, 1, "", "erf"], [121, 5, 1, "", "erfinv"], [122, 5, 1, "", "eval"], [123, 5, 1, "", "exp"], [124, 5, 1, "", "expand_dims"], [125, 5, 1, "", "expm1"], [126, 5, 1, "", "eye"], [143, 5, 1, "", "flatten"], [144, 5, 1, "", "floor"], [145, 5, 1, "", "floor_divide"], [146, 5, 1, "", "full"], [147, 5, 1, "", "gather_mm"], [148, 5, 1, "", "gather_qmm"], [149, 5, 1, "", "grad"], [150, 5, 1, "", "greater"], [151, 5, 1, "", "greater_equal"], [152, 5, 1, "", "identity"], [153, 5, 1, "", "inner"], [154, 5, 1, "", "isclose"], [155, 5, 1, "", "isinf"], [156, 5, 1, "", "isnan"], [157, 5, 1, "", "isneginf"], [158, 5, 1, "", "isposinf"], [159, 5, 1, "", "issubdtype"], [160, 5, 1, "", "jvp"], [161, 5, 1, "", "left_shift"], [162, 5, 1, "", "less"], [163, 5, 1, "", "less_equal"], [169, 5, 1, "", "linspace"], [170, 5, 1, "", "load"], [171, 5, 1, "", "log"], [172, 5, 1, "", "log10"], [173, 5, 1, "", "log1p"], [174, 5, 1, "", "log2"], [175, 5, 1, "", "logaddexp"], [176, 5, 1, "", "logical_and"], [177, 5, 1, "", "logical_not"], [178, 5, 1, "", "logical_or"], [179, 5, 1, "", "logsumexp"], [180, 5, 1, "", "matmul"], [181, 5, 1, "", "max"], [182, 5, 1, "", "maximum"], [183, 5, 1, "", "mean"], [184, 5, 1, "", "meshgrid"], [196, 5, 1, "", "min"], [197, 5, 1, "", "minimum"], [198, 5, 1, "", "moveaxis"], [199, 5, 1, "", "multiply"], [200, 5, 1, "", "negative"], [201, 5, 1, "", "new_stream"], [202, 5, 1, "", "not_equal"], [203, 5, 1, "", "ones"], [204, 5, 1, "", "ones_like"], [205, 5, 1, "", "outer"], [206, 5, 1, "", "pad"], [207, 5, 1, "", "partition"], [208, 5, 1, "", "power"], [209, 5, 1, "", "prod"], [210, 5, 1, "", "quantize"], [211, 5, 1, "", "quantized_matmul"], [212, 5, 1, "", "radians"], [224, 5, 1, "", "reciprocal"], [225, 5, 1, "", "remainder"], [226, 5, 1, "", "repeat"], [227, 5, 1, "", "reshape"], [228, 5, 1, "", "right_shift"], [229, 5, 1, "", "round"], [230, 5, 1, "", "rsqrt"], [231, 5, 1, "", "save"], [232, 5, 1, "", "save_gguf"], [233, 5, 1, "", "save_safetensors"], [234, 5, 1, "", "savez"], [235, 5, 1, "", "savez_compressed"], [236, 5, 1, "", "set_default_device"], [237, 5, 1, "", "set_default_stream"], [238, 5, 1, "", "sigmoid"], [239, 5, 1, "", "sign"], [240, 5, 1, "", "sin"], [241, 5, 1, "", "sinh"], [242, 5, 1, "", "softmax"], [243, 5, 1, "", "sort"], [244, 5, 1, "", "split"], [245, 5, 1, "", "sqrt"], [246, 5, 1, "", "square"], [247, 5, 1, "", "squeeze"], [248, 5, 1, "", "stack"], [249, 5, 1, "", "std"], [250, 5, 1, "", "stop_gradient"], [251, 5, 1, "", "stream"], [252, 5, 1, "", "subtract"], [253, 5, 1, "", "sum"], [254, 5, 1, "", "swapaxes"], [255, 5, 1, "", "synchronize"], [256, 5, 1, "", "take"], [257, 5, 1, "", "take_along_axis"], [258, 5, 1, "", "tan"], [259, 5, 1, "", "tanh"], [260, 5, 1, "", "tensordot"], [261, 5, 1, "", "tile"], [262, 5, 1, "", "topk"], [263, 5, 1, "", "trace"], [264, 5, 1, "", "transpose"], [265, 5, 1, "", "tri"], [266, 5, 1, "", "tril"], [267, 5, 1, "", "triu"], [268, 5, 1, "", "value_and_grad"], [269, 5, 1, "", "var"], [270, 5, 1, "", "view"], [271, 5, 1, "", "vjp"], [272, 5, 1, "", "vmap"], [273, 5, 1, "", "where"], [274, 5, 1, "", "zeros"], [275, 5, 1, "", "zeros_like"]], "mlx.core.Device": [[8, 4, 1, "", "__init__"]], "mlx.core.Dtype": [[9, 4, 1, "", "__init__"]], "mlx.core.DtypeCategory": [[10, 4, 1, "", "__init__"]], "mlx.core.Stream": [[284, 4, 1, "", "__init__"]], "mlx.core.array": [[30, 6, 1, "", "T"], [29, 4, 1, "", "__init__"], [31, 4, 1, "", "abs"], [32, 4, 1, "", "all"], [33, 4, 1, "", "any"], [34, 4, 1, "", "argmax"], [35, 4, 1, "", "argmin"], [36, 4, 1, "", "astype"], [37, 6, 1, "", "at"], [38, 4, 1, "", "cos"], [39, 4, 1, "", "cummax"], [40, 4, 1, "", "cummin"], [41, 4, 1, "", "cumprod"], [42, 4, 1, "", "cumsum"], [43, 4, 1, "", "diag"], [44, 4, 1, "", "diagonal"], [45, 6, 1, "", "dtype"], [46, 4, 1, "", "exp"], [47, 4, 1, "", "flatten"], [48, 4, 1, "", "item"], [49, 6, 1, "", "itemsize"], [50, 4, 1, "", "log"], [51, 4, 1, "", "log10"], [52, 4, 1, "", "log1p"], [53, 4, 1, "", "log2"], [54, 4, 1, "", "logsumexp"], [55, 4, 1, "", "max"], [56, 4, 1, "", "mean"], [57, 4, 1, "", "min"], [58, 4, 1, "", "moveaxis"], [59, 6, 1, "", "nbytes"], [60, 6, 1, "", "ndim"], [61, 4, 1, "", "prod"], [62, 4, 1, "", "reciprocal"], [63, 4, 1, "", "reshape"], [64, 4, 1, "", "round"], [65, 4, 1, "", "rsqrt"], [66, 6, 1, "", "shape"], [67, 4, 1, "", "sin"], [68, 6, 1, "", "size"], [69, 4, 1, "", "split"], [70, 4, 1, "", "sqrt"], [71, 4, 1, "", "square"], [72, 4, 1, "", "squeeze"], [73, 4, 1, "", "sum"], [74, 4, 1, "", "swapaxes"], [75, 4, 1, "", "tolist"], [76, 4, 1, "", "transpose"], [77, 4, 1, "", "var"]], "mlx.core.distributed": [[111, 3, 1, "", "Group"], [112, 5, 1, "", "all_gather"], [113, 5, 1, "", "all_sum"], [114, 5, 1, "", "init"], [115, 5, 1, "", "is_available"]], "mlx.core.distributed.Group": [[111, 4, 1, "", "__init__"]], "mlx.core.fast": [[127, 5, 1, "", "layer_norm"], [128, 5, 1, "", "rms_norm"], [129, 5, 1, "", "rope"], [130, 5, 1, "", "scaled_dot_product_attention"]], "mlx.core.fft": [[131, 5, 1, "", "fft"], [132, 5, 1, "", "fft2"], [133, 5, 1, "", "fftn"], [134, 5, 1, "", "ifft"], [135, 5, 1, "", "ifft2"], [136, 5, 1, "", "ifftn"], [137, 5, 1, "", "irfft"], [138, 5, 1, "", "irfft2"], [139, 5, 1, "", "irfftn"], [140, 5, 1, "", "rfft"], [141, 5, 1, "", "rfft2"], [142, 5, 1, "", "rfftn"]], "mlx.core.linalg": [[164, 5, 1, "", "cholesky"], [165, 5, 1, "", "inv"], [166, 5, 1, "", "norm"], [167, 5, 1, "", "qr"], [168, 5, 1, "", "svd"]], "mlx.core.metal": [[185, 5, 1, "", "clear_cache"], [186, 5, 1, "", "device_info"], [187, 5, 1, "", "get_active_memory"], [188, 5, 1, "", "get_cache_memory"], [189, 5, 1, "", "get_peak_memory"], [190, 5, 1, "", "is_available"], [191, 5, 1, "", "reset_peak_memory"], [192, 5, 1, "", "set_cache_limit"], [193, 5, 1, "", "set_memory_limit"], [194, 5, 1, "", "start_capture"], [195, 5, 1, "", "stop_capture"]], "mlx.core.random": [[213, 5, 1, "", "bernoulli"], [214, 5, 1, "", "categorical"], [215, 5, 1, "", "gumbel"], [216, 5, 1, "", "key"], [217, 5, 1, "", "multivariate_normal"], [218, 5, 1, "", "normal"], [219, 5, 1, "", "randint"], [220, 5, 1, "", "seed"], [221, 5, 1, "", "split"], [222, 5, 1, "", "truncated_normal"], [223, 5, 1, "", "uniform"]], "mlx.nn": [[294, 3, 1, "", "ALiBi"], [295, 3, 1, "", "AvgPool1d"], [296, 3, 1, "", "AvgPool2d"], [297, 3, 1, "", "BatchNorm"], [298, 3, 1, "", "Conv1d"], [299, 3, 1, "", "Conv2d"], [300, 3, 1, "", "Conv3d"], [301, 3, 1, "", "Dropout"], [302, 3, 1, "", "Dropout2d"], [303, 3, 1, "", "Dropout3d"], [304, 3, 1, "", "Embedding"], [305, 3, 1, "", "GELU"], [306, 3, 1, "", "GLU"], [307, 3, 1, "", "GRU"], [308, 3, 1, "", "GroupNorm"], [309, 3, 1, "", "HardShrink"], [310, 3, 1, "", "HardTanh"], [311, 3, 1, "", "Hardswish"], [312, 3, 1, "", "InstanceNorm"], [313, 3, 1, "", "LSTM"], [314, 3, 1, "", "LayerNorm"], [315, 3, 1, "", "LeakyReLU"], [316, 3, 1, "", "Linear"], [317, 3, 1, "", "MaxPool1d"], [318, 3, 1, "", "MaxPool2d"], [319, 3, 1, "", "Mish"], [412, 3, 1, "", "Module"], [340, 3, 1, "", "MultiHeadAttention"], [341, 3, 1, "", "PReLU"], [342, 3, 1, "", "QuantizedEmbedding"], [343, 3, 1, "", "QuantizedLinear"], [344, 3, 1, "", "RMSNorm"], [345, 3, 1, "", "RNN"], [346, 3, 1, "", "ReLU"], [347, 3, 1, "", "ReLU6"], [348, 3, 1, "", "RoPE"], [349, 3, 1, "", "SELU"], [350, 3, 1, "", "Sequential"], [351, 3, 1, "", "SiLU"], [352, 3, 1, "", "SinusoidalPositionalEncoding"], [353, 3, 1, "", "Softmax"], [354, 3, 1, "", "Softmin"], [355, 3, 1, "", "Softplus"], [356, 3, 1, "", "Softshrink"], [357, 3, 1, "", "Softsign"], [358, 3, 1, "", "Step"], [359, 3, 1, "", "Tanh"], [360, 3, 1, "", "Transformer"], [361, 3, 1, "", "Upsample"], [370, 3, 1, "", "elu"], [371, 3, 1, "", "gelu"], [372, 3, 1, "", "gelu_approx"], [373, 3, 1, "", "gelu_fast_approx"], [374, 3, 1, "", "glu"], [375, 3, 1, "", "hard_shrink"], [376, 3, 1, "", "hard_tanh"], [377, 3, 1, "", "hardswish"], [378, 3, 1, "", "leaky_relu"], [379, 3, 1, "", "log_sigmoid"], [380, 3, 1, "", "log_softmax"], [395, 3, 1, "", "mish"], [396, 3, 1, "", "prelu"], [276, 5, 1, "", "quantize"], [397, 3, 1, "", "relu"], [398, 3, 1, "", "relu6"], [399, 3, 1, "", "selu"], [400, 3, 1, "", "sigmoid"], [401, 3, 1, "", "silu"], [402, 3, 1, "", "softmax"], [403, 3, 1, "", "softmin"], [404, 3, 1, "", "softplus"], [405, 3, 1, "", "softshrink"], [406, 3, 1, "", "step"], [407, 3, 1, "", "tanh"], [277, 5, 1, "", "value_and_grad"]], "mlx.nn.Module": [[320, 4, 1, "", "apply"], [321, 4, 1, "", "apply_to_modules"], [322, 4, 1, "", "children"], [323, 4, 1, "", "eval"], [324, 4, 1, "", "filter_and_map"], [325, 4, 1, "", "freeze"], [326, 4, 1, "", "leaf_modules"], [327, 4, 1, "", "load_weights"], [328, 4, 1, "", "modules"], [329, 4, 1, "", "named_modules"], [330, 4, 1, "", "parameters"], [331, 4, 1, "", "save_weights"], [332, 4, 1, "", "set_dtype"], [333, 6, 1, "", "state"], [334, 4, 1, "", "train"], [335, 4, 1, "", "trainable_parameters"], [336, 6, 1, "", "training"], [337, 4, 1, "", "unfreeze"], [338, 4, 1, "", "update"], [339, 4, 1, "", "update_modules"]], "mlx.nn.init": [[362, 5, 1, "", "constant"], [363, 5, 1, "", "glorot_normal"], [364, 5, 1, "", "glorot_uniform"], [365, 5, 1, "", "he_normal"], [366, 5, 1, "", "he_uniform"], [367, 5, 1, "", "identity"], [368, 5, 1, "", "normal"], [369, 5, 1, "", "uniform"]], "mlx.nn.losses": [[381, 3, 1, "", "binary_cross_entropy"], [382, 3, 1, "", "cosine_similarity_loss"], [383, 3, 1, "", "cross_entropy"], [384, 3, 1, "", "gaussian_nll_loss"], [385, 3, 1, "", "hinge_loss"], [386, 3, 1, "", "huber_loss"], [387, 3, 1, "", "kl_div_loss"], [388, 3, 1, "", "l1_loss"], [389, 3, 1, "", "log_cosh_loss"], [390, 3, 1, "", "margin_ranking_loss"], [391, 3, 1, "", "mse_loss"], [392, 3, 1, "", "nll_loss"], [393, 3, 1, "", "smooth_l1_loss"], [394, 3, 1, "", "triplet_loss"]], "mlx.optimizers": [[415, 3, 1, "", "AdaDelta"], [416, 3, 1, "", "Adafactor"], [417, 3, 1, "", "Adagrad"], [418, 3, 1, "", "Adam"], [419, 3, 1, "", "AdamW"], [420, 3, 1, "", "Adamax"], [421, 3, 1, "", "Lion"], [434, 3, 1, "", "Optimizer"], [426, 3, 1, "", "RMSprop"], [427, 3, 1, "", "SGD"], [278, 5, 1, "", "clip_grad_norm"], [428, 5, 1, "", "cosine_decay"], [429, 5, 1, "", "exponential_decay"], [430, 5, 1, "", "join_schedules"], [431, 5, 1, "", "linear_schedule"], [432, 5, 1, "", "step_decay"]], "mlx.optimizers.Optimizer": [[422, 4, 1, "", "apply_gradients"], [423, 4, 1, "", "init"], [424, 6, 1, "", "state"], [425, 4, 1, "", "update"]], "mlx.utils": [[279, 5, 1, "", "tree_flatten"], [280, 5, 1, "", "tree_map"], [281, 5, 1, "", "tree_map_with_path"], [282, 5, 1, "", "tree_reduce"], [283, 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, 1, 413], "custom": 1, "extens": 1, "mlx": [1, 6, 8, 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, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 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, 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, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432], "introduc": 1, "exampl": [1, 6, 439, 440, 447], "primit": 1, "us": [1, 443, 448], "implement": [1, 4], "cpu": 1, "back": 1, "end": 1, "gpu": 1, "transform": [1, 360, 437, 439, 441, 443, 445], "build": [1, 7], "bind": 1, "python": [1, 6, 7], "cmake": 1, "setuptool": 1, "usag": [1, 6], "result": 1, "script": [1, 4], "download": [1, 4], "code": [1, 4], "metal": [2, 7, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 292], "debugg": 2, "xcode": 2, "workflow": 2, "linear": [3, 291, 316], "regress": 3, "llm": 4, "infer": 4, "model": 4, "attent": 4, "layer": [4, 5, 410], "encod": 4, "full": [4, 146], "gener": 4, "put": 4, "all": [4, 14, 32, 440], "togeth": 4, "convert": 4, "weight": 4, "load": [4, 170, 446], "benchmark": 4, "multi": 5, "perceptron": 5, "instal": [6, 7, 440], "api": [6, 7], "refer": 6, "c": [6, 7], "further": 6, "read": 6, "troubleshoot": 7, "from": [7, 442], "sourc": 7, "requir": 7, "option": 7, "binari": 7, "size": [7, 68], "minim": 7, "found": 7, "x86": 7, "shell": 7, "core": [8, 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, 284], "devic": [8, 287], "dtype": [9, 45], "dtypecategori": 10, "ab": [11, 31], "add": 12, "addmm": 13, "allclos": 15, "ani": [16, 33], "arang": 17, "arcco": 18, "arccosh": 19, "arcsin": 20, "arcsinh": 21, "arctan": 22, "arctan2": 23, "arctanh": 24, "argmax": [25, 34], "argmin": [26, 35], "argpartit": 27, "argsort": 28, "arrai": [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, 285, 442, 446], "t": 30, "astyp": 36, "co": [38, 98], "cummax": [39, 100], "cummin": [40, 101], "cumprod": [41, 102], "cumsum": [42, 103], "diag": [43, 108], "diagon": [44, 109], "exp": [46, 123], "flatten": [47, 143], "item": 48, "items": 49, "log": [50, 171], "log10": [51, 172], "log1p": [52, 173], "log2": [53, 174], "logsumexp": [54, 179], "max": [55, 181], "mean": [56, 183], "min": [57, 196], "moveaxi": [58, 198], "nbyte": 59, "ndim": 60, "prod": [61, 209], "reciproc": [62, 224], "reshap": [63, 227], "round": [64, 229], "rsqrt": [65, 230], "shape": 66, "sin": [67, 240], "split": [69, 221, 244], "sqrt": [70, 245], "squar": [71, 246], "squeez": [72, 247], "sum": [73, 253], "swapax": [74, 254], "tolist": 75, "transpos": [76, 264], "var": [77, 269], "array_equ": 78, "as_strid": 79, "atleast_1d": 80, "atleast_2d": 81, "atleast_3d": 82, "bitwise_and": 83, "bitwise_or": 84, "bitwise_xor": 85, "block_masked_mm": 86, "broadcast_to": 87, "ceil": 88, "clip": 89, "compil": [90, 439], "concaten": 91, "conj": 92, "conjug": 93, "conv1d": [94, 298], "conv2d": [95, 299], "conv_gener": 96, "convolv": 97, "cosh": 99, "default_devic": 104, "default_stream": 105, "degre": 106, "dequant": 107, "disable_compil": 110, "distribut": [111, 112, 113, 114, 115, 288, 440], "group": 111, "all_gath": 112, "all_sum": 113, "init": [114, 362, 363, 364, 365, 366, 367, 368, 369, 423], "is_avail": [115, 190], "divid": 116, "divmod": 117, "enable_compil": 118, "equal": 119, "erf": 120, "erfinv": 121, "eval": [122, 323], "expand_dim": 124, "expm1": 125, "ey": 126, "fast": [127, 128, 129, 130, 289], "layer_norm": 127, "rms_norm": 128, "rope": [129, 348], "scaled_dot_product_attent": 130, "fft": [131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 290], "fft2": 132, "fftn": 133, "ifft": 134, "ifft2": 135, "ifftn": 136, "irfft": 137, "irfft2": 138, "irfftn": 139, "rfft": 140, "rfft2": 141, "rfftn": 142, "floor": 144, "floor_divid": 145, "gather_mm": 147, "gather_qmm": 148, "grad": [149, 293], "greater": 150, "greater_equ": 151, "ident": [152, 367], "inner": 153, "isclos": 154, "isinf": 155, "isnan": 156, "isneginf": 157, "isposinf": 158, "issubdtyp": 159, "jvp": 160, "left_shift": 161, "less": 162, "less_equ": 163, "linalg": [164, 165, 166, 167, 168], "choleski": 164, "inv": 165, "norm": 166, "qr": 167, "svd": 168, "linspac": 169, "logaddexp": 175, "logical_and": 176, "logical_not": 177, "logical_or": 178, "matmul": 180, "maximum": 182, "meshgrid": 184, "clear_cach": 185, "device_info": 186, "get_active_memori": 187, "get_cache_memori": 188, "get_peak_memori": 189, "reset_peak_memori": 191, "set_cache_limit": 192, "set_memory_limit": 193, "start_captur": 194, "stop_captur": 195, "minimum": 197, "multipli": 199, "neg": 200, "new_stream": 201, "not_equ": 202, "ones": 203, "ones_lik": 204, "outer": 205, "pad": 206, "partit": 207, "power": 208, "quantiz": [210, 276], "quantized_matmul": 211, "radian": 212, "random": [213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 436], "bernoulli": 213, "categor": 214, "gumbel": 215, "kei": 216, "multivariate_norm": 217, "normal": [218, 368], "randint": 219, "seed": 220, "truncated_norm": 222, "uniform": [223, 369], "remaind": 225, "repeat": 226, "right_shift": 228, "save": [231, 446], "save_gguf": 232, "save_safetensor": 233, "savez": 234, "savez_compress": 235, "set_default_devic": 236, "set_default_stream": 237, "sigmoid": [238, 400], "sign": 239, "sinh": 241, "softmax": [242, 353, 402], "sort": 243, "stack": 248, "std": 249, "stop_gradi": 250, "stream": [251, 284, 287, 448], "subtract": 252, "synchron": 255, "take": 256, "take_along_axi": 257, "tan": 258, "tanh": [259, 359, 407], "tensordot": 260, "tile": 261, "topk": 262, "trace": 263, "tri": 265, "tril": 266, "triu": 267, "value_and_grad": [268, 277], "view": 270, "vjp": 271, "vmap": 272, "where": 273, "zero": 274, "zeros_lik": 275, "nn": [276, 277, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 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, 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], "optim": [278, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434], "clip_grad_norm": 278, "util": [279, 280, 281, 282, 283, 438], "tree_flatten": 279, "tree_map": 280, "tree_map_with_path": 281, "tree_reduc": 282, "tree_unflatten": 283, "data": 286, "type": 286, "support": 286, "commun": [288, 440], "algebra": 291, "neural": 293, "network": 293, "quick": [293, 445], "start": [293, 440, 445], "The": 293, "modul": [293, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 412], "class": 293, "paramet": [293, 330], "updat": [293, 338, 425, 442], "inspect": 293, "valu": 293, "alibi": 294, "avgpool1d": 295, "avgpool2d": 296, "batchnorm": 297, "conv3d": 300, "dropout": 301, "dropout2d": 302, "dropout3d": 303, "embed": 304, "gelu": [305, 371], "glu": [306, 374], "gru": 307, "groupnorm": 308, "hardshrink": 309, "hardtanh": 310, "hardswish": [311, 377], "instancenorm": 312, "lstm": 313, "layernorm": 314, "leakyrelu": 315, "maxpool1d": 317, "maxpool2d": 318, "mish": [319, 395], "appli": 320, "apply_to_modul": 321, "children": 322, "filter_and_map": 324, "freez": 325, "leaf_modul": 326, "load_weight": 327, "named_modul": 329, "save_weight": 331, "set_dtyp": 332, "state": [333, 424], "train": [334, 336, 439, 440], "trainable_paramet": 335, "unfreez": 337, "update_modul": 339, "multiheadattent": 340, "prelu": [341, 396], "quantizedembed": 342, "quantizedlinear": 343, "rmsnorm": 344, "rnn": 345, "relu": [346, 397], "relu6": [347, 398], "selu": [349, 399], "sequenti": 350, "silu": [351, 401], "sinusoidalpositionalencod": 352, "softmin": [354, 403], "softplu": [355, 404], "softshrink": [356, 405], "softsign": 357, "step": [358, 406], "upsampl": 361, "constant": 362, "glorot_norm": 363, "glorot_uniform": 364, "he_norm": 365, "he_uniform": 366, "elu": 370, "gelu_approx": 372, "gelu_fast_approx": 373, "hard_shrink": 375, "hard_tanh": 376, "leaky_relu": 378, "log_sigmoid": 379, "log_softmax": 380, "loss": [381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 411], "binary_cross_entropi": 381, "cosine_similarity_loss": 382, "cross_entropi": 383, "gaussian_nll_loss": 384, "hinge_loss": 385, "huber_loss": 386, "kl_div_loss": 387, "l1_loss": 388, "log_cosh_loss": 389, "margin_ranking_loss": 390, "mse_loss": 391, "nll_loss": 392, "smooth_l1_loss": 393, "triplet_loss": 394, "function": [408, 411, 439, 441, 445], "initi": 409, "adadelta": 415, "adafactor": 416, "adagrad": 417, "adam": 418, "adamw": 419, "adamax": 420, "lion": 421, "apply_gradi": 422, "rmsprop": 426, "sgd": 427, "cosine_decai": 428, "exponential_decai": 429, "join_schedul": 430, "linear_schedul": 431, "step_decai": 432, "common": 433, "schedul": 435, "tree": 438, "basic": [439, 445], "speedup": 439, "debug": 439, "pure": 439, "graph": [439, 443, 445], "get": 440, "mpi": 440, "set": 440, "up": 440, "remot": 440, "host": 440, "tune": 440, "reduc": 440, "automat": 441, "differenti": 441, "vector": 441, "index": 442, "differ": 442, "numpi": [442, 444], "In": 442, "place": 442, "lazi": 443, "evalu": 443, "why": 443, "comput": 443, "onli": 443, "what": 443, "you": 443, "when": 443, "convers": 444, "other": 444, "framework": 444, "pytorch": 444, "jax": 444, "tensorflow": 444, "guid": 445, "serial": 446, "format": 446, "unifi": 447, "memori": 447, "A": 447, "simpl": 447, "specifi": 448}, "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"], [1, "operations"], [413, "operations"]], "Custom Extensions in MLX": [[1, "custom-extensions-in-mlx"]], "Introducing the Example": [[1, "introducing-the-example"]], "Operations and Primitives": [[1, "operations-and-primitives"]], "Primitives": [[1, "primitives"]], "Using the Primitive": [[1, "using-the-primitive"]], "Implementing the Primitive": [[1, "implementing-the-primitive"]], "Implementing the CPU Back-end": [[1, "implementing-the-cpu-back-end"]], "Implementing the GPU Back-end": [[1, "implementing-the-gpu-back-end"]], "Primitive Transforms": [[1, "primitive-transforms"]], "Building and Binding": [[1, "building-and-binding"]], "Binding to Python": [[1, "binding-to-python"]], "Building with CMake": [[1, "building-with-cmake"]], "Building with setuptools": [[1, "building-with-setuptools"]], "Usage": [[1, "usage"], [6, null]], "Results": [[1, "results"]], "Scripts": [[1, "scripts"], [4, "scripts"]], "Download the code": [[1, null], [4, null]], "Metal Debugger": [[2, "metal-debugger"]], "Xcode Workflow": [[2, "xcode-workflow"]], "Linear Regression": [[3, "linear-regression"]], "LLM inference": [[4, "llm-inference"]], "Implementing the model": [[4, "implementing-the-model"]], "Attention layer": [[4, "attention-layer"]], "Encoder layer": [[4, "encoder-layer"]], "Full model": [[4, "full-model"]], "Generation": [[4, "generation"]], "Putting it all together": [[4, "putting-it-all-together"]], "Converting the weights": [[4, "converting-the-weights"]], "Weight loading and benchmarking": [[4, "weight-loading-and-benchmarking"]], "Multi-Layer Perceptron": [[5, "multi-layer-perceptron"]], "MLX": [[6, "mlx"]], "Install": [[6, null]], "Examples": [[6, null]], "Python API Reference": [[6, null]], "C++ API Reference": [[6, null]], "Further Reading": [[6, null]], "Build and Install": [[7, "build-and-install"]], "Python Installation": [[7, "python-installation"]], "Troubleshooting": [[7, "troubleshooting"], [7, "id2"]], "Build from source": [[7, "build-from-source"]], "Build Requirements": [[7, "build-requirements"]], "Python API": [[7, "python-api"]], "C++ API": [[7, "c-api"]], "Build Options": [[7, "id3"]], "Binary Size Minimization": [[7, "binary-size-minimization"]], "Metal not found": [[7, "metal-not-found"]], "x86 Shell": [[7, "x86-shell"]], "mlx.core.Device": [[8, "mlx-core-device"]], "mlx.core.Dtype": [[9, "mlx-core-dtype"]], "mlx.core.DtypeCategory": [[10, "mlx-core-dtypecategory"]], "mlx.core.abs": [[11, "mlx-core-abs"]], "mlx.core.add": [[12, "mlx-core-add"]], "mlx.core.addmm": [[13, "mlx-core-addmm"]], "mlx.core.all": [[14, "mlx-core-all"]], "mlx.core.allclose": [[15, "mlx-core-allclose"]], "mlx.core.any": [[16, "mlx-core-any"]], "mlx.core.arange": [[17, "mlx-core-arange"]], "mlx.core.arccos": [[18, "mlx-core-arccos"]], "mlx.core.arccosh": [[19, "mlx-core-arccosh"]], "mlx.core.arcsin": [[20, "mlx-core-arcsin"]], "mlx.core.arcsinh": [[21, "mlx-core-arcsinh"]], "mlx.core.arctan": [[22, "mlx-core-arctan"]], "mlx.core.arctan2": [[23, "mlx-core-arctan2"]], "mlx.core.arctanh": [[24, "mlx-core-arctanh"]], "mlx.core.argmax": [[25, "mlx-core-argmax"]], "mlx.core.argmin": [[26, "mlx-core-argmin"]], "mlx.core.argpartition": [[27, "mlx-core-argpartition"]], "mlx.core.argsort": [[28, "mlx-core-argsort"]], "mlx.core.array": [[29, "mlx-core-array"]], "mlx.core.array.T": [[30, "mlx-core-array-t"]], "mlx.core.array.abs": [[31, "mlx-core-array-abs"]], "mlx.core.array.all": [[32, "mlx-core-array-all"]], "mlx.core.array.any": [[33, "mlx-core-array-any"]], "mlx.core.array.argmax": [[34, "mlx-core-array-argmax"]], "mlx.core.array.argmin": [[35, "mlx-core-array-argmin"]], "mlx.core.array.astype": [[36, "mlx-core-array-astype"]], "mlx.core.array.at": [[37, "mlx-core-array-at"]], "mlx.core.array.cos": [[38, "mlx-core-array-cos"]], "mlx.core.array.cummax": [[39, "mlx-core-array-cummax"]], "mlx.core.array.cummin": [[40, "mlx-core-array-cummin"]], "mlx.core.array.cumprod": [[41, "mlx-core-array-cumprod"]], "mlx.core.array.cumsum": [[42, "mlx-core-array-cumsum"]], "mlx.core.array.diag": [[43, "mlx-core-array-diag"]], "mlx.core.array.diagonal": [[44, "mlx-core-array-diagonal"]], "mlx.core.array.dtype": [[45, "mlx-core-array-dtype"]], "mlx.core.array.exp": [[46, "mlx-core-array-exp"]], "mlx.core.array.flatten": [[47, "mlx-core-array-flatten"]], "mlx.core.array.item": [[48, "mlx-core-array-item"]], "mlx.core.array.itemsize": [[49, "mlx-core-array-itemsize"]], "mlx.core.array.log": [[50, "mlx-core-array-log"]], "mlx.core.array.log10": [[51, "mlx-core-array-log10"]], "mlx.core.array.log1p": [[52, "mlx-core-array-log1p"]], "mlx.core.array.log2": [[53, "mlx-core-array-log2"]], "mlx.core.array.logsumexp": [[54, "mlx-core-array-logsumexp"]], "mlx.core.array.max": [[55, "mlx-core-array-max"]], "mlx.core.array.mean": [[56, "mlx-core-array-mean"]], "mlx.core.array.min": [[57, "mlx-core-array-min"]], "mlx.core.array.moveaxis": [[58, "mlx-core-array-moveaxis"]], "mlx.core.array.nbytes": [[59, "mlx-core-array-nbytes"]], "mlx.core.array.ndim": [[60, "mlx-core-array-ndim"]], "mlx.core.array.prod": [[61, "mlx-core-array-prod"]], "mlx.core.array.reciprocal": [[62, "mlx-core-array-reciprocal"]], "mlx.core.array.reshape": [[63, "mlx-core-array-reshape"]], "mlx.core.array.round": [[64, "mlx-core-array-round"]], "mlx.core.array.rsqrt": [[65, "mlx-core-array-rsqrt"]], "mlx.core.array.shape": [[66, "mlx-core-array-shape"]], "mlx.core.array.sin": [[67, "mlx-core-array-sin"]], "mlx.core.array.size": [[68, "mlx-core-array-size"]], "mlx.core.array.split": [[69, "mlx-core-array-split"]], "mlx.core.array.sqrt": [[70, "mlx-core-array-sqrt"]], "mlx.core.array.square": [[71, "mlx-core-array-square"]], "mlx.core.array.squeeze": [[72, "mlx-core-array-squeeze"]], "mlx.core.array.sum": [[73, "mlx-core-array-sum"]], "mlx.core.array.swapaxes": [[74, "mlx-core-array-swapaxes"]], "mlx.core.array.tolist": [[75, "mlx-core-array-tolist"]], "mlx.core.array.transpose": [[76, "mlx-core-array-transpose"]], "mlx.core.array.var": [[77, "mlx-core-array-var"]], "mlx.core.array_equal": [[78, "mlx-core-array-equal"]], "mlx.core.as_strided": [[79, "mlx-core-as-strided"]], "mlx.core.atleast_1d": [[80, "mlx-core-atleast-1d"]], "mlx.core.atleast_2d": [[81, "mlx-core-atleast-2d"]], "mlx.core.atleast_3d": [[82, "mlx-core-atleast-3d"]], "mlx.core.bitwise_and": [[83, "mlx-core-bitwise-and"]], "mlx.core.bitwise_or": [[84, "mlx-core-bitwise-or"]], "mlx.core.bitwise_xor": [[85, "mlx-core-bitwise-xor"]], "mlx.core.block_masked_mm": [[86, "mlx-core-block-masked-mm"]], "mlx.core.broadcast_to": [[87, "mlx-core-broadcast-to"]], "mlx.core.ceil": [[88, "mlx-core-ceil"]], "mlx.core.clip": [[89, "mlx-core-clip"]], "mlx.core.compile": [[90, "mlx-core-compile"]], "mlx.core.concatenate": [[91, "mlx-core-concatenate"]], "mlx.core.conj": [[92, "mlx-core-conj"]], "mlx.core.conjugate": [[93, "mlx-core-conjugate"]], "mlx.core.conv1d": [[94, "mlx-core-conv1d"]], "mlx.core.conv2d": [[95, "mlx-core-conv2d"]], "mlx.core.conv_general": [[96, "mlx-core-conv-general"]], "mlx.core.convolve": [[97, "mlx-core-convolve"]], "mlx.core.cos": [[98, "mlx-core-cos"]], "mlx.core.cosh": [[99, "mlx-core-cosh"]], "mlx.core.cummax": [[100, "mlx-core-cummax"]], "mlx.core.cummin": [[101, "mlx-core-cummin"]], "mlx.core.cumprod": [[102, "mlx-core-cumprod"]], "mlx.core.cumsum": [[103, "mlx-core-cumsum"]], "mlx.core.default_device": [[104, "mlx-core-default-device"]], "mlx.core.default_stream": [[105, "mlx-core-default-stream"]], "mlx.core.degrees": [[106, "mlx-core-degrees"]], "mlx.core.dequantize": [[107, "mlx-core-dequantize"]], "mlx.core.diag": [[108, "mlx-core-diag"]], "mlx.core.diagonal": [[109, "mlx-core-diagonal"]], "mlx.core.disable_compile": [[110, "mlx-core-disable-compile"]], "mlx.core.distributed.Group": [[111, "mlx-core-distributed-group"]], "mlx.core.distributed.all_gather": [[112, "mlx-core-distributed-all-gather"]], "mlx.core.distributed.all_sum": [[113, "mlx-core-distributed-all-sum"]], "mlx.core.distributed.init": [[114, "mlx-core-distributed-init"]], "mlx.core.distributed.is_available": [[115, "mlx-core-distributed-is-available"]], "mlx.core.divide": [[116, "mlx-core-divide"]], "mlx.core.divmod": [[117, "mlx-core-divmod"]], "mlx.core.enable_compile": [[118, "mlx-core-enable-compile"]], "mlx.core.equal": [[119, "mlx-core-equal"]], "mlx.core.erf": [[120, "mlx-core-erf"]], "mlx.core.erfinv": [[121, "mlx-core-erfinv"]], "mlx.core.eval": [[122, "mlx-core-eval"]], "mlx.core.exp": [[123, "mlx-core-exp"]], "mlx.core.expand_dims": [[124, "mlx-core-expand-dims"]], "mlx.core.expm1": [[125, "mlx-core-expm1"]], "mlx.core.eye": [[126, "mlx-core-eye"]], "mlx.core.fast.layer_norm": [[127, "mlx-core-fast-layer-norm"]], "mlx.core.fast.rms_norm": [[128, "mlx-core-fast-rms-norm"]], "mlx.core.fast.rope": [[129, "mlx-core-fast-rope"]], "mlx.core.fast.scaled_dot_product_attention": [[130, "mlx-core-fast-scaled-dot-product-attention"]], "mlx.core.fft.fft": [[131, "mlx-core-fft-fft"]], "mlx.core.fft.fft2": [[132, "mlx-core-fft-fft2"]], "mlx.core.fft.fftn": [[133, "mlx-core-fft-fftn"]], "mlx.core.fft.ifft": [[134, "mlx-core-fft-ifft"]], "mlx.core.fft.ifft2": [[135, "mlx-core-fft-ifft2"]], "mlx.core.fft.ifftn": [[136, "mlx-core-fft-ifftn"]], "mlx.core.fft.irfft": [[137, "mlx-core-fft-irfft"]], "mlx.core.fft.irfft2": [[138, "mlx-core-fft-irfft2"]], "mlx.core.fft.irfftn": [[139, "mlx-core-fft-irfftn"]], "mlx.core.fft.rfft": [[140, "mlx-core-fft-rfft"]], "mlx.core.fft.rfft2": [[141, "mlx-core-fft-rfft2"]], "mlx.core.fft.rfftn": [[142, "mlx-core-fft-rfftn"]], "mlx.core.flatten": [[143, "mlx-core-flatten"]], "mlx.core.floor": [[144, "mlx-core-floor"]], "mlx.core.floor_divide": [[145, "mlx-core-floor-divide"]], "mlx.core.full": [[146, "mlx-core-full"]], "mlx.core.gather_mm": [[147, "mlx-core-gather-mm"]], "mlx.core.gather_qmm": [[148, "mlx-core-gather-qmm"]], "mlx.core.grad": [[149, "mlx-core-grad"]], "mlx.core.greater": [[150, "mlx-core-greater"]], "mlx.core.greater_equal": [[151, "mlx-core-greater-equal"]], "mlx.core.identity": [[152, "mlx-core-identity"]], "mlx.core.inner": [[153, "mlx-core-inner"]], "mlx.core.isclose": [[154, "mlx-core-isclose"]], "mlx.core.isinf": [[155, "mlx-core-isinf"]], "mlx.core.isnan": [[156, "mlx-core-isnan"]], "mlx.core.isneginf": [[157, "mlx-core-isneginf"]], "mlx.core.isposinf": [[158, "mlx-core-isposinf"]], "mlx.core.issubdtype": [[159, "mlx-core-issubdtype"]], "mlx.core.jvp": [[160, "mlx-core-jvp"]], "mlx.core.left_shift": [[161, "mlx-core-left-shift"]], "mlx.core.less": [[162, "mlx-core-less"]], "mlx.core.less_equal": [[163, "mlx-core-less-equal"]], "mlx.core.linalg.cholesky": [[164, "mlx-core-linalg-cholesky"]], "mlx.core.linalg.inv": [[165, "mlx-core-linalg-inv"]], "mlx.core.linalg.norm": [[166, "mlx-core-linalg-norm"]], "mlx.core.linalg.qr": [[167, "mlx-core-linalg-qr"]], "mlx.core.linalg.svd": [[168, "mlx-core-linalg-svd"]], "mlx.core.linspace": [[169, "mlx-core-linspace"]], "mlx.core.load": [[170, "mlx-core-load"]], "mlx.core.log": [[171, "mlx-core-log"]], "mlx.core.log10": [[172, "mlx-core-log10"]], "mlx.core.log1p": [[173, "mlx-core-log1p"]], "mlx.core.log2": [[174, "mlx-core-log2"]], "mlx.core.logaddexp": [[175, "mlx-core-logaddexp"]], "mlx.core.logical_and": [[176, "mlx-core-logical-and"]], "mlx.core.logical_not": [[177, "mlx-core-logical-not"]], "mlx.core.logical_or": [[178, "mlx-core-logical-or"]], "mlx.core.logsumexp": [[179, "mlx-core-logsumexp"]], "mlx.core.matmul": [[180, "mlx-core-matmul"]], "mlx.core.max": [[181, "mlx-core-max"]], "mlx.core.maximum": [[182, "mlx-core-maximum"]], "mlx.core.mean": [[183, "mlx-core-mean"]], "mlx.core.meshgrid": [[184, "mlx-core-meshgrid"]], "mlx.core.metal.clear_cache": [[185, "mlx-core-metal-clear-cache"]], "mlx.core.metal.device_info": [[186, "mlx-core-metal-device-info"]], "mlx.core.metal.get_active_memory": [[187, "mlx-core-metal-get-active-memory"]], "mlx.core.metal.get_cache_memory": [[188, "mlx-core-metal-get-cache-memory"]], "mlx.core.metal.get_peak_memory": [[189, "mlx-core-metal-get-peak-memory"]], "mlx.core.metal.is_available": [[190, "mlx-core-metal-is-available"]], "mlx.core.metal.reset_peak_memory": [[191, "mlx-core-metal-reset-peak-memory"]], "mlx.core.metal.set_cache_limit": [[192, "mlx-core-metal-set-cache-limit"]], "mlx.core.metal.set_memory_limit": [[193, "mlx-core-metal-set-memory-limit"]], "mlx.core.metal.start_capture": [[194, "mlx-core-metal-start-capture"]], "mlx.core.metal.stop_capture": [[195, "mlx-core-metal-stop-capture"]], "mlx.core.min": [[196, "mlx-core-min"]], "mlx.core.minimum": [[197, "mlx-core-minimum"]], "mlx.core.moveaxis": [[198, "mlx-core-moveaxis"]], "mlx.core.multiply": [[199, "mlx-core-multiply"]], "mlx.core.negative": [[200, "mlx-core-negative"]], "mlx.core.new_stream": [[201, "mlx-core-new-stream"]], "mlx.core.not_equal": [[202, "mlx-core-not-equal"]], "mlx.core.ones": [[203, "mlx-core-ones"]], "mlx.core.ones_like": [[204, "mlx-core-ones-like"]], "mlx.core.outer": [[205, "mlx-core-outer"]], "mlx.core.pad": [[206, "mlx-core-pad"]], "mlx.core.partition": [[207, "mlx-core-partition"]], "mlx.core.power": [[208, "mlx-core-power"]], "mlx.core.prod": [[209, "mlx-core-prod"]], "mlx.core.quantize": [[210, "mlx-core-quantize"]], "mlx.core.quantized_matmul": [[211, "mlx-core-quantized-matmul"]], "mlx.core.radians": [[212, "mlx-core-radians"]], "mlx.core.random.bernoulli": [[213, "mlx-core-random-bernoulli"]], "mlx.core.random.categorical": [[214, "mlx-core-random-categorical"]], "mlx.core.random.gumbel": [[215, "mlx-core-random-gumbel"]], "mlx.core.random.key": [[216, "mlx-core-random-key"]], "mlx.core.random.multivariate_normal": [[217, "mlx-core-random-multivariate-normal"]], "mlx.core.random.normal": [[218, "mlx-core-random-normal"]], "mlx.core.random.randint": [[219, "mlx-core-random-randint"]], "mlx.core.random.seed": [[220, "mlx-core-random-seed"]], "mlx.core.random.split": [[221, "mlx-core-random-split"]], "mlx.core.random.truncated_normal": [[222, "mlx-core-random-truncated-normal"]], "mlx.core.random.uniform": [[223, "mlx-core-random-uniform"]], "mlx.core.reciprocal": [[224, "mlx-core-reciprocal"]], "mlx.core.remainder": [[225, "mlx-core-remainder"]], "mlx.core.repeat": [[226, "mlx-core-repeat"]], "mlx.core.reshape": [[227, "mlx-core-reshape"]], "mlx.core.right_shift": [[228, "mlx-core-right-shift"]], "mlx.core.round": [[229, "mlx-core-round"]], "mlx.core.rsqrt": [[230, "mlx-core-rsqrt"]], "mlx.core.save": [[231, "mlx-core-save"]], "mlx.core.save_gguf": [[232, "mlx-core-save-gguf"]], "mlx.core.save_safetensors": [[233, "mlx-core-save-safetensors"]], "mlx.core.savez": [[234, "mlx-core-savez"]], "mlx.core.savez_compressed": [[235, "mlx-core-savez-compressed"]], "mlx.core.set_default_device": [[236, "mlx-core-set-default-device"]], "mlx.core.set_default_stream": [[237, "mlx-core-set-default-stream"]], "mlx.core.sigmoid": [[238, "mlx-core-sigmoid"]], "mlx.core.sign": [[239, "mlx-core-sign"]], "mlx.core.sin": [[240, "mlx-core-sin"]], "mlx.core.sinh": [[241, "mlx-core-sinh"]], "mlx.core.softmax": [[242, "mlx-core-softmax"]], "mlx.core.sort": [[243, "mlx-core-sort"]], "mlx.core.split": [[244, "mlx-core-split"]], "mlx.core.sqrt": [[245, "mlx-core-sqrt"]], "mlx.core.square": [[246, "mlx-core-square"]], "mlx.core.squeeze": [[247, "mlx-core-squeeze"]], "mlx.core.stack": [[248, "mlx-core-stack"]], "mlx.core.std": [[249, "mlx-core-std"]], "mlx.core.stop_gradient": [[250, "mlx-core-stop-gradient"]], "mlx.core.stream": [[251, "mlx-core-stream"]], "mlx.core.subtract": [[252, "mlx-core-subtract"]], "mlx.core.sum": [[253, "mlx-core-sum"]], "mlx.core.swapaxes": [[254, "mlx-core-swapaxes"]], "mlx.core.synchronize": [[255, "mlx-core-synchronize"]], "mlx.core.take": [[256, "mlx-core-take"]], "mlx.core.take_along_axis": [[257, "mlx-core-take-along-axis"]], "mlx.core.tan": [[258, "mlx-core-tan"]], "mlx.core.tanh": [[259, "mlx-core-tanh"]], "mlx.core.tensordot": [[260, "mlx-core-tensordot"]], "mlx.core.tile": [[261, "mlx-core-tile"]], "mlx.core.topk": [[262, "mlx-core-topk"]], "mlx.core.trace": [[263, "mlx-core-trace"]], "mlx.core.transpose": [[264, "mlx-core-transpose"]], "mlx.core.tri": [[265, "mlx-core-tri"]], "mlx.core.tril": [[266, "mlx-core-tril"]], "mlx.core.triu": [[267, "mlx-core-triu"]], "mlx.core.value_and_grad": [[268, "mlx-core-value-and-grad"]], "mlx.core.var": [[269, "mlx-core-var"]], "mlx.core.view": [[270, "mlx-core-view"]], "mlx.core.vjp": [[271, "mlx-core-vjp"]], "mlx.core.vmap": [[272, "mlx-core-vmap"]], "mlx.core.where": [[273, "mlx-core-where"]], "mlx.core.zeros": [[274, "mlx-core-zeros"]], "mlx.core.zeros_like": [[275, "mlx-core-zeros-like"]], "mlx.nn.quantize": [[276, "mlx-nn-quantize"]], "mlx.nn.value_and_grad": [[277, "mlx-nn-value-and-grad"]], "mlx.optimizers.clip_grad_norm": [[278, "mlx-optimizers-clip-grad-norm"]], "mlx.utils.tree_flatten": [[279, "mlx-utils-tree-flatten"]], "mlx.utils.tree_map": [[280, "mlx-utils-tree-map"]], "mlx.utils.tree_map_with_path": [[281, "mlx-utils-tree-map-with-path"]], "mlx.utils.tree_reduce": [[282, "mlx-utils-tree-reduce"]], "mlx.utils.tree_unflatten": [[283, "mlx-utils-tree-unflatten"]], "mlx.core.Stream": [[284, "mlx-core-stream"]], "Array": [[285, "array"]], "Data Types": [[286, "data-types"]], "Supported Data Types": [[286, "id2"]], "Devices and Streams": [[287, "devices-and-streams"]], "Distributed Communication": [[288, "distributed-communication"], [440, "distributed-communication"]], "Fast": [[289, "fast"]], "FFT": [[290, "fft"]], "Linear Algebra": [[291, "linear-algebra"]], "Metal": [[292, "metal"]], "Neural Networks": [[293, "neural-networks"]], "Quick Start with Neural Networks": [[293, "quick-start-with-neural-networks"]], "The Module Class": [[293, "the-module-class"]], "Parameters": [[293, "parameters"]], "Updating the Parameters": [[293, "updating-the-parameters"]], "Inspecting Modules": [[293, "inspecting-modules"]], "Value and Grad": [[293, "value-and-grad"]], "mlx.nn.ALiBi": [[294, "mlx-nn-alibi"]], "mlx.nn.AvgPool1d": [[295, "mlx-nn-avgpool1d"]], "mlx.nn.AvgPool2d": [[296, "mlx-nn-avgpool2d"]], "mlx.nn.BatchNorm": [[297, "mlx-nn-batchnorm"]], "mlx.nn.Conv1d": [[298, "mlx-nn-conv1d"]], "mlx.nn.Conv2d": [[299, "mlx-nn-conv2d"]], "mlx.nn.Conv3d": [[300, "mlx-nn-conv3d"]], "mlx.nn.Dropout": [[301, "mlx-nn-dropout"]], "mlx.nn.Dropout2d": [[302, "mlx-nn-dropout2d"]], "mlx.nn.Dropout3d": [[303, "mlx-nn-dropout3d"]], "mlx.nn.Embedding": [[304, "mlx-nn-embedding"]], "mlx.nn.GELU": [[305, "mlx-nn-gelu"]], "mlx.nn.GLU": [[306, "mlx-nn-glu"]], "mlx.nn.GRU": [[307, "mlx-nn-gru"]], "mlx.nn.GroupNorm": [[308, "mlx-nn-groupnorm"]], "mlx.nn.HardShrink": [[309, "mlx-nn-hardshrink"]], "mlx.nn.HardTanh": [[310, "mlx-nn-hardtanh"]], "mlx.nn.Hardswish": [[311, "mlx-nn-hardswish"]], "mlx.nn.InstanceNorm": [[312, "mlx-nn-instancenorm"]], "mlx.nn.LSTM": [[313, "mlx-nn-lstm"]], "mlx.nn.LayerNorm": [[314, "mlx-nn-layernorm"]], "mlx.nn.LeakyReLU": [[315, "mlx-nn-leakyrelu"]], "mlx.nn.Linear": [[316, "mlx-nn-linear"]], "mlx.nn.MaxPool1d": [[317, "mlx-nn-maxpool1d"]], "mlx.nn.MaxPool2d": [[318, "mlx-nn-maxpool2d"]], "mlx.nn.Mish": [[319, "mlx-nn-mish"]], "mlx.nn.Module.apply": [[320, "mlx-nn-module-apply"]], "mlx.nn.Module.apply_to_modules": [[321, "mlx-nn-module-apply-to-modules"]], "mlx.nn.Module.children": [[322, "mlx-nn-module-children"]], "mlx.nn.Module.eval": [[323, "mlx-nn-module-eval"]], "mlx.nn.Module.filter_and_map": [[324, "mlx-nn-module-filter-and-map"]], "mlx.nn.Module.freeze": [[325, "mlx-nn-module-freeze"]], "mlx.nn.Module.leaf_modules": [[326, "mlx-nn-module-leaf-modules"]], "mlx.nn.Module.load_weights": [[327, "mlx-nn-module-load-weights"]], "mlx.nn.Module.modules": [[328, "mlx-nn-module-modules"]], "mlx.nn.Module.named_modules": [[329, "mlx-nn-module-named-modules"]], "mlx.nn.Module.parameters": [[330, "mlx-nn-module-parameters"]], "mlx.nn.Module.save_weights": [[331, "mlx-nn-module-save-weights"]], "mlx.nn.Module.set_dtype": [[332, "mlx-nn-module-set-dtype"]], "mlx.nn.Module.state": [[333, "mlx-nn-module-state"]], "mlx.nn.Module.train": [[334, "mlx-nn-module-train"]], "mlx.nn.Module.trainable_parameters": [[335, "mlx-nn-module-trainable-parameters"]], "mlx.nn.Module.training": [[336, "mlx-nn-module-training"]], "mlx.nn.Module.unfreeze": [[337, "mlx-nn-module-unfreeze"]], "mlx.nn.Module.update": [[338, "mlx-nn-module-update"]], "mlx.nn.Module.update_modules": [[339, "mlx-nn-module-update-modules"]], "mlx.nn.MultiHeadAttention": [[340, "mlx-nn-multiheadattention"]], "mlx.nn.PReLU": [[341, "mlx-nn-prelu"]], "mlx.nn.QuantizedEmbedding": [[342, "mlx-nn-quantizedembedding"]], "mlx.nn.QuantizedLinear": [[343, "mlx-nn-quantizedlinear"]], "mlx.nn.RMSNorm": [[344, "mlx-nn-rmsnorm"]], "mlx.nn.RNN": [[345, "mlx-nn-rnn"]], "mlx.nn.ReLU": [[346, "mlx-nn-relu"]], "mlx.nn.ReLU6": [[347, "mlx-nn-relu6"]], "mlx.nn.RoPE": [[348, "mlx-nn-rope"]], "mlx.nn.SELU": [[349, "mlx-nn-selu"]], "mlx.nn.Sequential": [[350, "mlx-nn-sequential"]], "mlx.nn.SiLU": [[351, "mlx-nn-silu"]], "mlx.nn.SinusoidalPositionalEncoding": [[352, "mlx-nn-sinusoidalpositionalencoding"]], "mlx.nn.Softmax": [[353, "mlx-nn-softmax"]], "mlx.nn.Softmin": [[354, "mlx-nn-softmin"]], "mlx.nn.Softplus": [[355, "mlx-nn-softplus"]], "mlx.nn.Softshrink": [[356, "mlx-nn-softshrink"]], "mlx.nn.Softsign": [[357, "mlx-nn-softsign"]], "mlx.nn.Step": [[358, "mlx-nn-step"]], "mlx.nn.Tanh": [[359, "mlx-nn-tanh"]], "mlx.nn.Transformer": [[360, "mlx-nn-transformer"]], "mlx.nn.Upsample": [[361, "mlx-nn-upsample"]], "mlx.nn.init.constant": [[362, "mlx-nn-init-constant"]], "mlx.nn.init.glorot_normal": [[363, "mlx-nn-init-glorot-normal"]], "mlx.nn.init.glorot_uniform": [[364, "mlx-nn-init-glorot-uniform"]], "mlx.nn.init.he_normal": [[365, "mlx-nn-init-he-normal"]], "mlx.nn.init.he_uniform": [[366, "mlx-nn-init-he-uniform"]], "mlx.nn.init.identity": [[367, "mlx-nn-init-identity"]], "mlx.nn.init.normal": [[368, "mlx-nn-init-normal"]], "mlx.nn.init.uniform": [[369, "mlx-nn-init-uniform"]], "mlx.nn.elu": [[370, "mlx-nn-elu"]], "mlx.nn.gelu": [[371, "mlx-nn-gelu"]], "mlx.nn.gelu_approx": [[372, "mlx-nn-gelu-approx"]], "mlx.nn.gelu_fast_approx": [[373, "mlx-nn-gelu-fast-approx"]], "mlx.nn.glu": [[374, "mlx-nn-glu"]], "mlx.nn.hard_shrink": [[375, "mlx-nn-hard-shrink"]], "mlx.nn.hard_tanh": [[376, "mlx-nn-hard-tanh"]], "mlx.nn.hardswish": [[377, "mlx-nn-hardswish"]], "mlx.nn.leaky_relu": [[378, "mlx-nn-leaky-relu"]], "mlx.nn.log_sigmoid": [[379, "mlx-nn-log-sigmoid"]], "mlx.nn.log_softmax": [[380, "mlx-nn-log-softmax"]], "mlx.nn.losses.binary_cross_entropy": [[381, "mlx-nn-losses-binary-cross-entropy"]], "mlx.nn.losses.cosine_similarity_loss": [[382, "mlx-nn-losses-cosine-similarity-loss"]], "mlx.nn.losses.cross_entropy": [[383, "mlx-nn-losses-cross-entropy"]], "mlx.nn.losses.gaussian_nll_loss": [[384, "mlx-nn-losses-gaussian-nll-loss"]], "mlx.nn.losses.hinge_loss": [[385, "mlx-nn-losses-hinge-loss"]], "mlx.nn.losses.huber_loss": [[386, "mlx-nn-losses-huber-loss"]], "mlx.nn.losses.kl_div_loss": [[387, "mlx-nn-losses-kl-div-loss"]], "mlx.nn.losses.l1_loss": [[388, "mlx-nn-losses-l1-loss"]], "mlx.nn.losses.log_cosh_loss": [[389, "mlx-nn-losses-log-cosh-loss"]], "mlx.nn.losses.margin_ranking_loss": [[390, "mlx-nn-losses-margin-ranking-loss"]], "mlx.nn.losses.mse_loss": [[391, "mlx-nn-losses-mse-loss"]], "mlx.nn.losses.nll_loss": [[392, "mlx-nn-losses-nll-loss"]], "mlx.nn.losses.smooth_l1_loss": [[393, "mlx-nn-losses-smooth-l1-loss"]], "mlx.nn.losses.triplet_loss": [[394, "mlx-nn-losses-triplet-loss"]], "mlx.nn.mish": [[395, "mlx-nn-mish"]], "mlx.nn.prelu": [[396, "mlx-nn-prelu"]], "mlx.nn.relu": [[397, "mlx-nn-relu"]], "mlx.nn.relu6": [[398, "mlx-nn-relu6"]], "mlx.nn.selu": [[399, "mlx-nn-selu"]], "mlx.nn.sigmoid": [[400, "mlx-nn-sigmoid"]], "mlx.nn.silu": [[401, "mlx-nn-silu"]], "mlx.nn.softmax": [[402, "mlx-nn-softmax"]], "mlx.nn.softmin": [[403, "mlx-nn-softmin"]], "mlx.nn.softplus": [[404, "mlx-nn-softplus"]], "mlx.nn.softshrink": [[405, "mlx-nn-softshrink"]], "mlx.nn.step": [[406, "mlx-nn-step"]], "mlx.nn.tanh": [[407, "mlx-nn-tanh"]], "Functions": [[408, "functions"]], "Initializers": [[409, "initializers"]], "Layers": [[410, "layers"]], "Loss Functions": [[411, "loss-functions"]], "Module": [[412, "module"]], "Optimizers": [[414, "optimizers"]], "mlx.optimizers.AdaDelta": [[415, "mlx-optimizers-adadelta"]], "mlx.optimizers.Adafactor": [[416, "mlx-optimizers-adafactor"]], "mlx.optimizers.Adagrad": [[417, "mlx-optimizers-adagrad"]], "mlx.optimizers.Adam": [[418, "mlx-optimizers-adam"]], "mlx.optimizers.AdamW": [[419, "mlx-optimizers-adamw"]], "mlx.optimizers.Adamax": [[420, "mlx-optimizers-adamax"]], "mlx.optimizers.Lion": [[421, "mlx-optimizers-lion"]], "mlx.optimizers.Optimizer.apply_gradients": [[422, "mlx-optimizers-optimizer-apply-gradients"]], "mlx.optimizers.Optimizer.init": [[423, "mlx-optimizers-optimizer-init"]], "mlx.optimizers.Optimizer.state": [[424, "mlx-optimizers-optimizer-state"]], "mlx.optimizers.Optimizer.update": [[425, "mlx-optimizers-optimizer-update"]], "mlx.optimizers.RMSprop": [[426, "mlx-optimizers-rmsprop"]], "mlx.optimizers.SGD": [[427, "mlx-optimizers-sgd"]], "mlx.optimizers.cosine_decay": [[428, "mlx-optimizers-cosine-decay"]], "mlx.optimizers.exponential_decay": [[429, "mlx-optimizers-exponential-decay"]], "mlx.optimizers.join_schedules": [[430, "mlx-optimizers-join-schedules"]], "mlx.optimizers.linear_schedule": [[431, "mlx-optimizers-linear-schedule"]], "mlx.optimizers.step_decay": [[432, "mlx-optimizers-step-decay"]], "Common Optimizers": [[433, "common-optimizers"]], "Optimizer": [[434, "optimizer"]], "Schedulers": [[435, "schedulers"]], "Random": [[436, "random"]], "Transforms": [[437, "transforms"]], "Tree Utils": [[438, "tree-utils"]], "Compilation": [[439, "compilation"]], "Basics of Compile": [[439, "basics-of-compile"]], "Example Speedup": [[439, "example-speedup"]], "Debugging": [[439, "debugging"]], "Pure Functions": [[439, "pure-functions"]], "Compiling Training Graphs": [[439, "compiling-training-graphs"]], "Transformations with Compile": [[439, "transformations-with-compile"]], "Getting Started": [[440, "getting-started"]], "Installing MPI": [[440, "installing-mpi"]], "Setting up Remote Hosts": [[440, "setting-up-remote-hosts"]], "Training Example": [[440, "training-example"]], "Tuning All Reduce": [[440, "tuning-all-reduce"]], "Function Transforms": [[441, "function-transforms"]], "Automatic Differentiation": [[441, "automatic-differentiation"]], "Automatic Vectorization": [[441, "automatic-vectorization"]], "Indexing Arrays": [[442, "indexing-arrays"]], "Differences from NumPy": [[442, "differences-from-numpy"]], "In Place Updates": [[442, "in-place-updates"]], "Lazy Evaluation": [[443, "lazy-evaluation"]], "Why Lazy Evaluation": [[443, "why-lazy-evaluation"]], "Transforming Compute Graphs": [[443, "transforming-compute-graphs"]], "Only Compute What You Use": [[443, "only-compute-what-you-use"]], "When to Evaluate": [[443, "when-to-evaluate"]], "Conversion to NumPy and Other Frameworks": [[444, "conversion-to-numpy-and-other-frameworks"]], "PyTorch": [[444, "pytorch"]], "JAX": [[444, "jax"]], "TensorFlow": [[444, "tensorflow"]], "Quick Start Guide": [[445, "quick-start-guide"]], "Basics": [[445, "basics"]], "Function and Graph Transformations": [[445, "function-and-graph-transformations"]], "Saving and Loading Arrays": [[446, "saving-and-loading-arrays"]], "Serialization Formats": [[446, "id1"]], "Unified Memory": [[447, "unified-memory"]], "A Simple Example": [[447, "a-simple-example"]], "Using Streams": [[448, "using-streams"]], "Specifying the Stream": [[448, "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"]], "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"]], "identity (c++ function)": [[0, "_CPPv48identityi14StreamOrDevice"], [0, "_CPPv48identityi5Dtype14StreamOrDevice"]], "inner (c++ function)": [[0, "_CPPv45innerRK5arrayRK5array14StreamOrDevice"]], "isclose (c++ function)": [[0, "_CPPv47iscloseRK5arrayRK5arrayddb14StreamOrDevice"]], "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"]], "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, "_CPPv43padRK5arrayRKNSt4pairIiiEERK5array14StreamOrDevice"], [0, "_CPPv43padRK5arrayRKNSt6vectorINSt4pairIiiEEEERK5array14StreamOrDevice"], [0, "_CPPv43padRK5arrayRKNSt6vectorIiEERKNSt6vectorIiEERKNSt6vectorIiEERK5array14StreamOrDevice"], [0, "_CPPv43padRK5arrayiRK5array14StreamOrDevice"]], "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)": [[8, "mlx.core.Device"]], "__init__() (device method)": [[8, "mlx.core.Device.__init__"]], "dtype (class in mlx.core)": [[9, "mlx.core.Dtype"]], "__init__() (dtype method)": [[9, "mlx.core.Dtype.__init__"]], "dtypecategory (class in mlx.core)": [[10, "mlx.core.DtypeCategory"]], "__init__() (dtypecategory method)": [[10, "mlx.core.DtypeCategory.__init__"]], "abs() (in module mlx.core)": [[11, "mlx.core.abs"]], "add() (in module mlx.core)": [[12, "mlx.core.add"]], "addmm() (in module mlx.core)": [[13, "mlx.core.addmm"]], "all() (in module mlx.core)": [[14, "mlx.core.all"]], "allclose() (in module mlx.core)": [[15, "mlx.core.allclose"]], "any() (in module mlx.core)": [[16, "mlx.core.any"]], "arange() (in module mlx.core)": [[17, "mlx.core.arange"]], "arccos() (in module mlx.core)": [[18, "mlx.core.arccos"]], "arccosh() (in module mlx.core)": [[19, "mlx.core.arccosh"]], "arcsin() (in module mlx.core)": [[20, "mlx.core.arcsin"]], "arcsinh() (in module mlx.core)": [[21, "mlx.core.arcsinh"]], "arctan() (in module mlx.core)": [[22, "mlx.core.arctan"]], "arctan2() (in module mlx.core)": [[23, "mlx.core.arctan2"]], "arctanh() (in module mlx.core)": [[24, "mlx.core.arctanh"]], "argmax() (in module mlx.core)": [[25, "mlx.core.argmax"]], "argmin() (in module mlx.core)": [[26, "mlx.core.argmin"]], "argpartition() (in module mlx.core)": [[27, "mlx.core.argpartition"]], "argsort() (in module mlx.core)": [[28, "mlx.core.argsort"]], "__init__() (array method)": [[29, "mlx.core.array.__init__"]], "array (class in mlx.core)": [[29, "mlx.core.array"]], "t (array property)": [[30, "mlx.core.array.T"]], "abs() (array method)": [[31, "mlx.core.array.abs"]], "all() (array method)": [[32, "mlx.core.array.all"]], "any() (array method)": [[33, "mlx.core.array.any"]], "argmax() (array method)": [[34, "mlx.core.array.argmax"]], "argmin() (array method)": [[35, "mlx.core.array.argmin"]], "astype() (array method)": [[36, "mlx.core.array.astype"]], "at (array property)": [[37, "mlx.core.array.at"]], "cos() (array method)": [[38, "mlx.core.array.cos"]], "cummax() (array method)": [[39, "mlx.core.array.cummax"]], "cummin() (array method)": [[40, "mlx.core.array.cummin"]], "cumprod() (array method)": [[41, "mlx.core.array.cumprod"]], "cumsum() (array method)": [[42, "mlx.core.array.cumsum"]], "diag() (array method)": [[43, "mlx.core.array.diag"]], "diagonal() (array method)": [[44, "mlx.core.array.diagonal"]], "dtype (array property)": [[45, "mlx.core.array.dtype"]], "exp() (array method)": [[46, "mlx.core.array.exp"]], "flatten() (array method)": [[47, "mlx.core.array.flatten"]], "item() (array method)": [[48, "mlx.core.array.item"]], "itemsize (array property)": [[49, "mlx.core.array.itemsize"]], "log() (array method)": [[50, "mlx.core.array.log"]], "log10() (array method)": [[51, "mlx.core.array.log10"]], "log1p() (array method)": [[52, "mlx.core.array.log1p"]], "log2() (array method)": [[53, "mlx.core.array.log2"]], "logsumexp() (array method)": [[54, "mlx.core.array.logsumexp"]], "max() (array method)": [[55, "mlx.core.array.max"]], "mean() (array method)": [[56, "mlx.core.array.mean"]], "min() (array method)": [[57, "mlx.core.array.min"]], "moveaxis() (array method)": [[58, "mlx.core.array.moveaxis"]], "nbytes (array property)": [[59, "mlx.core.array.nbytes"]], "ndim (array property)": [[60, "mlx.core.array.ndim"]], "prod() (array method)": [[61, "mlx.core.array.prod"]], "reciprocal() (array method)": [[62, "mlx.core.array.reciprocal"]], "reshape() (array method)": [[63, "mlx.core.array.reshape"]], "round() (array method)": [[64, "mlx.core.array.round"]], "rsqrt() (array method)": [[65, "mlx.core.array.rsqrt"]], "shape (array property)": [[66, "mlx.core.array.shape"]], "sin() (array method)": [[67, "mlx.core.array.sin"]], "size (array property)": [[68, "mlx.core.array.size"]], "split() (array method)": [[69, "mlx.core.array.split"]], "sqrt() (array method)": [[70, "mlx.core.array.sqrt"]], "square() (array method)": [[71, "mlx.core.array.square"]], "squeeze() (array method)": [[72, "mlx.core.array.squeeze"]], "sum() (array method)": [[73, "mlx.core.array.sum"]], "swapaxes() (array method)": [[74, "mlx.core.array.swapaxes"]], "tolist() (array method)": [[75, "mlx.core.array.tolist"]], "transpose() (array method)": [[76, "mlx.core.array.transpose"]], "var() (array method)": [[77, "mlx.core.array.var"]], "array_equal() (in module mlx.core)": [[78, "mlx.core.array_equal"]], "as_strided() (in module mlx.core)": [[79, "mlx.core.as_strided"]], "atleast_1d() (in module mlx.core)": [[80, "mlx.core.atleast_1d"]], "atleast_2d() (in module mlx.core)": [[81, "mlx.core.atleast_2d"]], "atleast_3d() (in module mlx.core)": [[82, "mlx.core.atleast_3d"]], "bitwise_and() (in module mlx.core)": [[83, "mlx.core.bitwise_and"]], "bitwise_or() (in module mlx.core)": [[84, "mlx.core.bitwise_or"]], "bitwise_xor() (in module mlx.core)": [[85, "mlx.core.bitwise_xor"]], "block_masked_mm() (in module mlx.core)": [[86, "mlx.core.block_masked_mm"]], "broadcast_to() (in module mlx.core)": [[87, "mlx.core.broadcast_to"]], "ceil() (in module mlx.core)": [[88, "mlx.core.ceil"]], "clip() (in module mlx.core)": [[89, "mlx.core.clip"]], "compile() (in module mlx.core)": [[90, "mlx.core.compile"]], "concatenate() (in module mlx.core)": [[91, "mlx.core.concatenate"]], "conj() (in module mlx.core)": [[92, "mlx.core.conj"]], "conjugate() (in module mlx.core)": [[93, "mlx.core.conjugate"]], "conv1d() (in module mlx.core)": [[94, "mlx.core.conv1d"]], "conv2d() (in module mlx.core)": [[95, "mlx.core.conv2d"]], "conv_general() (in module mlx.core)": [[96, "mlx.core.conv_general"]], "convolve() (in module mlx.core)": [[97, "mlx.core.convolve"]], "cos() (in module mlx.core)": [[98, "mlx.core.cos"]], "cosh() (in module mlx.core)": [[99, "mlx.core.cosh"]], "cummax() (in module mlx.core)": [[100, "mlx.core.cummax"]], "cummin() (in module mlx.core)": [[101, "mlx.core.cummin"]], "cumprod() (in module mlx.core)": [[102, "mlx.core.cumprod"]], "cumsum() (in module mlx.core)": [[103, "mlx.core.cumsum"]], "default_device() (in module mlx.core)": [[104, "mlx.core.default_device"]], "default_stream() (in module mlx.core)": [[105, "mlx.core.default_stream"]], "degrees() (in module mlx.core)": [[106, "mlx.core.degrees"]], "dequantize() (in module mlx.core)": [[107, "mlx.core.dequantize"]], "diag() (in module mlx.core)": [[108, "mlx.core.diag"]], "diagonal() (in module mlx.core)": [[109, "mlx.core.diagonal"]], "disable_compile() (in module mlx.core)": [[110, "mlx.core.disable_compile"]], "group (class in mlx.core.distributed)": [[111, "mlx.core.distributed.Group"]], "__init__() (group method)": [[111, "mlx.core.distributed.Group.__init__"]], "all_gather() (in module mlx.core.distributed)": [[112, "mlx.core.distributed.all_gather"]], "all_sum() (in module mlx.core.distributed)": [[113, "mlx.core.distributed.all_sum"]], "init() (in module mlx.core.distributed)": [[114, "mlx.core.distributed.init"]], "is_available() (in module mlx.core.distributed)": [[115, "mlx.core.distributed.is_available"]], "divide() (in module mlx.core)": [[116, "mlx.core.divide"]], "divmod() (in module mlx.core)": [[117, "mlx.core.divmod"]], "enable_compile() (in module mlx.core)": [[118, "mlx.core.enable_compile"]], "equal() (in module mlx.core)": [[119, "mlx.core.equal"]], "erf() (in module mlx.core)": [[120, "mlx.core.erf"]], "erfinv() (in module mlx.core)": [[121, "mlx.core.erfinv"]], "eval() (in module mlx.core)": [[122, "mlx.core.eval"]], "exp() (in module mlx.core)": [[123, "mlx.core.exp"]], "expand_dims() (in module mlx.core)": [[124, "mlx.core.expand_dims"]], "expm1() (in module mlx.core)": [[125, "mlx.core.expm1"]], "eye() (in module mlx.core)": [[126, "mlx.core.eye"]], "layer_norm() (in module mlx.core.fast)": [[127, "mlx.core.fast.layer_norm"]], "rms_norm() (in module mlx.core.fast)": [[128, "mlx.core.fast.rms_norm"]], "rope() (in module mlx.core.fast)": [[129, "mlx.core.fast.rope"]], "scaled_dot_product_attention() (in module mlx.core.fast)": [[130, "mlx.core.fast.scaled_dot_product_attention"]], "fft() (in module mlx.core.fft)": [[131, "mlx.core.fft.fft"]], "fft2() (in module mlx.core.fft)": [[132, "mlx.core.fft.fft2"]], "fftn() (in module mlx.core.fft)": [[133, "mlx.core.fft.fftn"]], "ifft() (in module mlx.core.fft)": [[134, "mlx.core.fft.ifft"]], "ifft2() (in module mlx.core.fft)": [[135, "mlx.core.fft.ifft2"]], "ifftn() (in module mlx.core.fft)": [[136, "mlx.core.fft.ifftn"]], "irfft() (in module mlx.core.fft)": [[137, "mlx.core.fft.irfft"]], "irfft2() (in module mlx.core.fft)": [[138, "mlx.core.fft.irfft2"]], "irfftn() (in module mlx.core.fft)": [[139, "mlx.core.fft.irfftn"]], "rfft() (in module mlx.core.fft)": [[140, "mlx.core.fft.rfft"]], "rfft2() (in module mlx.core.fft)": [[141, "mlx.core.fft.rfft2"]], "rfftn() (in module mlx.core.fft)": [[142, "mlx.core.fft.rfftn"]], "flatten() (in module mlx.core)": [[143, "mlx.core.flatten"]], "floor() (in module mlx.core)": [[144, "mlx.core.floor"]], "floor_divide() (in module mlx.core)": [[145, "mlx.core.floor_divide"]], "full() (in module mlx.core)": [[146, "mlx.core.full"]], "gather_mm() (in module mlx.core)": [[147, "mlx.core.gather_mm"]], "gather_qmm() (in module mlx.core)": [[148, "mlx.core.gather_qmm"]], "grad() (in module mlx.core)": [[149, "mlx.core.grad"]], "greater() (in module mlx.core)": [[150, "mlx.core.greater"]], "greater_equal() (in module mlx.core)": [[151, "mlx.core.greater_equal"]], "identity() (in module mlx.core)": [[152, "mlx.core.identity"]], "inner() (in module mlx.core)": [[153, "mlx.core.inner"]], "isclose() (in module mlx.core)": [[154, "mlx.core.isclose"]], "isinf() (in module mlx.core)": [[155, "mlx.core.isinf"]], "isnan() (in module mlx.core)": [[156, "mlx.core.isnan"]], "isneginf() (in module mlx.core)": [[157, "mlx.core.isneginf"]], "isposinf() (in module mlx.core)": [[158, "mlx.core.isposinf"]], "issubdtype() (in module mlx.core)": [[159, "mlx.core.issubdtype"]], "jvp() (in module mlx.core)": [[160, "mlx.core.jvp"]], "left_shift() (in module mlx.core)": [[161, "mlx.core.left_shift"]], "less() (in module mlx.core)": [[162, "mlx.core.less"]], "less_equal() (in module mlx.core)": [[163, "mlx.core.less_equal"]], "cholesky() (in module mlx.core.linalg)": [[164, "mlx.core.linalg.cholesky"]], "inv() (in module mlx.core.linalg)": [[165, "mlx.core.linalg.inv"]], "norm() (in module mlx.core.linalg)": [[166, "mlx.core.linalg.norm"]], "qr() (in module mlx.core.linalg)": [[167, "mlx.core.linalg.qr"]], "svd() (in module mlx.core.linalg)": [[168, "mlx.core.linalg.svd"]], "linspace() (in module mlx.core)": [[169, "mlx.core.linspace"]], "load() (in module mlx.core)": [[170, "mlx.core.load"]], "log() (in module mlx.core)": [[171, "mlx.core.log"]], "log10() (in module mlx.core)": [[172, "mlx.core.log10"]], "log1p() (in module mlx.core)": [[173, "mlx.core.log1p"]], "log2() (in module mlx.core)": [[174, "mlx.core.log2"]], "logaddexp() (in module mlx.core)": [[175, "mlx.core.logaddexp"]], "logical_and() (in module mlx.core)": [[176, "mlx.core.logical_and"]], "logical_not() (in module mlx.core)": [[177, "mlx.core.logical_not"]], "logical_or() (in module mlx.core)": [[178, "mlx.core.logical_or"]], "logsumexp() (in module mlx.core)": [[179, "mlx.core.logsumexp"]], "matmul() (in module mlx.core)": [[180, "mlx.core.matmul"]], "max() (in module mlx.core)": [[181, "mlx.core.max"]], "maximum() (in module mlx.core)": [[182, "mlx.core.maximum"]], "mean() (in module mlx.core)": [[183, "mlx.core.mean"]], "meshgrid() (in module mlx.core)": [[184, "mlx.core.meshgrid"]], "clear_cache() (in module mlx.core.metal)": [[185, "mlx.core.metal.clear_cache"]], "device_info() (in module mlx.core.metal)": [[186, "mlx.core.metal.device_info"]], "get_active_memory() (in module mlx.core.metal)": [[187, "mlx.core.metal.get_active_memory"]], "get_cache_memory() (in module mlx.core.metal)": [[188, "mlx.core.metal.get_cache_memory"]], "get_peak_memory() (in module mlx.core.metal)": [[189, "mlx.core.metal.get_peak_memory"]], "is_available() (in module mlx.core.metal)": [[190, "mlx.core.metal.is_available"]], "reset_peak_memory() (in module mlx.core.metal)": [[191, "mlx.core.metal.reset_peak_memory"]], "set_cache_limit() (in module mlx.core.metal)": [[192, "mlx.core.metal.set_cache_limit"]], "set_memory_limit() (in module mlx.core.metal)": [[193, "mlx.core.metal.set_memory_limit"]], "start_capture() (in module mlx.core.metal)": [[194, "mlx.core.metal.start_capture"]], "stop_capture() (in module mlx.core.metal)": [[195, "mlx.core.metal.stop_capture"]], "min() (in module mlx.core)": [[196, "mlx.core.min"]], "minimum() (in module mlx.core)": [[197, "mlx.core.minimum"]], "moveaxis() (in module mlx.core)": [[198, "mlx.core.moveaxis"]], "multiply() (in module mlx.core)": [[199, "mlx.core.multiply"]], "negative() (in module mlx.core)": [[200, "mlx.core.negative"]], "new_stream() (in module mlx.core)": [[201, "mlx.core.new_stream"]], "not_equal() (in module mlx.core)": [[202, "mlx.core.not_equal"]], "ones() (in module mlx.core)": [[203, "mlx.core.ones"]], "ones_like() (in module mlx.core)": [[204, "mlx.core.ones_like"]], "outer() (in module mlx.core)": [[205, "mlx.core.outer"]], "pad() (in module mlx.core)": [[206, "mlx.core.pad"]], "partition() (in module mlx.core)": [[207, "mlx.core.partition"]], "power() (in module mlx.core)": [[208, "mlx.core.power"]], "prod() (in module mlx.core)": [[209, "mlx.core.prod"]], "quantize() (in module mlx.core)": [[210, "mlx.core.quantize"]], "quantized_matmul() (in module mlx.core)": [[211, "mlx.core.quantized_matmul"]], "radians() (in module mlx.core)": [[212, "mlx.core.radians"]], "bernoulli() (in module mlx.core.random)": [[213, "mlx.core.random.bernoulli"]], "categorical() (in module mlx.core.random)": [[214, "mlx.core.random.categorical"]], "gumbel() (in module mlx.core.random)": [[215, "mlx.core.random.gumbel"]], "key() (in module mlx.core.random)": [[216, "mlx.core.random.key"]], "multivariate_normal() (in module mlx.core.random)": [[217, "mlx.core.random.multivariate_normal"]], "normal() (in module mlx.core.random)": [[218, "mlx.core.random.normal"]], "randint() (in module mlx.core.random)": [[219, "mlx.core.random.randint"]], "seed() (in module mlx.core.random)": [[220, "mlx.core.random.seed"]], "split() (in module mlx.core.random)": [[221, "mlx.core.random.split"]], "truncated_normal() (in module mlx.core.random)": [[222, "mlx.core.random.truncated_normal"]], "uniform() (in module mlx.core.random)": [[223, "mlx.core.random.uniform"]], "reciprocal() (in module mlx.core)": [[224, "mlx.core.reciprocal"]], "remainder() (in module mlx.core)": [[225, "mlx.core.remainder"]], "repeat() (in module mlx.core)": [[226, "mlx.core.repeat"]], "reshape() (in module mlx.core)": [[227, "mlx.core.reshape"]], "right_shift() (in module mlx.core)": [[228, "mlx.core.right_shift"]], "round() (in module mlx.core)": [[229, "mlx.core.round"]], "rsqrt() (in module mlx.core)": [[230, "mlx.core.rsqrt"]], "save() (in module mlx.core)": [[231, "mlx.core.save"]], "save_gguf() (in module mlx.core)": [[232, "mlx.core.save_gguf"]], "save_safetensors() (in module mlx.core)": [[233, "mlx.core.save_safetensors"]], "savez() (in module mlx.core)": [[234, "mlx.core.savez"]], "savez_compressed() (in module mlx.core)": [[235, "mlx.core.savez_compressed"]], "set_default_device() (in module mlx.core)": [[236, "mlx.core.set_default_device"]], "set_default_stream() (in module mlx.core)": [[237, "mlx.core.set_default_stream"]], "sigmoid() (in module mlx.core)": [[238, "mlx.core.sigmoid"]], "sign() (in module mlx.core)": [[239, "mlx.core.sign"]], "sin() (in module mlx.core)": [[240, "mlx.core.sin"]], "sinh() (in module mlx.core)": [[241, "mlx.core.sinh"]], "softmax() (in module mlx.core)": [[242, "mlx.core.softmax"]], "sort() (in module mlx.core)": [[243, "mlx.core.sort"]], "split() (in module mlx.core)": [[244, "mlx.core.split"]], "sqrt() (in module mlx.core)": [[245, "mlx.core.sqrt"]], "square() (in module mlx.core)": [[246, "mlx.core.square"]], "squeeze() (in module mlx.core)": [[247, "mlx.core.squeeze"]], "stack() (in module mlx.core)": [[248, "mlx.core.stack"]], "std() (in module mlx.core)": [[249, "mlx.core.std"]], "stop_gradient() (in module mlx.core)": [[250, "mlx.core.stop_gradient"]], "stream() (in module mlx.core)": [[251, "mlx.core.stream"]], "subtract() (in module mlx.core)": [[252, "mlx.core.subtract"]], "sum() (in module mlx.core)": [[253, "mlx.core.sum"]], "swapaxes() (in module mlx.core)": [[254, "mlx.core.swapaxes"]], "synchronize() (in module mlx.core)": [[255, "mlx.core.synchronize"]], "take() (in module mlx.core)": [[256, "mlx.core.take"]], "take_along_axis() (in module mlx.core)": [[257, "mlx.core.take_along_axis"]], "tan() (in module mlx.core)": [[258, "mlx.core.tan"]], "tanh() (in module mlx.core)": [[259, "mlx.core.tanh"]], "tensordot() (in module mlx.core)": [[260, "mlx.core.tensordot"]], "tile() (in module mlx.core)": [[261, "mlx.core.tile"]], "topk() (in module mlx.core)": [[262, "mlx.core.topk"]], "trace() (in module mlx.core)": [[263, "mlx.core.trace"]], "transpose() (in module mlx.core)": [[264, "mlx.core.transpose"]], "tri() (in module mlx.core)": [[265, "mlx.core.tri"]], "tril() (in module mlx.core)": [[266, "mlx.core.tril"]], "triu() (in module mlx.core)": [[267, "mlx.core.triu"]], "value_and_grad() (in module mlx.core)": [[268, "mlx.core.value_and_grad"]], "var() (in module mlx.core)": [[269, "mlx.core.var"]], "view() (in module mlx.core)": [[270, "mlx.core.view"]], "vjp() (in module mlx.core)": [[271, "mlx.core.vjp"]], "vmap() (in module mlx.core)": [[272, "mlx.core.vmap"]], "where() (in module mlx.core)": [[273, "mlx.core.where"]], "zeros() (in module mlx.core)": [[274, "mlx.core.zeros"]], "zeros_like() (in module mlx.core)": [[275, "mlx.core.zeros_like"]], "quantize() (in module mlx.nn)": [[276, "mlx.nn.quantize"]], "value_and_grad() (in module mlx.nn)": [[277, "mlx.nn.value_and_grad"]], "clip_grad_norm() (in module mlx.optimizers)": [[278, "mlx.optimizers.clip_grad_norm"]], "tree_flatten() (in module mlx.utils)": [[279, "mlx.utils.tree_flatten"]], "tree_map() (in module mlx.utils)": [[280, "mlx.utils.tree_map"]], "tree_map_with_path() (in module mlx.utils)": [[281, "mlx.utils.tree_map_with_path"]], "tree_reduce() (in module mlx.utils)": [[282, "mlx.utils.tree_reduce"]], "tree_unflatten() (in module mlx.utils)": [[283, "mlx.utils.tree_unflatten"]], "stream (class in mlx.core)": [[284, "mlx.core.Stream"]], "__init__() (stream method)": [[284, "mlx.core.Stream.__init__"]], "alibi (class in mlx.nn)": [[294, "mlx.nn.ALiBi"]], "avgpool1d (class in mlx.nn)": [[295, "mlx.nn.AvgPool1d"]], "avgpool2d (class in mlx.nn)": [[296, "mlx.nn.AvgPool2d"]], "batchnorm (class in mlx.nn)": [[297, "mlx.nn.BatchNorm"]], "conv1d (class in mlx.nn)": [[298, "mlx.nn.Conv1d"]], "conv2d (class in mlx.nn)": [[299, "mlx.nn.Conv2d"]], "conv3d (class in mlx.nn)": [[300, "mlx.nn.Conv3d"]], "dropout (class in mlx.nn)": [[301, "mlx.nn.Dropout"]], "dropout2d (class in mlx.nn)": [[302, "mlx.nn.Dropout2d"]], "dropout3d (class in mlx.nn)": [[303, "mlx.nn.Dropout3d"]], "embedding (class in mlx.nn)": [[304, "mlx.nn.Embedding"]], "gelu (class in mlx.nn)": [[305, "mlx.nn.GELU"], [371, "mlx.nn.gelu"]], "glu (class in mlx.nn)": [[306, "mlx.nn.GLU"], [374, "mlx.nn.glu"]], "gru (class in mlx.nn)": [[307, "mlx.nn.GRU"]], "groupnorm (class in mlx.nn)": [[308, "mlx.nn.GroupNorm"]], "hardshrink (class in mlx.nn)": [[309, "mlx.nn.HardShrink"]], "hardtanh (class in mlx.nn)": [[310, "mlx.nn.HardTanh"]], "hardswish (class in mlx.nn)": [[311, "mlx.nn.Hardswish"], [377, "mlx.nn.hardswish"]], "instancenorm (class in mlx.nn)": [[312, "mlx.nn.InstanceNorm"]], "lstm (class in mlx.nn)": [[313, "mlx.nn.LSTM"]], "layernorm (class in mlx.nn)": [[314, "mlx.nn.LayerNorm"]], "leakyrelu (class in mlx.nn)": [[315, "mlx.nn.LeakyReLU"]], "linear (class in mlx.nn)": [[316, "mlx.nn.Linear"]], "maxpool1d (class in mlx.nn)": [[317, "mlx.nn.MaxPool1d"]], "maxpool2d (class in mlx.nn)": [[318, "mlx.nn.MaxPool2d"]], "mish (class in mlx.nn)": [[319, "mlx.nn.Mish"], [395, "mlx.nn.mish"]], "apply() (module method)": [[320, "mlx.nn.Module.apply"]], "apply_to_modules() (module method)": [[321, "mlx.nn.Module.apply_to_modules"]], "children() (module method)": [[322, "mlx.nn.Module.children"]], "eval() (module method)": [[323, "mlx.nn.Module.eval"]], "filter_and_map() (module method)": [[324, "mlx.nn.Module.filter_and_map"]], "freeze() (module method)": [[325, "mlx.nn.Module.freeze"]], "leaf_modules() (module method)": [[326, "mlx.nn.Module.leaf_modules"]], "load_weights() (module method)": [[327, "mlx.nn.Module.load_weights"]], "modules() (module method)": [[328, "mlx.nn.Module.modules"]], "named_modules() (module method)": [[329, "mlx.nn.Module.named_modules"]], "parameters() (module method)": [[330, "mlx.nn.Module.parameters"]], "save_weights() (module method)": [[331, "mlx.nn.Module.save_weights"]], "set_dtype() (module method)": [[332, "mlx.nn.Module.set_dtype"]], "state (module property)": [[333, "mlx.nn.Module.state"]], "train() (module method)": [[334, "mlx.nn.Module.train"]], "trainable_parameters() (module method)": [[335, "mlx.nn.Module.trainable_parameters"]], "training (module property)": [[336, "mlx.nn.Module.training"]], "unfreeze() (module method)": [[337, "mlx.nn.Module.unfreeze"]], "update() (module method)": [[338, "mlx.nn.Module.update"]], "update_modules() (module method)": [[339, "mlx.nn.Module.update_modules"]], "multiheadattention (class in mlx.nn)": [[340, "mlx.nn.MultiHeadAttention"]], "prelu (class in mlx.nn)": [[341, "mlx.nn.PReLU"], [396, "mlx.nn.prelu"]], "quantizedembedding (class in mlx.nn)": [[342, "mlx.nn.QuantizedEmbedding"]], "quantizedlinear (class in mlx.nn)": [[343, "mlx.nn.QuantizedLinear"]], "rmsnorm (class in mlx.nn)": [[344, "mlx.nn.RMSNorm"]], "rnn (class in mlx.nn)": [[345, "mlx.nn.RNN"]], "relu (class in mlx.nn)": [[346, "mlx.nn.ReLU"], [397, "mlx.nn.relu"]], "relu6 (class in mlx.nn)": [[347, "mlx.nn.ReLU6"], [398, "mlx.nn.relu6"]], "rope (class in mlx.nn)": [[348, "mlx.nn.RoPE"]], "selu (class in mlx.nn)": [[349, "mlx.nn.SELU"], [399, "mlx.nn.selu"]], "sequential (class in mlx.nn)": [[350, "mlx.nn.Sequential"]], "silu (class in mlx.nn)": [[351, "mlx.nn.SiLU"], [401, "mlx.nn.silu"]], "sinusoidalpositionalencoding (class in mlx.nn)": [[352, "mlx.nn.SinusoidalPositionalEncoding"]], "softmax (class in mlx.nn)": [[353, "mlx.nn.Softmax"], [402, "mlx.nn.softmax"]], "softmin (class in mlx.nn)": [[354, "mlx.nn.Softmin"], [403, "mlx.nn.softmin"]], "softplus (class in mlx.nn)": [[355, "mlx.nn.Softplus"], [404, "mlx.nn.softplus"]], "softshrink (class in mlx.nn)": [[356, "mlx.nn.Softshrink"], [405, "mlx.nn.softshrink"]], "softsign (class in mlx.nn)": [[357, "mlx.nn.Softsign"]], "step (class in mlx.nn)": [[358, "mlx.nn.Step"], [406, "mlx.nn.step"]], "tanh (class in mlx.nn)": [[359, "mlx.nn.Tanh"], [407, "mlx.nn.tanh"]], "transformer (class in mlx.nn)": [[360, "mlx.nn.Transformer"]], "upsample (class in mlx.nn)": [[361, "mlx.nn.Upsample"]], "constant() (in module mlx.nn.init)": [[362, "mlx.nn.init.constant"]], "glorot_normal() (in module mlx.nn.init)": [[363, "mlx.nn.init.glorot_normal"]], "glorot_uniform() (in module mlx.nn.init)": [[364, "mlx.nn.init.glorot_uniform"]], "he_normal() (in module mlx.nn.init)": [[365, "mlx.nn.init.he_normal"]], "he_uniform() (in module mlx.nn.init)": [[366, "mlx.nn.init.he_uniform"]], "identity() (in module mlx.nn.init)": [[367, "mlx.nn.init.identity"]], "normal() (in module mlx.nn.init)": [[368, "mlx.nn.init.normal"]], "uniform() (in module mlx.nn.init)": [[369, "mlx.nn.init.uniform"]], "elu (class in mlx.nn)": [[370, "mlx.nn.elu"]], "gelu_approx (class in mlx.nn)": [[372, "mlx.nn.gelu_approx"]], "gelu_fast_approx (class in mlx.nn)": [[373, "mlx.nn.gelu_fast_approx"]], "hard_shrink (class in mlx.nn)": [[375, "mlx.nn.hard_shrink"]], "hard_tanh (class in mlx.nn)": [[376, "mlx.nn.hard_tanh"]], "leaky_relu (class in mlx.nn)": [[378, "mlx.nn.leaky_relu"]], "log_sigmoid (class in mlx.nn)": [[379, "mlx.nn.log_sigmoid"]], "log_softmax (class in mlx.nn)": [[380, "mlx.nn.log_softmax"]], "binary_cross_entropy (class in mlx.nn.losses)": [[381, "mlx.nn.losses.binary_cross_entropy"]], "cosine_similarity_loss (class in mlx.nn.losses)": [[382, "mlx.nn.losses.cosine_similarity_loss"]], "cross_entropy (class in mlx.nn.losses)": [[383, "mlx.nn.losses.cross_entropy"]], "gaussian_nll_loss (class in mlx.nn.losses)": [[384, "mlx.nn.losses.gaussian_nll_loss"]], "hinge_loss (class in mlx.nn.losses)": [[385, "mlx.nn.losses.hinge_loss"]], "huber_loss (class in mlx.nn.losses)": [[386, "mlx.nn.losses.huber_loss"]], "kl_div_loss (class in mlx.nn.losses)": [[387, "mlx.nn.losses.kl_div_loss"]], "l1_loss (class in mlx.nn.losses)": [[388, "mlx.nn.losses.l1_loss"]], "log_cosh_loss (class in mlx.nn.losses)": [[389, "mlx.nn.losses.log_cosh_loss"]], "margin_ranking_loss (class in mlx.nn.losses)": [[390, "mlx.nn.losses.margin_ranking_loss"]], "mse_loss (class in mlx.nn.losses)": [[391, "mlx.nn.losses.mse_loss"]], "nll_loss (class in mlx.nn.losses)": [[392, "mlx.nn.losses.nll_loss"]], "smooth_l1_loss (class in mlx.nn.losses)": [[393, "mlx.nn.losses.smooth_l1_loss"]], "triplet_loss (class in mlx.nn.losses)": [[394, "mlx.nn.losses.triplet_loss"]], "sigmoid (class in mlx.nn)": [[400, "mlx.nn.sigmoid"]], "module (class in mlx.nn)": [[412, "mlx.nn.Module"]], "adadelta (class in mlx.optimizers)": [[415, "mlx.optimizers.AdaDelta"]], "adafactor (class in mlx.optimizers)": [[416, "mlx.optimizers.Adafactor"]], "adagrad (class in mlx.optimizers)": [[417, "mlx.optimizers.Adagrad"]], "adam (class in mlx.optimizers)": [[418, "mlx.optimizers.Adam"]], "adamw (class in mlx.optimizers)": [[419, "mlx.optimizers.AdamW"]], "adamax (class in mlx.optimizers)": [[420, "mlx.optimizers.Adamax"]], "lion (class in mlx.optimizers)": [[421, "mlx.optimizers.Lion"]], "apply_gradients() (optimizer method)": [[422, "mlx.optimizers.Optimizer.apply_gradients"]], "init() (optimizer method)": [[423, "mlx.optimizers.Optimizer.init"]], "state (optimizer property)": [[424, "mlx.optimizers.Optimizer.state"]], "update() (optimizer method)": [[425, "mlx.optimizers.Optimizer.update"]], "rmsprop (class in mlx.optimizers)": [[426, "mlx.optimizers.RMSprop"]], "sgd (class in mlx.optimizers)": [[427, "mlx.optimizers.SGD"]], "cosine_decay() (in module mlx.optimizers)": [[428, "mlx.optimizers.cosine_decay"]], "exponential_decay() (in module mlx.optimizers)": [[429, "mlx.optimizers.exponential_decay"]], "join_schedules() (in module mlx.optimizers)": [[430, "mlx.optimizers.join_schedules"]], "linear_schedule() (in module mlx.optimizers)": [[431, "mlx.optimizers.linear_schedule"]], "step_decay() (in module mlx.optimizers)": [[432, "mlx.optimizers.step_decay"]], "optimizer (class in mlx.optimizers)": [[434, "mlx.optimizers.Optimizer"]]}}) \ No newline at end of file diff --git a/docs/build/html/splitbar.png b/docs/build/html/splitbar.png new file mode 100644 index 0000000000000000000000000000000000000000..fe895f2c58179b471a22d8320b39a4bd7312ec8e GIT binary patch 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 literal 0 HcmV?d00001 diff --git a/docs/build/html/splitbard.png b/docs/build/html/splitbard.png new file mode 100644 index 0000000000000000000000000000000000000000..8367416d757fd7b6dc4272b6432dc75a75abd068 GIT binary patch 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? literal 0 HcmV?d00001 diff --git a/docs/build/html/steel_2defines_8h.html b/docs/build/html/steel_2defines_8h.html new file mode 100644 index 000000000..99cbcfad5 --- /dev/null +++ b/docs/build/html/steel_2defines_8h.html @@ -0,0 +1,128 @@ + + + + + + + +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 new file mode 100644 index 000000000..0afe753c5 --- /dev/null +++ b/docs/build/html/steel_2defines_8h_source.html @@ -0,0 +1,96 @@ + + + + + + + +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 new file mode 100644 index 000000000..db213f6ca --- /dev/null +++ b/docs/build/html/steel__conv__general_8h.html @@ -0,0 +1,173 @@ + + + + + + + +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 new file mode 100644 index 000000000..fcf09a41d --- /dev/null +++ b/docs/build/html/steel__conv__general_8h_source.html @@ -0,0 +1,286 @@ + + + + + + + +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 new file mode 100644 index 000000000..9e9821701 --- /dev/null +++ b/docs/build/html/steel__gemm_8h.html @@ -0,0 +1,316 @@ + + + + + + + +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 new file mode 100644 index 000000000..5252b0e1c --- /dev/null +++ b/docs/build/html/steel__gemm_8h_source.html @@ -0,0 +1,203 @@ + + + + + + + +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 new file mode 100644 index 000000000..6a7fbe89a --- /dev/null +++ b/docs/build/html/steel__gemm__fused_8h.html @@ -0,0 +1,335 @@ + + + + + + + +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 new file mode 100644 index 000000000..0be776eed --- /dev/null +++ b/docs/build/html/steel__gemm__fused_8h_source.html @@ -0,0 +1,523 @@ + + + + + + + +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:77
        +
        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 new file mode 100644 index 000000000..3d6499567 --- /dev/null +++ b/docs/build/html/steel__gemm__masked_8h.html @@ -0,0 +1,298 @@ + + + + + + + +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 new file mode 100644 index 000000000..340810d5a --- /dev/null +++ b/docs/build/html/steel__gemm__masked_8h_source.html @@ -0,0 +1,837 @@ + + + + + + + +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:77
        +
        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 steel_gemm_masked.h:11
        +
        char x
        Definition steel_gemm_masked.h:12
        +
        Definition steel_gemm_masked.h:29
        +
        OutT scale
        Definition steel_gemm_masked.h:30
        +
        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 new file mode 100644 index 000000000..00d82ec60 --- /dev/null +++ b/docs/build/html/steel__gemm__splitk_8h.html @@ -0,0 +1,269 @@ + + + + + + + +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 new file mode 100644 index 000000000..138cd8b00 --- /dev/null +++ b/docs/build/html/steel__gemm__splitk_8h_source.html @@ -0,0 +1,331 @@ + + + + + + + +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 new file mode 100644 index 000000000..edda78833 --- /dev/null +++ b/docs/build/html/stream_8h.html @@ -0,0 +1,127 @@ + + + + + + + +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 new file mode 100644 index 000000000..1e296032b --- /dev/null +++ b/docs/build/html/stream_8h_source.html @@ -0,0 +1,146 @@ + + + + + + + +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 new file mode 100644 index 000000000..6c43afe92 --- /dev/null +++ b/docs/build/html/struct___m_l_x___b_float16-members.html @@ -0,0 +1,101 @@ + + + + + + + +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 new file mode 100644 index 000000000..9fecd978f --- /dev/null +++ b/docs/build/html/struct___m_l_x___b_float16.html @@ -0,0 +1,534 @@ + + + + + + + +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 new file mode 100644 index 000000000..910c39466 --- /dev/null +++ b/docs/build/html/struct___m_l_x___b_float16_1_1bits__to__bfloat__struct.html @@ -0,0 +1,92 @@ + + + + + + + +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 new file mode 100644 index 000000000..38748eac7 --- /dev/null +++ b/docs/build/html/struct___no_mask-members.html @@ -0,0 +1,91 @@ + + + + + + + +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
        x_NoMask
        + + + + diff --git a/docs/build/html/struct___no_mask.html b/docs/build/html/struct___no_mask.html new file mode 100644 index 000000000..a77310a38 --- /dev/null +++ b/docs/build/html/struct___no_mask.html @@ -0,0 +1,225 @@ + + + + + + + +MLX: _NoMask Struct Reference + + + + + + + + + + + +
        +
        + + + + + + +
        +
        MLX +
        +
        +
        + + + + + + + + +
        +
        + + +
        +
        +
        +
        +
        +
        Loading...
        +
        Searching...
        +
        No Matches
        +
        +
        +
        +
        + +
        +
        + +
        _NoMask Struct Reference
        +
        +
        + +

        #include <steel_gemm_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
         
        + + + +

        +Public Attributes

        char x
         
        +

        Member Function Documentation

        + +

        ◆ operator bool() [1/4]

        + +
        +
        + + + + + +
        + + + + + + + +
        constexpr METAL_FUNC _NoMask::operator bool ()
        +
        +inlineconstexpr
        +
        + +
        +
        + +

        ◆ operator bool() [2/4]

        + +
        +
        + + + + + +
        + + + + + + + +
        constexpr METAL_FUNC _NoMask::operator bool () const
        +
        +inlineconstexpr
        +
        + +
        +
        + +

        ◆ operator bool() [3/4]

        + +
        +
        + + + + + +
        + + + + + + + +
        constexpr METAL_FUNC _NoMask::operator bool () const
        +
        +inlineconstexpr
        +
        + +
        +
        + +

        ◆ operator bool() [4/4]

        + +
        +
        + + + + + +
        + + + + + + + +
        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 file: +
        + + + + diff --git a/docs/build/html/struct_abs-members.html b/docs/build/html/struct_abs-members.html new file mode 100644 index 000000000..5f98f24c0 --- /dev/null +++ b/docs/build/html/struct_abs-members.html @@ -0,0 +1,93 @@ + + + + + + + +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 new file mode 100644 index 000000000..4bf68a714 --- /dev/null +++ b/docs/build/html/struct_abs.html @@ -0,0 +1,306 @@ + + + + + + + +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 new file mode 100644 index 000000000..030c5be6f --- /dev/null +++ b/docs/build/html/struct_add-members.html @@ -0,0 +1,87 @@ + + + + + + + +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 new file mode 100644 index 000000000..37367c17c --- /dev/null +++ b/docs/build/html/struct_add.html @@ -0,0 +1,130 @@ + + + + + + + +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-members.html b/docs/build/html/struct_and-members.html new file mode 100644 index 000000000..1bf7683f7 --- /dev/null +++ b/docs/build/html/struct_and-members.html @@ -0,0 +1,92 @@ + + + + + + + +MLX: Member List + + + + + + + + + + + +
        +
        + + + + + + +
        +
        MLX +
        +
        +
        + + + + + + + + +
        +
        + + +
        +
        +
        +
        +
        +
        Loading...
        +
        Searching...
        +
        No Matches
        +
        +
        +
        +
        + +
        +
        +
        And< U > Member List
        +
        +
        + +

        This is the complete list of members for And< U >, including all inherited members.

        + + + + + + + +
        atomic_update(device mlx_atomic< unsigned int > *out, bool val, int elem_idx, int offset=0)And< U >inline
        atomic_update(device mlx_atomic< bool > *out, bool val, uint offset=0)And< U >inline
        initAnd< U >static
        operator()(bool a, bool b)And< U >inline
        simd_reduce(bool val)And< U >inline
        update(device bool *out, bool val)And< U >inline
        + + + + diff --git a/docs/build/html/struct_and.html b/docs/build/html/struct_and.html new file mode 100644 index 000000000..896a5e627 --- /dev/null +++ b/docs/build/html/struct_and.html @@ -0,0 +1,303 @@ + + + + + + + +MLX: And< U > Struct Template Reference + + + + + + + + + + + +
        +
        + + + + + + +
        +
        MLX +
        +
        +
        + + + + + + + + +
        +
        + + +
        +
        +
        +
        +
        +
        Loading...
        +
        Searching...
        +
        No Matches
        +
        +
        +
        +
        + +
        +
        + +
        And< U > Struct Template Reference
        +
        +
        + +

        #include <ops.h>

        + + + + + + + + + + + + +

        +Public Member Functions

        bool simd_reduce (bool val)
         
        void atomic_update (device mlx_atomic< unsigned int > *out, bool val, int elem_idx, int offset=0)
         
        void atomic_update (device mlx_atomic< bool > *out, bool val, uint offset=0)
         
        void update (device bool *out, bool val)
         
        bool operator() (bool a, bool b)
         
        + + + +

        +Static Public Attributes

        static constexpr constant bool init = true
         
        +

        Member Function Documentation

        + +

        ◆ atomic_update() [1/2]

        + +
        +
        +
        +template<typename U = bool>
        + + + + + +
        + + + + + + + + + + + + + + + + +
        void And< U >::atomic_update (device mlx_atomic< bool > * out,
        bool val,
        uint offset = 0 )
        +
        +inline
        +
        + +
        +
        + +

        ◆ atomic_update() [2/2]

        + +
        +
        +
        +template<typename U = bool>
        + + + + + +
        + + + + + + + + + + + + + + + + + + + + + +
        void And< U >::atomic_update (device mlx_atomic< unsigned int > * out,
        bool val,
        int elem_idx,
        int offset = 0 )
        +
        +inline
        +
        + +
        +
        + +

        ◆ operator()()

        + +
        +
        +
        +template<typename U = bool>
        + + + + + +
        + + + + + + + + + + + +
        bool And< U >::operator() (bool a,
        bool b )
        +
        +inline
        +
        + +
        +
        + +

        ◆ simd_reduce()

        + +
        +
        +
        +template<typename U = bool>
        + + + + + +
        + + + + + + + +
        bool And< U >::simd_reduce (bool val)
        +
        +inline
        +
        + +
        +
        + +

        ◆ update()

        + +
        +
        +
        +template<typename U = bool>
        + + + + + +
        + + + + + + + + + + + +
        void And< U >::update (device bool * out,
        bool val )
        +
        +inline
        +
        + +
        +
        +

        Member Data Documentation

        + +

        ◆ init

        + +
        +
        +
        +template<typename U = bool>
        + + + + + +
        + + + + +
        constexpr constant bool And< U >::init = true
        +
        +staticconstexpr
        +
        + +
        +
        +
        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 new file mode 100644 index 000000000..87c2a0683 --- /dev/null +++ b/docs/build/html/struct_arc_cos-members.html @@ -0,0 +1,87 @@ + + + + + + + +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 new file mode 100644 index 000000000..7e4fbb9b6 --- /dev/null +++ b/docs/build/html/struct_arc_cos.html @@ -0,0 +1,126 @@ + + + + + + + +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 new file mode 100644 index 000000000..add1b07de --- /dev/null +++ b/docs/build/html/struct_arc_cosh-members.html @@ -0,0 +1,87 @@ + + + + + + + +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 new file mode 100644 index 000000000..4ef975c24 --- /dev/null +++ b/docs/build/html/struct_arc_cosh.html @@ -0,0 +1,126 @@ + + + + + + + +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 new file mode 100644 index 000000000..e642e48f8 --- /dev/null +++ b/docs/build/html/struct_arc_sin-members.html @@ -0,0 +1,87 @@ + + + + + + + +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 new file mode 100644 index 000000000..cb1261dad --- /dev/null +++ b/docs/build/html/struct_arc_sin.html @@ -0,0 +1,126 @@ + + + + + + + +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 new file mode 100644 index 000000000..44ea6f25b --- /dev/null +++ b/docs/build/html/struct_arc_sinh-members.html @@ -0,0 +1,87 @@ + + + + + + + +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 new file mode 100644 index 000000000..cbef2f912 --- /dev/null +++ b/docs/build/html/struct_arc_sinh.html @@ -0,0 +1,126 @@ + + + + + + + +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 new file mode 100644 index 000000000..2064b5aa3 --- /dev/null +++ b/docs/build/html/struct_arc_tan-members.html @@ -0,0 +1,87 @@ + + + + + + + +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 new file mode 100644 index 000000000..73d5aa513 --- /dev/null +++ b/docs/build/html/struct_arc_tan.html @@ -0,0 +1,126 @@ + + + + + + + +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 new file mode 100644 index 000000000..dd320f261 --- /dev/null +++ b/docs/build/html/struct_arc_tan2-members.html @@ -0,0 +1,87 @@ + + + + + + + +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 new file mode 100644 index 000000000..5d66c9d56 --- /dev/null +++ b/docs/build/html/struct_arc_tan2.html @@ -0,0 +1,130 @@ + + + + + + + +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 new file mode 100644 index 000000000..9476519c1 --- /dev/null +++ b/docs/build/html/struct_arc_tanh-members.html @@ -0,0 +1,87 @@ + + + + + + + +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 new file mode 100644 index 000000000..e09a5fab9 --- /dev/null +++ b/docs/build/html/struct_arc_tanh.html @@ -0,0 +1,126 @@ + + + + + + + +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 new file mode 100644 index 000000000..cefb03738 --- /dev/null +++ b/docs/build/html/struct_bitwise_and-members.html @@ -0,0 +1,87 @@ + + + + + + + +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 new file mode 100644 index 000000000..4be0b6d07 --- /dev/null +++ b/docs/build/html/struct_bitwise_and.html @@ -0,0 +1,130 @@ + + + + + + + +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 new file mode 100644 index 000000000..ded8bc9d3 --- /dev/null +++ b/docs/build/html/struct_bitwise_or-members.html @@ -0,0 +1,87 @@ + + + + + + + +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 new file mode 100644 index 000000000..b3baf6d6c --- /dev/null +++ b/docs/build/html/struct_bitwise_or.html @@ -0,0 +1,130 @@ + + + + + + + +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 new file mode 100644 index 000000000..b2c048e12 --- /dev/null +++ b/docs/build/html/struct_bitwise_xor-members.html @@ -0,0 +1,87 @@ + + + + + + + +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 new file mode 100644 index 000000000..2bef9b532 --- /dev/null +++ b/docs/build/html/struct_bitwise_xor.html @@ -0,0 +1,130 @@ + + + + + + + +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 new file mode 100644 index 000000000..c009166b3 --- /dev/null +++ b/docs/build/html/struct_block_merge_sort-members.html @@ -0,0 +1,90 @@ + + + + + + + +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 new file mode 100644 index 000000000..cd759d8a3 --- /dev/null +++ b/docs/build/html/struct_block_merge_sort.html @@ -0,0 +1,276 @@ + + + + + + + +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 new file mode 100644 index 000000000..518c090cc --- /dev/null +++ b/docs/build/html/struct_ceil-members.html @@ -0,0 +1,96 @@ + + + + + + + +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 new file mode 100644 index 000000000..a17763444 --- /dev/null +++ b/docs/build/html/struct_ceil.html @@ -0,0 +1,396 @@ + + + + + + + +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 new file mode 100644 index 000000000..de57c3c0f --- /dev/null +++ b/docs/build/html/struct_conjugate-members.html @@ -0,0 +1,87 @@ + + + + + + + +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 new file mode 100644 index 000000000..2f1f2e5f0 --- /dev/null +++ b/docs/build/html/struct_conjugate.html @@ -0,0 +1,123 @@ + + + + + + + +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 new file mode 100644 index 000000000..9bd3741dd --- /dev/null +++ b/docs/build/html/struct_cos-members.html @@ -0,0 +1,88 @@ + + + + + + + +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 new file mode 100644 index 000000000..0dbdfab37 --- /dev/null +++ b/docs/build/html/struct_cos.html @@ -0,0 +1,156 @@ + + + + + + + +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 new file mode 100644 index 000000000..7390af418 --- /dev/null +++ b/docs/build/html/struct_cosh-members.html @@ -0,0 +1,88 @@ + + + + + + + +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 new file mode 100644 index 000000000..9d5dfc9b6 --- /dev/null +++ b/docs/build/html/struct_cosh.html @@ -0,0 +1,156 @@ + + + + + + + +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 new file mode 100644 index 000000000..bab13230a --- /dev/null +++ b/docs/build/html/struct_cum_max-members.html @@ -0,0 +1,90 @@ + + + + + + + +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 new file mode 100644 index 000000000..ddc6bc066 --- /dev/null +++ b/docs/build/html/struct_cum_max.html @@ -0,0 +1,221 @@ + + + + + + + +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 new file mode 100644 index 000000000..7c22c8bd6 --- /dev/null +++ b/docs/build/html/struct_cum_min-members.html @@ -0,0 +1,90 @@ + + + + + + + +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 new file mode 100644 index 000000000..c5a09f9a2 --- /dev/null +++ b/docs/build/html/struct_cum_min.html @@ -0,0 +1,221 @@ + + + + + + + +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 new file mode 100644 index 000000000..b7dab63e8 --- /dev/null +++ b/docs/build/html/struct_cum_prod-members.html @@ -0,0 +1,90 @@ + + + + + + + +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 new file mode 100644 index 000000000..67c16d441 --- /dev/null +++ b/docs/build/html/struct_cum_prod.html @@ -0,0 +1,221 @@ + + + + + + + +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 new file mode 100644 index 000000000..c2e680d19 --- /dev/null +++ b/docs/build/html/struct_cum_prod_3_01bool_01_4-members.html @@ -0,0 +1,90 @@ + + + + + + + +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 new file mode 100644 index 000000000..42e0fd342 --- /dev/null +++ b/docs/build/html/struct_cum_prod_3_01bool_01_4.html @@ -0,0 +1,213 @@ + + + + + + + +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 new file mode 100644 index 000000000..08707a025 --- /dev/null +++ b/docs/build/html/struct_cum_sum-members.html @@ -0,0 +1,90 @@ + + + + + + + +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 new file mode 100644 index 000000000..54c70c2b6 --- /dev/null +++ b/docs/build/html/struct_cum_sum.html @@ -0,0 +1,221 @@ + + + + + + + +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 new file mode 100644 index 000000000..385f383ee --- /dev/null +++ b/docs/build/html/struct_div_mod-members.html @@ -0,0 +1,87 @@ + + + + + + + +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 new file mode 100644 index 000000000..b34c9a3fc --- /dev/null +++ b/docs/build/html/struct_div_mod.html @@ -0,0 +1,130 @@ + + + + + + + +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 new file mode 100644 index 000000000..dbb769e7d --- /dev/null +++ b/docs/build/html/struct_divide-members.html @@ -0,0 +1,87 @@ + + + + + + + +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 new file mode 100644 index 000000000..97ad18cb5 --- /dev/null +++ b/docs/build/html/struct_divide.html @@ -0,0 +1,130 @@ + + + + + + + +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 new file mode 100644 index 000000000..8385afa6f --- /dev/null +++ b/docs/build/html/struct_equal-members.html @@ -0,0 +1,87 @@ + + + + + + + +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 new file mode 100644 index 000000000..dede2a375 --- /dev/null +++ b/docs/build/html/struct_equal.html @@ -0,0 +1,130 @@ + + + + + + + +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 new file mode 100644 index 000000000..c248af46b --- /dev/null +++ b/docs/build/html/struct_erf-members.html @@ -0,0 +1,87 @@ + + + + + + + +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 new file mode 100644 index 000000000..767df36fc --- /dev/null +++ b/docs/build/html/struct_erf.html @@ -0,0 +1,126 @@ + + + + + + + +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 new file mode 100644 index 000000000..a9521d3bc --- /dev/null +++ b/docs/build/html/struct_erf_inv-members.html @@ -0,0 +1,87 @@ + + + + + + + +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 new file mode 100644 index 000000000..dc680a6c0 --- /dev/null +++ b/docs/build/html/struct_erf_inv.html @@ -0,0 +1,126 @@ + + + + + + + +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 new file mode 100644 index 000000000..2b6b30baf --- /dev/null +++ b/docs/build/html/struct_exp-members.html @@ -0,0 +1,88 @@ + + + + + + + +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 new file mode 100644 index 000000000..9cef11306 --- /dev/null +++ b/docs/build/html/struct_exp.html @@ -0,0 +1,156 @@ + + + + + + + +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 new file mode 100644 index 000000000..3179cc01a --- /dev/null +++ b/docs/build/html/struct_expm1-members.html @@ -0,0 +1,87 @@ + + + + + + + +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 new file mode 100644 index 000000000..47c2d0060 --- /dev/null +++ b/docs/build/html/struct_expm1.html @@ -0,0 +1,126 @@ + + + + + + + +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 new file mode 100644 index 000000000..695aff716 --- /dev/null +++ b/docs/build/html/struct_floor-members.html @@ -0,0 +1,96 @@ + + + + + + + +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 new file mode 100644 index 000000000..af866ec64 --- /dev/null +++ b/docs/build/html/struct_floor.html @@ -0,0 +1,396 @@ + + + + + + + +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 new file mode 100644 index 000000000..14a01010f --- /dev/null +++ b/docs/build/html/struct_floor_divide-members.html @@ -0,0 +1,90 @@ + + + + + + + +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 new file mode 100644 index 000000000..56063d549 --- /dev/null +++ b/docs/build/html/struct_floor_divide.html @@ -0,0 +1,232 @@ + + + + + + + +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_greater-members.html b/docs/build/html/struct_greater-members.html new file mode 100644 index 000000000..b6bb8897c --- /dev/null +++ b/docs/build/html/struct_greater-members.html @@ -0,0 +1,87 @@ + + + + + + + +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 new file mode 100644 index 000000000..1d3547b96 --- /dev/null +++ b/docs/build/html/struct_greater.html @@ -0,0 +1,130 @@ + + + + + + + +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 new file mode 100644 index 000000000..cac73db1d --- /dev/null +++ b/docs/build/html/struct_greater_equal-members.html @@ -0,0 +1,87 @@ + + + + + + + +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 new file mode 100644 index 000000000..031a01485 --- /dev/null +++ b/docs/build/html/struct_greater_equal.html @@ -0,0 +1,130 @@ + + + + + + + +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 new file mode 100644 index 000000000..606c21687 --- /dev/null +++ b/docs/build/html/struct_indices-members.html @@ -0,0 +1,90 @@ + + + + + + + +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 new file mode 100644 index 000000000..939c10a6f --- /dev/null +++ b/docs/build/html/struct_indices.html @@ -0,0 +1,168 @@ + + + + + + + +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 new file mode 100644 index 000000000..dd4863b25 --- /dev/null +++ b/docs/build/html/struct_kernel_merge_sort-members.html @@ -0,0 +1,91 @@ + + + + + + + +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 &stride_sorted_axis, const constant int &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 new file mode 100644 index 000000000..572b3348e --- /dev/null +++ b/docs/build/html/struct_kernel_merge_sort.html @@ -0,0 +1,264 @@ + + + + + + + +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 &stride_sorted_axis, const constant int &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 & stride_sorted_axis,
        const constant int & 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 new file mode 100644 index 000000000..6c6bcb026 --- /dev/null +++ b/docs/build/html/struct_kernel_multi_block_merge_sort-members.html @@ -0,0 +1,90 @@ + + + + + + + +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 new file mode 100644 index 000000000..855211fc9 --- /dev/null +++ b/docs/build/html/struct_kernel_multi_block_merge_sort.html @@ -0,0 +1,274 @@ + + + + + + + +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 new file mode 100644 index 000000000..4273004ef --- /dev/null +++ b/docs/build/html/struct_left_shift-members.html @@ -0,0 +1,87 @@ + + + + + + + +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 new file mode 100644 index 000000000..95f5d2206 --- /dev/null +++ b/docs/build/html/struct_left_shift.html @@ -0,0 +1,130 @@ + + + + + + + +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 new file mode 100644 index 000000000..9b24d8fa6 --- /dev/null +++ b/docs/build/html/struct_less-members.html @@ -0,0 +1,87 @@ + + + + + + + +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 new file mode 100644 index 000000000..18a06a009 --- /dev/null +++ b/docs/build/html/struct_less.html @@ -0,0 +1,130 @@ + + + + + + + +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 new file mode 100644 index 000000000..f55a6f76b --- /dev/null +++ b/docs/build/html/struct_less_equal-members.html @@ -0,0 +1,87 @@ + + + + + + + +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 new file mode 100644 index 000000000..bf17e3fe3 --- /dev/null +++ b/docs/build/html/struct_less_equal.html @@ -0,0 +1,130 @@ + + + + + + + +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 new file mode 100644 index 000000000..075836540 --- /dev/null +++ b/docs/build/html/struct_less_than-members.html @@ -0,0 +1,88 @@ + + + + + + + +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 new file mode 100644 index 000000000..264e4fdf4 --- /dev/null +++ b/docs/build/html/struct_less_than.html @@ -0,0 +1,160 @@ + + + + + + + +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 new file mode 100644 index 000000000..a28547f05 --- /dev/null +++ b/docs/build/html/struct_limits-members.html @@ -0,0 +1,90 @@ + + + + + + + +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 new file mode 100644 index 000000000..6f4964d4f --- /dev/null +++ b/docs/build/html/struct_limits.html @@ -0,0 +1,200 @@ + + + + + + + +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 new file mode 100644 index 000000000..a69ced20c --- /dev/null +++ b/docs/build/html/struct_limits_3_01bfloat16__t_01_4-members.html @@ -0,0 +1,90 @@ + + + + + + + +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 new file mode 100644 index 000000000..a043367a9 --- /dev/null +++ b/docs/build/html/struct_limits_3_01bfloat16__t_01_4.html @@ -0,0 +1,192 @@ + + + + + + + +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 new file mode 100644 index 000000000..8ef0e5524 --- /dev/null +++ b/docs/build/html/struct_limits_3_01bool_01_4-members.html @@ -0,0 +1,88 @@ + + + + + + + +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 new file mode 100644 index 000000000..67522fc0a --- /dev/null +++ b/docs/build/html/struct_limits_3_01bool_01_4.html @@ -0,0 +1,144 @@ + + + + + + + +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_01float_01_4-members.html b/docs/build/html/struct_limits_3_01float_01_4-members.html new file mode 100644 index 000000000..9334f6a07 --- /dev/null +++ b/docs/build/html/struct_limits_3_01float_01_4-members.html @@ -0,0 +1,90 @@ + + + + + + + +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 new file mode 100644 index 000000000..61a12360f --- /dev/null +++ b/docs/build/html/struct_limits_3_01float_01_4.html @@ -0,0 +1,192 @@ + + + + + + + +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 new file mode 100644 index 000000000..8fd0e4a09 --- /dev/null +++ b/docs/build/html/struct_limits_3_01half_01_4-members.html @@ -0,0 +1,90 @@ + + + + + + + +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 new file mode 100644 index 000000000..605cdb9c5 --- /dev/null +++ b/docs/build/html/struct_limits_3_01half_01_4.html @@ -0,0 +1,192 @@ + + + + + + + +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 new file mode 100644 index 000000000..adb5e23bb --- /dev/null +++ b/docs/build/html/struct_limits_3_01int16__t_01_4-members.html @@ -0,0 +1,90 @@ + + + + + + + +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 new file mode 100644 index 000000000..605055f00 --- /dev/null +++ b/docs/build/html/struct_limits_3_01int16__t_01_4.html @@ -0,0 +1,192 @@ + + + + + + + +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 new file mode 100644 index 000000000..2e202cd67 --- /dev/null +++ b/docs/build/html/struct_limits_3_01int32__t_01_4-members.html @@ -0,0 +1,90 @@ + + + + + + + +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 new file mode 100644 index 000000000..91361e226 --- /dev/null +++ b/docs/build/html/struct_limits_3_01int32__t_01_4.html @@ -0,0 +1,192 @@ + + + + + + + +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 new file mode 100644 index 000000000..9540858ce --- /dev/null +++ b/docs/build/html/struct_limits_3_01int64__t_01_4-members.html @@ -0,0 +1,90 @@ + + + + + + + +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 new file mode 100644 index 000000000..025a0a1d3 --- /dev/null +++ b/docs/build/html/struct_limits_3_01int64__t_01_4.html @@ -0,0 +1,192 @@ + + + + + + + +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 new file mode 100644 index 000000000..5f9bfe7fc --- /dev/null +++ b/docs/build/html/struct_limits_3_01int8__t_01_4-members.html @@ -0,0 +1,90 @@ + + + + + + + +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 new file mode 100644 index 000000000..10d9eca29 --- /dev/null +++ b/docs/build/html/struct_limits_3_01int8__t_01_4.html @@ -0,0 +1,192 @@ + + + + + + + +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 new file mode 100644 index 000000000..dedf223ac --- /dev/null +++ b/docs/build/html/struct_limits_3_01uint16__t_01_4-members.html @@ -0,0 +1,90 @@ + + + + + + + +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 new file mode 100644 index 000000000..97fa8ae3f --- /dev/null +++ b/docs/build/html/struct_limits_3_01uint16__t_01_4.html @@ -0,0 +1,192 @@ + + + + + + + +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 new file mode 100644 index 000000000..2a40eb8f8 --- /dev/null +++ b/docs/build/html/struct_limits_3_01uint32__t_01_4-members.html @@ -0,0 +1,90 @@ + + + + + + + +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 new file mode 100644 index 000000000..8215590f9 --- /dev/null +++ b/docs/build/html/struct_limits_3_01uint32__t_01_4.html @@ -0,0 +1,192 @@ + + + + + + + +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 new file mode 100644 index 000000000..ba2629adb --- /dev/null +++ b/docs/build/html/struct_limits_3_01uint64__t_01_4-members.html @@ -0,0 +1,90 @@ + + + + + + + +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 new file mode 100644 index 000000000..c4183bb9a --- /dev/null +++ b/docs/build/html/struct_limits_3_01uint64__t_01_4.html @@ -0,0 +1,192 @@ + + + + + + + +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 new file mode 100644 index 000000000..7f89e16dd --- /dev/null +++ b/docs/build/html/struct_limits_3_01uint8__t_01_4-members.html @@ -0,0 +1,90 @@ + + + + + + + +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 new file mode 100644 index 000000000..377515a91 --- /dev/null +++ b/docs/build/html/struct_limits_3_01uint8__t_01_4.html @@ -0,0 +1,192 @@ + + + + + + + +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 new file mode 100644 index 000000000..2a658e9b5 --- /dev/null +++ b/docs/build/html/struct_log-members.html @@ -0,0 +1,87 @@ + + + + + + + +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 new file mode 100644 index 000000000..ea79e8379 --- /dev/null +++ b/docs/build/html/struct_log.html @@ -0,0 +1,126 @@ + + + + + + + +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 new file mode 100644 index 000000000..5ee4d5121 --- /dev/null +++ b/docs/build/html/struct_log10-members.html @@ -0,0 +1,87 @@ + + + + + + + +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 new file mode 100644 index 000000000..adf5383fc --- /dev/null +++ b/docs/build/html/struct_log10.html @@ -0,0 +1,126 @@ + + + + + + + +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 new file mode 100644 index 000000000..b23db32b5 --- /dev/null +++ b/docs/build/html/struct_log1p-members.html @@ -0,0 +1,87 @@ + + + + + + + +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 new file mode 100644 index 000000000..45ea5612c --- /dev/null +++ b/docs/build/html/struct_log1p.html @@ -0,0 +1,126 @@ + + + + + + + +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 new file mode 100644 index 000000000..fcabc5e53 --- /dev/null +++ b/docs/build/html/struct_log2-members.html @@ -0,0 +1,87 @@ + + + + + + + +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 new file mode 100644 index 000000000..3f03e8251 --- /dev/null +++ b/docs/build/html/struct_log2.html @@ -0,0 +1,126 @@ + + + + + + + +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 new file mode 100644 index 000000000..9832687ce --- /dev/null +++ b/docs/build/html/struct_log_add_exp-members.html @@ -0,0 +1,87 @@ + + + + + + + +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 new file mode 100644 index 000000000..b068b78dd --- /dev/null +++ b/docs/build/html/struct_log_add_exp.html @@ -0,0 +1,130 @@ + + + + + + + +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 new file mode 100644 index 000000000..bf1f9b816 --- /dev/null +++ b/docs/build/html/struct_logical_and-members.html @@ -0,0 +1,87 @@ + + + + + + + +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 new file mode 100644 index 000000000..dc9b38200 --- /dev/null +++ b/docs/build/html/struct_logical_and.html @@ -0,0 +1,130 @@ + + + + + + + +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 new file mode 100644 index 000000000..639881e75 --- /dev/null +++ b/docs/build/html/struct_logical_not-members.html @@ -0,0 +1,87 @@ + + + + + + + +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 new file mode 100644 index 000000000..680e280c1 --- /dev/null +++ b/docs/build/html/struct_logical_not.html @@ -0,0 +1,126 @@ + + + + + + + +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 new file mode 100644 index 000000000..869506b1c --- /dev/null +++ b/docs/build/html/struct_logical_or-members.html @@ -0,0 +1,87 @@ + + + + + + + +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 new file mode 100644 index 000000000..c448dd398 --- /dev/null +++ b/docs/build/html/struct_logical_or.html @@ -0,0 +1,130 @@ + + + + + + + +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 new file mode 100644 index 000000000..da198f4db --- /dev/null +++ b/docs/build/html/struct_m_l_x_conv_params-members.html @@ -0,0 +1,101 @@ + + + + + + + +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 new file mode 100644 index 000000000..bb91fcdaa --- /dev/null +++ b/docs/build/html/struct_m_l_x_conv_params.html @@ -0,0 +1,366 @@ + + + + + + + +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 new file mode 100644 index 000000000..4369a7787 --- /dev/null +++ b/docs/build/html/struct_m_l_x_fast_attention_params-members.html @@ -0,0 +1,106 @@ + + + + + + + +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 new file mode 100644 index 000000000..fe5c8024b --- /dev/null +++ b/docs/build/html/struct_m_l_x_fast_attention_params.html @@ -0,0 +1,416 @@ + + + + + + + +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 new file mode 100644 index 000000000..25a210577 --- /dev/null +++ b/docs/build/html/struct_m_l_x_scaled_dot_product_attention_params-members.html @@ -0,0 +1,91 @@ + + + + + + + +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 new file mode 100644 index 000000000..5c110a5a8 --- /dev/null +++ b/docs/build/html/struct_m_l_x_scaled_dot_product_attention_params.html @@ -0,0 +1,176 @@ + + + + + + + +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 new file mode 100644 index 000000000..b9a9affb1 --- /dev/null +++ b/docs/build/html/struct_max-members.html @@ -0,0 +1,90 @@ + + + + + + + +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.

        + + + + + +
        atomic_update(device mlx_atomic< T > *out, T val, uint offset=0)Max< U >inline
        initMax< U >static
        operator()(U a, U b)Max< U >inline
        simd_reduce(T val)Max< U >inline
        + + + + diff --git a/docs/build/html/struct_max.html b/docs/build/html/struct_max.html new file mode 100644 index 000000000..0d47bf656 --- /dev/null +++ b/docs/build/html/struct_max.html @@ -0,0 +1,233 @@ + + + + + + + +MLX: Max< U > Struct Template Reference + + + + + + + + + + + +
        +
        + + + + + + +
        +
        MLX +
        +
        +
        + + + + + + + + +
        +
        + + +
        +
        +
        +
        +
        +
        Loading...
        +
        Searching...
        +
        No Matches
        +
        +
        +
        +
        + +
        +
        + +
        Max< U > Struct Template Reference
        +
        +
        + +

        #include <ops.h>

        + + + + + + + + + + +

        +Public Member Functions

        template<typename T >
        simd_reduce (T val)
         
        template<typename T >
        void atomic_update (device mlx_atomic< T > *out, T val, uint offset=0)
         
        operator() (U a, U b)
         
        + + + +

        +Static Public Attributes

        static constexpr constant U init = Limits<U>::min
         
        +

        Member Function Documentation

        + +

        ◆ atomic_update()

        + +
        +
        +
        +template<typename U >
        +
        +template<typename T >
        + + + + + +
        + + + + + + + + + + + + + + + + +
        void Max< U >::atomic_update (device mlx_atomic< T > * out,
        T val,
        uint offset = 0 )
        +
        +inline
        +
        + +
        +
        + +

        ◆ operator()()

        + +
        +
        +
        +template<typename U >
        + + + + + +
        + + + + + + + + + + + +
        U Max< U >::operator() (U a,
        U b )
        +
        +inline
        +
        + +
        +
        + +

        ◆ simd_reduce()

        + +
        +
        +
        +template<typename U >
        +
        +template<typename T >
        + + + + + +
        + + + + + + + +
        T Max< U >::simd_reduce (T val)
        +
        +inline
        +
        + +
        +
        +

        Member Data Documentation

        + +

        ◆ init

        + +
        +
        +
        +template<typename U >
        + + + + + +
        + + + + +
        constexpr constant U Max< U >::init = Limits<U>::min
        +
        +staticconstexpr
        +
        + +
        +
        +
        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 new file mode 100644 index 000000000..c93d8c5b9 --- /dev/null +++ b/docs/build/html/struct_maximum-members.html @@ -0,0 +1,89 @@ + + + + + + + +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 new file mode 100644 index 000000000..4d5db1cdb --- /dev/null +++ b/docs/build/html/struct_maximum.html @@ -0,0 +1,198 @@ + + + + + + + +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-members.html b/docs/build/html/struct_min-members.html new file mode 100644 index 000000000..8afa92415 --- /dev/null +++ b/docs/build/html/struct_min-members.html @@ -0,0 +1,90 @@ + + + + + + + +MLX: Member List + + + + + + + + + + + +
        +
        + + + + + + +
        +
        MLX +
        +
        +
        + + + + + + + + +
        +
        + + +
        +
        +
        +
        +
        +
        Loading...
        +
        Searching...
        +
        No Matches
        +
        +
        +
        +
        + +
        +
        +
        Min< U > Member List
        +
        +
        + +

        This is the complete list of members for Min< U >, including all inherited members.

        + + + + + +
        atomic_update(device mlx_atomic< T > *out, T val, uint offset=0)Min< U >inline
        initMin< U >static
        operator()(U a, U b)Min< U >inline
        simd_reduce(T val)Min< U >inline
        + + + + diff --git a/docs/build/html/struct_min.html b/docs/build/html/struct_min.html new file mode 100644 index 000000000..2b0dca5ed --- /dev/null +++ b/docs/build/html/struct_min.html @@ -0,0 +1,233 @@ + + + + + + + +MLX: Min< U > Struct Template Reference + + + + + + + + + + + +
        +
        + + + + + + +
        +
        MLX +
        +
        +
        + + + + + + + + +
        +
        + + +
        +
        +
        +
        +
        +
        Loading...
        +
        Searching...
        +
        No Matches
        +
        +
        +
        +
        + +
        +
        + +
        Min< U > Struct Template Reference
        +
        +
        + +

        #include <ops.h>

        + + + + + + + + + + +

        +Public Member Functions

        template<typename T >
        simd_reduce (T val)
         
        template<typename T >
        void atomic_update (device mlx_atomic< T > *out, T val, uint offset=0)
         
        operator() (U a, U b)
         
        + + + +

        +Static Public Attributes

        static constexpr constant U init = Limits<U>::max
         
        +

        Member Function Documentation

        + +

        ◆ atomic_update()

        + +
        +
        +
        +template<typename U >
        +
        +template<typename T >
        + + + + + +
        + + + + + + + + + + + + + + + + +
        void Min< U >::atomic_update (device mlx_atomic< T > * out,
        T val,
        uint offset = 0 )
        +
        +inline
        +
        + +
        +
        + +

        ◆ operator()()

        + +
        +
        +
        +template<typename U >
        + + + + + +
        + + + + + + + + + + + +
        U Min< U >::operator() (U a,
        U b )
        +
        +inline
        +
        + +
        +
        + +

        ◆ simd_reduce()

        + +
        +
        +
        +template<typename U >
        +
        +template<typename T >
        + + + + + +
        + + + + + + + +
        T Min< U >::simd_reduce (T val)
        +
        +inline
        +
        + +
        +
        +

        Member Data Documentation

        + +

        ◆ init

        + +
        +
        +
        +template<typename U >
        + + + + + +
        + + + + +
        constexpr constant U Min< U >::init = Limits<U>::max
        +
        +staticconstexpr
        +
        + +
        +
        +
        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 new file mode 100644 index 000000000..00e09b6a8 --- /dev/null +++ b/docs/build/html/struct_minimum-members.html @@ -0,0 +1,89 @@ + + + + + + + +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 new file mode 100644 index 000000000..e43054304 --- /dev/null +++ b/docs/build/html/struct_minimum.html @@ -0,0 +1,198 @@ + + + + + + + +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 new file mode 100644 index 000000000..3f767202e --- /dev/null +++ b/docs/build/html/struct_multiply-members.html @@ -0,0 +1,87 @@ + + + + + + + +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 new file mode 100644 index 000000000..5d9c68053 --- /dev/null +++ b/docs/build/html/struct_multiply.html @@ -0,0 +1,130 @@ + + + + + + + +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 new file mode 100644 index 000000000..f202b590f --- /dev/null +++ b/docs/build/html/struct_na_n_equal-members.html @@ -0,0 +1,88 @@ + + + + + + + +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 new file mode 100644 index 000000000..73c3cab91 --- /dev/null +++ b/docs/build/html/struct_na_n_equal.html @@ -0,0 +1,164 @@ + + + + + + + +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 new file mode 100644 index 000000000..851d7d8bb --- /dev/null +++ b/docs/build/html/struct_negative-members.html @@ -0,0 +1,87 @@ + + + + + + + +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 new file mode 100644 index 000000000..2da802bae --- /dev/null +++ b/docs/build/html/struct_negative.html @@ -0,0 +1,126 @@ + + + + + + + +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 new file mode 100644 index 000000000..5c5d37735 --- /dev/null +++ b/docs/build/html/struct_none-members.html @@ -0,0 +1,87 @@ + + + + + + + +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, uint offset=0)Noneinline
        + + + + diff --git a/docs/build/html/struct_none.html b/docs/build/html/struct_none.html new file mode 100644 index 000000000..9681d49df --- /dev/null +++ b/docs/build/html/struct_none.html @@ -0,0 +1,135 @@ + + + + + + + +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, uint offset=0)
         
        +

        Member Function Documentation

        + +

        ◆ atomic_update()

        + +
        +
        +
        +template<typename T >
        + + + + + +
        + + + + + + + + + + + + + + + + +
        void None::atomic_update (device mlx_atomic< T > * out,
        T val,
        uint 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 new file mode 100644 index 000000000..d4225ca8e --- /dev/null +++ b/docs/build/html/struct_not_equal-members.html @@ -0,0 +1,88 @@ + + + + + + + +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 new file mode 100644 index 000000000..a42ee7fb8 --- /dev/null +++ b/docs/build/html/struct_not_equal.html @@ -0,0 +1,164 @@ + + + + + + + +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-members.html b/docs/build/html/struct_or-members.html new file mode 100644 index 000000000..3b54b4776 --- /dev/null +++ b/docs/build/html/struct_or-members.html @@ -0,0 +1,92 @@ + + + + + + + +MLX: Member List + + + + + + + + + + + +
        +
        + + + + + + +
        +
        MLX +
        +
        +
        + + + + + + + + +
        +
        + + +
        +
        +
        +
        +
        +
        Loading...
        +
        Searching...
        +
        No Matches
        +
        +
        +
        +
        + +
        +
        +
        Or< U > Member List
        +
        +
        + +

        This is the complete list of members for Or< U >, including all inherited members.

        + + + + + + + +
        atomic_update(device mlx_atomic< unsigned int > *out, bool val, uint elem_idx, uint offset=0)Or< U >inline
        atomic_update(device mlx_atomic< bool > *out, bool val, uint offset=0)Or< U >inline
        initOr< U >static
        operator()(bool a, bool b)Or< U >inline
        simd_reduce(bool val)Or< U >inline
        update(device bool *out, bool val)Or< U >inline
        + + + + diff --git a/docs/build/html/struct_or.html b/docs/build/html/struct_or.html new file mode 100644 index 000000000..7a8a97373 --- /dev/null +++ b/docs/build/html/struct_or.html @@ -0,0 +1,303 @@ + + + + + + + +MLX: Or< U > Struct Template Reference + + + + + + + + + + + +
        +
        + + + + + + +
        +
        MLX +
        +
        +
        + + + + + + + + +
        +
        + + +
        +
        +
        +
        +
        +
        Loading...
        +
        Searching...
        +
        No Matches
        +
        +
        +
        +
        + +
        +
        + +
        Or< U > Struct Template Reference
        +
        +
        + +

        #include <ops.h>

        + + + + + + + + + + + + +

        +Public Member Functions

        bool simd_reduce (bool val)
         
        void atomic_update (device mlx_atomic< unsigned int > *out, bool val, uint elem_idx, uint offset=0)
         
        void atomic_update (device mlx_atomic< bool > *out, bool val, uint offset=0)
         
        void update (device bool *out, bool val)
         
        bool operator() (bool a, bool b)
         
        + + + +

        +Static Public Attributes

        static constexpr constant bool init = false
         
        +

        Member Function Documentation

        + +

        ◆ atomic_update() [1/2]

        + +
        +
        +
        +template<typename U = bool>
        + + + + + +
        + + + + + + + + + + + + + + + + +
        void Or< U >::atomic_update (device mlx_atomic< bool > * out,
        bool val,
        uint offset = 0 )
        +
        +inline
        +
        + +
        +
        + +

        ◆ atomic_update() [2/2]

        + +
        +
        +
        +template<typename U = bool>
        + + + + + +
        + + + + + + + + + + + + + + + + + + + + + +
        void Or< U >::atomic_update (device mlx_atomic< unsigned int > * out,
        bool val,
        uint elem_idx,
        uint offset = 0 )
        +
        +inline
        +
        + +
        +
        + +

        ◆ operator()()

        + +
        +
        +
        +template<typename U = bool>
        + + + + + +
        + + + + + + + + + + + +
        bool Or< U >::operator() (bool a,
        bool b )
        +
        +inline
        +
        + +
        +
        + +

        ◆ simd_reduce()

        + +
        +
        +
        +template<typename U = bool>
        + + + + + +
        + + + + + + + +
        bool Or< U >::simd_reduce (bool val)
        +
        +inline
        +
        + +
        +
        + +

        ◆ update()

        + +
        +
        +
        +template<typename U = bool>
        + + + + + +
        + + + + + + + + + + + +
        void Or< U >::update (device bool * out,
        bool val )
        +
        +inline
        +
        + +
        +
        +

        Member Data Documentation

        + +

        ◆ init

        + +
        +
        +
        +template<typename U = bool>
        + + + + + +
        + + + + +
        constexpr constant bool Or< U >::init = false
        +
        +staticconstexpr
        +
        + +
        +
        +
        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 new file mode 100644 index 000000000..cf025f596 --- /dev/null +++ b/docs/build/html/struct_power-members.html @@ -0,0 +1,89 @@ + + + + + + + +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 new file mode 100644 index 000000000..2c357b12d --- /dev/null +++ b/docs/build/html/struct_power.html @@ -0,0 +1,198 @@ + + + + + + + +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-members.html b/docs/build/html/struct_prod-members.html new file mode 100644 index 000000000..93c5bef7d --- /dev/null +++ b/docs/build/html/struct_prod-members.html @@ -0,0 +1,90 @@ + + + + + + + +MLX: Member List + + + + + + + + + + + +
        +
        + + + + + + +
        +
        MLX +
        +
        +
        + + + + + + + + +
        +
        + + +
        +
        +
        +
        +
        +
        Loading...
        +
        Searching...
        +
        No Matches
        +
        +
        +
        +
        + +
        +
        +
        Prod< U > Member List
        +
        +
        + +

        This is the complete list of members for Prod< U >, including all inherited members.

        + + + + + +
        atomic_update(device mlx_atomic< T > *out, T val, uint offset=0)Prod< U >inline
        initProd< U >static
        operator()(U a, U b)Prod< U >inline
        simd_reduce(T val)Prod< U >inline
        + + + + diff --git a/docs/build/html/struct_prod.html b/docs/build/html/struct_prod.html new file mode 100644 index 000000000..ff980622a --- /dev/null +++ b/docs/build/html/struct_prod.html @@ -0,0 +1,233 @@ + + + + + + + +MLX: Prod< U > Struct Template Reference + + + + + + + + + + + +
        +
        + + + + + + +
        +
        MLX +
        +
        +
        + + + + + + + + +
        +
        + + +
        +
        +
        +
        +
        +
        Loading...
        +
        Searching...
        +
        No Matches
        +
        +
        +
        +
        + +
        +
        + +
        Prod< U > Struct Template Reference
        +
        +
        + +

        #include <ops.h>

        + + + + + + + + + + +

        +Public Member Functions

        template<typename T >
        simd_reduce (T val)
         
        template<typename T >
        void atomic_update (device mlx_atomic< T > *out, T val, uint offset=0)
         
        operator() (U a, U b)
         
        + + + +

        +Static Public Attributes

        static constexpr constant U init = U(1)
         
        +

        Member Function Documentation

        + +

        ◆ atomic_update()

        + +
        +
        +
        +template<typename U >
        +
        +template<typename T >
        + + + + + +
        + + + + + + + + + + + + + + + + +
        void Prod< U >::atomic_update (device mlx_atomic< T > * out,
        T val,
        uint offset = 0 )
        +
        +inline
        +
        + +
        +
        + +

        ◆ operator()()

        + +
        +
        +
        +template<typename U >
        + + + + + +
        + + + + + + + + + + + +
        U Prod< U >::operator() (U a,
        U b )
        +
        +inline
        +
        + +
        +
        + +

        ◆ simd_reduce()

        + +
        +
        +
        +template<typename U >
        +
        +template<typename T >
        + + + + + +
        + + + + + + + +
        T Prod< U >::simd_reduce (T val)
        +
        +inline
        +
        + +
        +
        +

        Member Data Documentation

        + +

        ◆ init

        + +
        +
        +
        +template<typename U >
        + + + + + +
        + + + + +
        constexpr constant U Prod< U >::init = U(1)
        +
        +staticconstexpr
        +
        + +
        +
        +
        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_read_writer-members.html b/docs/build/html/struct_read_writer-members.html new file mode 100644 index 000000000..804db7759 --- /dev/null +++ b/docs/build/html/struct_read_writer-members.html @@ -0,0 +1,128 @@ + + + + + + + +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 new file mode 100644 index 000000000..80848d6cd --- /dev/null +++ b/docs/build/html/struct_read_writer.html @@ -0,0 +1,1125 @@ + + + + + + + +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 new file mode 100644 index 000000000..b0fbe1e63 --- /dev/null +++ b/docs/build/html/struct_remainder-members.html @@ -0,0 +1,90 @@ + + + + + + + +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 new file mode 100644 index 000000000..9c66c2796 --- /dev/null +++ b/docs/build/html/struct_remainder.html @@ -0,0 +1,232 @@ + + + + + + + +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 new file mode 100644 index 000000000..84ba32486 --- /dev/null +++ b/docs/build/html/struct_right_shift-members.html @@ -0,0 +1,87 @@ + + + + + + + +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 new file mode 100644 index 000000000..e650eb89e --- /dev/null +++ b/docs/build/html/struct_right_shift.html @@ -0,0 +1,130 @@ + + + + + + + +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 new file mode 100644 index 000000000..642f55311 --- /dev/null +++ b/docs/build/html/struct_round-members.html @@ -0,0 +1,88 @@ + + + + + + + +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 new file mode 100644 index 000000000..326580350 --- /dev/null +++ b/docs/build/html/struct_round.html @@ -0,0 +1,156 @@ + + + + + + + +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 new file mode 100644 index 000000000..757736832 --- /dev/null +++ b/docs/build/html/struct_rsqrt-members.html @@ -0,0 +1,87 @@ + + + + + + + +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 new file mode 100644 index 000000000..15a34b57b --- /dev/null +++ b/docs/build/html/struct_rsqrt.html @@ -0,0 +1,126 @@ + + + + + + + +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 new file mode 100644 index 000000000..11da1994a --- /dev/null +++ b/docs/build/html/struct_scale_op-members.html @@ -0,0 +1,88 @@ + + + + + + + +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
        scaleScaleOp< OutT, InT >
        + + + + diff --git a/docs/build/html/struct_scale_op.html b/docs/build/html/struct_scale_op.html new file mode 100644 index 000000000..236b06c54 --- /dev/null +++ b/docs/build/html/struct_scale_op.html @@ -0,0 +1,148 @@ + + + + + + + +MLX: ScaleOp< OutT, InT > Struct Template Reference + + + + + + + + + + + +
        +
        + + + + + + +
        +
        MLX +
        +
        +
        + + + + + + + + +
        +
        + + +
        +
        +
        +
        +
        +
        Loading...
        +
        Searching...
        +
        No Matches
        +
        +
        +
        +
        + +
        +
        + +
        ScaleOp< OutT, InT > Struct Template Reference
        +
        +
        + +

        #include <steel_gemm_masked.h>

        + + + + +

        +Public Member Functions

        METAL_FUNC OutT apply (InT x) const
         
        + + + +

        +Public Attributes

        OutT scale
         
        +

        Member Function Documentation

        + +

        ◆ apply()

        + +
        +
        +
        +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 file: +
        + + + + diff --git a/docs/build/html/struct_select-members.html b/docs/build/html/struct_select-members.html new file mode 100644 index 000000000..3d7529a68 --- /dev/null +++ b/docs/build/html/struct_select-members.html @@ -0,0 +1,87 @@ + + + + + + + +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 new file mode 100644 index 000000000..8617f8a52 --- /dev/null +++ b/docs/build/html/struct_select.html @@ -0,0 +1,135 @@ + + + + + + + +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 new file mode 100644 index 000000000..72ce85ecd --- /dev/null +++ b/docs/build/html/struct_sigmoid-members.html @@ -0,0 +1,87 @@ + + + + + + + +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 new file mode 100644 index 000000000..e36e860d9 --- /dev/null +++ b/docs/build/html/struct_sigmoid.html @@ -0,0 +1,126 @@ + + + + + + + +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 new file mode 100644 index 000000000..a09ec0769 --- /dev/null +++ b/docs/build/html/struct_sign-members.html @@ -0,0 +1,88 @@ + + + + + + + +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
        + + + + diff --git a/docs/build/html/struct_sign.html b/docs/build/html/struct_sign.html new file mode 100644 index 000000000..13a7dd09e --- /dev/null +++ b/docs/build/html/struct_sign.html @@ -0,0 +1,156 @@ + + + + + + + +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)
         
        +

        Member Function Documentation

        + +

        ◆ operator()() [1/2]

        + +
        +
        +
        +template<typename T >
        + + + + + +
        + + + + + + + +
        T Sign::operator() (T x)
        +
        +inline
        +
        + +
        +
        + +

        ◆ operator()() [2/2]

        + +
        +
        +
        +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 new file mode 100644 index 000000000..6a8d092ae --- /dev/null +++ b/docs/build/html/struct_sin-members.html @@ -0,0 +1,88 @@ + + + + + + + +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 new file mode 100644 index 000000000..05fef869c --- /dev/null +++ b/docs/build/html/struct_sin.html @@ -0,0 +1,156 @@ + + + + + + + +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 new file mode 100644 index 000000000..ce39c71d2 --- /dev/null +++ b/docs/build/html/struct_sinh-members.html @@ -0,0 +1,88 @@ + + + + + + + +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 new file mode 100644 index 000000000..c69bd5242 --- /dev/null +++ b/docs/build/html/struct_sinh.html @@ -0,0 +1,156 @@ + + + + + + + +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 new file mode 100644 index 000000000..fd90f2f0e --- /dev/null +++ b/docs/build/html/struct_sqrt-members.html @@ -0,0 +1,87 @@ + + + + + + + +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 new file mode 100644 index 000000000..5e85abe3d --- /dev/null +++ b/docs/build/html/struct_sqrt.html @@ -0,0 +1,126 @@ + + + + + + + +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 new file mode 100644 index 000000000..37ce4bf09 --- /dev/null +++ b/docs/build/html/struct_square-members.html @@ -0,0 +1,87 @@ + + + + + + + +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 new file mode 100644 index 000000000..532bda685 --- /dev/null +++ b/docs/build/html/struct_square.html @@ -0,0 +1,126 @@ + + + + + + + +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 new file mode 100644 index 000000000..e59cc9444 --- /dev/null +++ b/docs/build/html/struct_subtract-members.html @@ -0,0 +1,87 @@ + + + + + + + +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 new file mode 100644 index 000000000..49b5c0498 --- /dev/null +++ b/docs/build/html/struct_subtract.html @@ -0,0 +1,130 @@ + + + + + + + +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-members.html b/docs/build/html/struct_sum-members.html new file mode 100644 index 000000000..b69f593e6 --- /dev/null +++ b/docs/build/html/struct_sum-members.html @@ -0,0 +1,90 @@ + + + + + + + +MLX: Member List + + + + + + + + + + + +
        +
        + + + + + + +
        +
        MLX +
        +
        +
        + + + + + + + + +
        +
        + + +
        +
        +
        +
        +
        +
        Loading...
        +
        Searching...
        +
        No Matches
        +
        +
        +
        +
        + +
        +
        +
        Sum< U > Member List
        +
        +
        + +

        This is the complete list of members for Sum< U >, including all inherited members.

        + + + + + +
        atomic_update(device mlx_atomic< T > *out, T val, uint offset=0)Sum< U >inline
        initSum< U >static
        operator()(U a, U b)Sum< U >inline
        simd_reduce(T val)Sum< U >inline
        + + + + diff --git a/docs/build/html/struct_sum.html b/docs/build/html/struct_sum.html new file mode 100644 index 000000000..3955651a9 --- /dev/null +++ b/docs/build/html/struct_sum.html @@ -0,0 +1,233 @@ + + + + + + + +MLX: Sum< U > Struct Template Reference + + + + + + + + + + + +
        +
        + + + + + + +
        +
        MLX +
        +
        +
        + + + + + + + + +
        +
        + + +
        +
        +
        +
        +
        +
        Loading...
        +
        Searching...
        +
        No Matches
        +
        +
        +
        +
        + +
        +
        + +
        Sum< U > Struct Template Reference
        +
        +
        + +

        #include <ops.h>

        + + + + + + + + + + +

        +Public Member Functions

        template<typename T >
        simd_reduce (T val)
         
        template<typename T >
        void atomic_update (device mlx_atomic< T > *out, T val, uint offset=0)
         
        operator() (U a, U b)
         
        + + + +

        +Static Public Attributes

        static constexpr constant U init = U(0)
         
        +

        Member Function Documentation

        + +

        ◆ atomic_update()

        + +
        +
        +
        +template<typename U >
        +
        +template<typename T >
        + + + + + +
        + + + + + + + + + + + + + + + + +
        void Sum< U >::atomic_update (device mlx_atomic< T > * out,
        T val,
        uint offset = 0 )
        +
        +inline
        +
        + +
        +
        + +

        ◆ operator()()

        + +
        +
        +
        +template<typename U >
        + + + + + +
        + + + + + + + + + + + +
        U Sum< U >::operator() (U a,
        U b )
        +
        +inline
        +
        + +
        +
        + +

        ◆ simd_reduce()

        + +
        +
        +
        +template<typename U >
        +
        +template<typename T >
        + + + + + +
        + + + + + + + +
        T Sum< U >::simd_reduce (T val)
        +
        +inline
        +
        + +
        +
        +

        Member Data Documentation

        + +

        ◆ init

        + +
        +
        +
        +template<typename U >
        + + + + + +
        + + + + +
        constexpr constant U Sum< U >::init = U(0)
        +
        +staticconstexpr
        +
        + +
        +
        +
        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 new file mode 100644 index 000000000..b2dd2a621 --- /dev/null +++ b/docs/build/html/struct_tan-members.html @@ -0,0 +1,88 @@ + + + + + + + +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 new file mode 100644 index 000000000..aa17f6ee4 --- /dev/null +++ b/docs/build/html/struct_tan.html @@ -0,0 +1,156 @@ + + + + + + + +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 new file mode 100644 index 000000000..59b936e4f --- /dev/null +++ b/docs/build/html/struct_tanh-members.html @@ -0,0 +1,88 @@ + + + + + + + +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 new file mode 100644 index 000000000..a23af8069 --- /dev/null +++ b/docs/build/html/struct_tanh.html @@ -0,0 +1,156 @@ + + + + + + + +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 new file mode 100644 index 000000000..1673f6955 --- /dev/null +++ b/docs/build/html/struct_thread_sort-members.html @@ -0,0 +1,87 @@ + + + + + + + +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 new file mode 100644 index 000000000..418d94173 --- /dev/null +++ b/docs/build/html/struct_thread_sort.html @@ -0,0 +1,129 @@ + + + + + + + +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 new file mode 100644 index 000000000..1befcd378 --- /dev/null +++ b/docs/build/html/structcomplex64__t-members.html @@ -0,0 +1,97 @@ + + + + + + + +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(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 new file mode 100644 index 000000000..5b4b34728 --- /dev/null +++ b/docs/build/html/structcomplex64__t.html @@ -0,0 +1,405 @@ + + + + + + + +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)
         
        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/5]

        + +
        +
        + + + + + +
        + + + + + + + + + + + +
        constexpr complex64_t::complex64_t (float real,
        float imag )
        +
        +inlineconstexpr
        +
        + +
        +
        + +

        ◆ complex64_t() [2/5]

        + +
        +
        +
        +template<typename T , typename = typename enable_if<can_convert_to_complex64<T>>::type>
        + + + + + +
        + + + + + + + +
        constexpr complex64_t::complex64_t (T x)
        +
        +inlineconstexpr
        +
        + +
        +
        + +

        ◆ complex64_t() [3/5]

        + +
        +
        +
        +template<typename T , typename = typename enable_if<can_convert_to_complex64<T>>::type>
        + + + + + +
        + + + + + + + +
        constexpr complex64_t::complex64_t (T x)
        +
        +inlineconstexpr
        +
        + +
        +
        + +

        ◆ complex64_t() [4/5]

        + +
        +
        +
        +template<typename T , typename = typename enable_if<can_convert_to_complex64<T>>::type>
        + + + + + +
        + + + + + + + +
        constexpr complex64_t::complex64_t (T x)
        +
        +inlineconstexpr
        +
        + +
        +
        + +

        ◆ complex64_t() [5/5]

        + +
        +
        +
        +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/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 new file mode 100644 index 000000000..eab663d9e --- /dev/null +++ b/docs/build/html/structmetal_1_1__numeric__limits__impl_3_01bfloat16__t_01_4-members.html @@ -0,0 +1,107 @@ + + + + + + + +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 new file mode 100644 index 000000000..4e8f982bc --- /dev/null +++ b/docs/build/html/structmetal_1_1__numeric__limits__impl_3_01bfloat16__t_01_4.html @@ -0,0 +1,546 @@ + + + + + + + +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 new file mode 100644 index 0000000000000000000000000000000000000000..9f08792582e297b8ea349fddb10ec596511d9057 GIT binary patch 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 new file mode 100644 index 000000000..91d4aa696 --- /dev/null +++ b/docs/build/html/structmlx_1_1core_1_1___m_l_x___b_float16.html @@ -0,0 +1,284 @@ + + + + + + + +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 new file mode 100644 index 000000000..3077ec4f9 --- /dev/null +++ b/docs/build/html/structmlx_1_1core_1_1___m_l_x___float16-members.html @@ -0,0 +1,97 @@ + + + + + + + +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 new file mode 100644 index 000000000..2ab72ea09 --- /dev/null +++ b/docs/build/html/structmlx_1_1core_1_1___m_l_x___float16.html @@ -0,0 +1,284 @@ + + + + + + + +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_device-members.html b/docs/build/html/structmlx_1_1core_1_1_device-members.html new file mode 100644 index 000000000..8b888c8dc --- /dev/null +++ b/docs/build/html/structmlx_1_1core_1_1_device-members.html @@ -0,0 +1,96 @@ + + + + + + + +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 new file mode 100644 index 000000000..c9ca5ea21 --- /dev/null +++ b/docs/build/html/structmlx_1_1core_1_1_device.html @@ -0,0 +1,255 @@ + + + + + + + +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 new file mode 100644 index 000000000..0a6739303 --- /dev/null +++ b/docs/build/html/structmlx_1_1core_1_1_dtype-members.html @@ -0,0 +1,97 @@ + + + + + + + +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 new file mode 100644 index 000000000..c0363751f --- /dev/null +++ b/docs/build/html/structmlx_1_1core_1_1_dtype.html @@ -0,0 +1,344 @@ + + + + + + + +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 new file mode 100644 index 000000000..74567b21b --- /dev/null +++ b/docs/build/html/structmlx_1_1core_1_1_node_namer-members.html @@ -0,0 +1,92 @@ + + + + + + + +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 new file mode 100644 index 000000000..6b3678766 --- /dev/null +++ b/docs/build/html/structmlx_1_1core_1_1_node_namer.html @@ -0,0 +1,140 @@ + + + + + + + +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 new file mode 100644 index 000000000..8093b17d3 --- /dev/null +++ b/docs/build/html/structmlx_1_1core_1_1_print_formatter-members.html @@ -0,0 +1,102 @@ + + + + + + + +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 new file mode 100644 index 000000000..9c0be826e --- /dev/null +++ b/docs/build/html/structmlx_1_1core_1_1_print_formatter.html @@ -0,0 +1,462 @@ + + + + + + + +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 new file mode 100644 index 000000000..8d389f305 --- /dev/null +++ b/docs/build/html/structmlx_1_1core_1_1_reduction_plan-members.html @@ -0,0 +1,95 @@ + + + + + + + +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 new file mode 100644 index 000000000..92b6e9879 --- /dev/null +++ b/docs/build/html/structmlx_1_1core_1_1_reduction_plan.html @@ -0,0 +1,216 @@ + + + + + + + +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-members.html b/docs/build/html/structmlx_1_1core_1_1_stream-members.html new file mode 100644 index 000000000..4db1279c4 --- /dev/null +++ b/docs/build/html/structmlx_1_1core_1_1_stream-members.html @@ -0,0 +1,93 @@ + + + + + + + +MLX: Member List + + + + + + + + + + + +
        +
        + + + + + + +
        +
        MLX +
        +
        +
        + + + + + + + + +
        +
        + + +
        +
        +
        +
        +
        +
        Loading...
        +
        Searching...
        +
        No Matches
        +
        +
        +
        +
        + + +
        +
        +
        mlx::core::Stream Member List
        +
        +
        + +

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

        + + + + +
        devicemlx::core::Stream
        indexmlx::core::Stream
        Stream(int index, Device device)mlx::core::Streaminlineexplicit
        + + + + diff --git a/docs/build/html/structmlx_1_1core_1_1_stream.html b/docs/build/html/structmlx_1_1core_1_1_stream.html new file mode 100644 index 000000000..881ddaf2c --- /dev/null +++ b/docs/build/html/structmlx_1_1core_1_1_stream.html @@ -0,0 +1,168 @@ + + + + + + + +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 new file mode 100644 index 000000000..46d1ac211 --- /dev/null +++ b/docs/build/html/structmlx_1_1core_1_1_stream_context-members.html @@ -0,0 +1,92 @@ + + + + + + + +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 new file mode 100644 index 000000000..8ed91dd23 --- /dev/null +++ b/docs/build/html/structmlx_1_1core_1_1_stream_context.html @@ -0,0 +1,154 @@ + + + + + + + +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 new file mode 100644 index 000000000..6287c04ed --- /dev/null +++ b/docs/build/html/structmlx_1_1core_1_1_type_to_dtype-members.html @@ -0,0 +1,91 @@ + + + + + + + +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 new file mode 100644 index 000000000..3ee1cb7d8 --- /dev/null +++ b/docs/build/html/structmlx_1_1core_1_1_type_to_dtype.html @@ -0,0 +1,121 @@ + + + + + + + +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 new file mode 100644 index 000000000..8691adaae --- /dev/null +++ b/docs/build/html/structmlx_1_1core_1_1array_1_1_array_iterator-members.html @@ -0,0 +1,100 @@ + + + + + + + +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 new file mode 100644 index 000000000..306e25df8 --- /dev/null +++ b/docs/build/html/structmlx_1_1core_1_1array_1_1_array_iterator.html @@ -0,0 +1,341 @@ + + + + + + + +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 new file mode 100644 index 000000000..57c78fbac --- /dev/null +++ b/docs/build/html/structmlx_1_1core_1_1array_1_1_data-members.html @@ -0,0 +1,96 @@ + + + + + + + +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 new file mode 100644 index 000000000..0533ac9f6 --- /dev/null +++ b/docs/build/html/structmlx_1_1core_1_1array_1_1_data.html @@ -0,0 +1,250 @@ + + + + + + + +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 new file mode 100644 index 000000000..c0019646e --- /dev/null +++ b/docs/build/html/structmlx_1_1core_1_1array_1_1_flags-members.html @@ -0,0 +1,93 @@ + + + + + + + +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 new file mode 100644 index 000000000..21dfbdc63 --- /dev/null +++ b/docs/build/html/structmlx_1_1core_1_1array_1_1_flags.html @@ -0,0 +1,148 @@ + + + + + + + +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 new file mode 100644 index 000000000..1cfbd1ce1 --- /dev/null +++ b/docs/build/html/structmlx_1_1core_1_1complex128__t-members.html @@ -0,0 +1,94 @@ + + + + + + + +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 new file mode 100644 index 000000000..d92fc8cd1 --- /dev/null +++ b/docs/build/html/structmlx_1_1core_1_1complex128__t.html @@ -0,0 +1,222 @@ + + + + + + + +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 new file mode 100644 index 0000000000000000000000000000000000000000..745542033602752f1e251ec5af57d0f373ef5b28 GIT binary patch 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_ literal 0 HcmV?d00001 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 new file mode 100644 index 000000000..156989d66 --- /dev/null +++ b/docs/build/html/structmlx_1_1core_1_1complex64__t-members.html @@ -0,0 +1,94 @@ + + + + + + + +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 new file mode 100644 index 000000000..e2bb9d463 --- /dev/null +++ b/docs/build/html/structmlx_1_1core_1_1complex64__t.html @@ -0,0 +1,222 @@ + + + + + + + +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 new file mode 100644 index 0000000000000000000000000000000000000000..30eb05ff58644b7935039ec32bc46567ba69a64e GIT binary patch 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 literal 0 HcmV?d00001 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 new file mode 100644 index 000000000..aea7ad5cb --- /dev/null +++ b/docs/build/html/structmlx_1_1core_1_1detail_1_1_abs-members.html @@ -0,0 +1,96 @@ + + + + + + + +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 new file mode 100644 index 000000000..60da6da92 --- /dev/null +++ b/docs/build/html/structmlx_1_1core_1_1detail_1_1_abs.html @@ -0,0 +1,265 @@ + + + + + + + +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 new file mode 100644 index 000000000..a2ffcee90 --- /dev/null +++ b/docs/build/html/structmlx_1_1core_1_1detail_1_1_add-members.html @@ -0,0 +1,91 @@ + + + + + + + +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 new file mode 100644 index 000000000..3c11ab01d --- /dev/null +++ b/docs/build/html/structmlx_1_1core_1_1detail_1_1_add.html @@ -0,0 +1,134 @@ + + + + + + + +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 new file mode 100644 index 000000000..05cc94807 --- /dev/null +++ b/docs/build/html/structmlx_1_1core_1_1detail_1_1_arc_cos-members.html @@ -0,0 +1,91 @@ + + + + + + + +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 new file mode 100644 index 000000000..b49ff89bd --- /dev/null +++ b/docs/build/html/structmlx_1_1core_1_1detail_1_1_arc_cos.html @@ -0,0 +1,130 @@ + + + + + + + +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 new file mode 100644 index 000000000..9b49fcc9b --- /dev/null +++ b/docs/build/html/structmlx_1_1core_1_1detail_1_1_arc_cosh-members.html @@ -0,0 +1,91 @@ + + + + + + + +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 new file mode 100644 index 000000000..f17827945 --- /dev/null +++ b/docs/build/html/structmlx_1_1core_1_1detail_1_1_arc_cosh.html @@ -0,0 +1,130 @@ + + + + + + + +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 new file mode 100644 index 000000000..a7c185ccc --- /dev/null +++ b/docs/build/html/structmlx_1_1core_1_1detail_1_1_arc_sin-members.html @@ -0,0 +1,91 @@ + + + + + + + +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 new file mode 100644 index 000000000..8a88a1a42 --- /dev/null +++ b/docs/build/html/structmlx_1_1core_1_1detail_1_1_arc_sin.html @@ -0,0 +1,130 @@ + + + + + + + +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 new file mode 100644 index 000000000..c6f01652f --- /dev/null +++ b/docs/build/html/structmlx_1_1core_1_1detail_1_1_arc_sinh-members.html @@ -0,0 +1,91 @@ + + + + + + + +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 new file mode 100644 index 000000000..48ea2d547 --- /dev/null +++ b/docs/build/html/structmlx_1_1core_1_1detail_1_1_arc_sinh.html @@ -0,0 +1,130 @@ + + + + + + + +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 new file mode 100644 index 000000000..73f9825b4 --- /dev/null +++ b/docs/build/html/structmlx_1_1core_1_1detail_1_1_arc_tan-members.html @@ -0,0 +1,91 @@ + + + + + + + +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 new file mode 100644 index 000000000..6e990f0c5 --- /dev/null +++ b/docs/build/html/structmlx_1_1core_1_1detail_1_1_arc_tan.html @@ -0,0 +1,130 @@ + + + + + + + +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 new file mode 100644 index 000000000..cfdbcd488 --- /dev/null +++ b/docs/build/html/structmlx_1_1core_1_1detail_1_1_arc_tan2-members.html @@ -0,0 +1,91 @@ + + + + + + + +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 new file mode 100644 index 000000000..d4cd3121a --- /dev/null +++ b/docs/build/html/structmlx_1_1core_1_1detail_1_1_arc_tan2.html @@ -0,0 +1,134 @@ + + + + + + + +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 new file mode 100644 index 000000000..676e3a81e --- /dev/null +++ b/docs/build/html/structmlx_1_1core_1_1detail_1_1_arc_tanh-members.html @@ -0,0 +1,91 @@ + + + + + + + +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 new file mode 100644 index 000000000..cf0c84964 --- /dev/null +++ b/docs/build/html/structmlx_1_1core_1_1detail_1_1_arc_tanh.html @@ -0,0 +1,130 @@ + + + + + + + +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 new file mode 100644 index 000000000..806d6d07b --- /dev/null +++ b/docs/build/html/structmlx_1_1core_1_1detail_1_1_bitwise_and-members.html @@ -0,0 +1,91 @@ + + + + + + + +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 new file mode 100644 index 000000000..33222ca5b --- /dev/null +++ b/docs/build/html/structmlx_1_1core_1_1detail_1_1_bitwise_and.html @@ -0,0 +1,134 @@ + + + + + + + +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 new file mode 100644 index 000000000..929480081 --- /dev/null +++ b/docs/build/html/structmlx_1_1core_1_1detail_1_1_bitwise_or-members.html @@ -0,0 +1,91 @@ + + + + + + + +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 new file mode 100644 index 000000000..66a642dd9 --- /dev/null +++ b/docs/build/html/structmlx_1_1core_1_1detail_1_1_bitwise_or.html @@ -0,0 +1,134 @@ + + + + + + + +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 new file mode 100644 index 000000000..9767b5d8e --- /dev/null +++ b/docs/build/html/structmlx_1_1core_1_1detail_1_1_bitwise_xor-members.html @@ -0,0 +1,91 @@ + + + + + + + +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 new file mode 100644 index 000000000..6d2ec2095 --- /dev/null +++ b/docs/build/html/structmlx_1_1core_1_1detail_1_1_bitwise_xor.html @@ -0,0 +1,134 @@ + + + + + + + +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 new file mode 100644 index 000000000..4b161b8c1 --- /dev/null +++ b/docs/build/html/structmlx_1_1core_1_1detail_1_1_ceil-members.html @@ -0,0 +1,100 @@ + + + + + + + +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 new file mode 100644 index 000000000..0f127c272 --- /dev/null +++ b/docs/build/html/structmlx_1_1core_1_1detail_1_1_ceil.html @@ -0,0 +1,373 @@ + + + + + + + +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 new file mode 100644 index 000000000..c8d705ab5 --- /dev/null +++ b/docs/build/html/structmlx_1_1core_1_1detail_1_1_conjugate-members.html @@ -0,0 +1,91 @@ + + + + + + + +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 new file mode 100644 index 000000000..6e9a09c8b --- /dev/null +++ b/docs/build/html/structmlx_1_1core_1_1detail_1_1_conjugate.html @@ -0,0 +1,127 @@ + + + + + + + +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 new file mode 100644 index 000000000..7b98004c0 --- /dev/null +++ b/docs/build/html/structmlx_1_1core_1_1detail_1_1_cos-members.html @@ -0,0 +1,91 @@ + + + + + + + +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 new file mode 100644 index 000000000..d33ccddc7 --- /dev/null +++ b/docs/build/html/structmlx_1_1core_1_1detail_1_1_cos.html @@ -0,0 +1,130 @@ + + + + + + + +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 new file mode 100644 index 000000000..2cb7b6f40 --- /dev/null +++ b/docs/build/html/structmlx_1_1core_1_1detail_1_1_cosh-members.html @@ -0,0 +1,91 @@ + + + + + + + +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 new file mode 100644 index 000000000..9ae64a7ae --- /dev/null +++ b/docs/build/html/structmlx_1_1core_1_1detail_1_1_cosh.html @@ -0,0 +1,130 @@ + + + + + + + +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 new file mode 100644 index 000000000..5a92318ad --- /dev/null +++ b/docs/build/html/structmlx_1_1core_1_1detail_1_1_divide-members.html @@ -0,0 +1,91 @@ + + + + + + + +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 new file mode 100644 index 000000000..62ab3a4cf --- /dev/null +++ b/docs/build/html/structmlx_1_1core_1_1detail_1_1_divide.html @@ -0,0 +1,134 @@ + + + + + + + +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 new file mode 100644 index 000000000..10a718928 --- /dev/null +++ b/docs/build/html/structmlx_1_1core_1_1detail_1_1_equal-members.html @@ -0,0 +1,91 @@ + + + + + + + +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 new file mode 100644 index 000000000..8ca088302 --- /dev/null +++ b/docs/build/html/structmlx_1_1core_1_1detail_1_1_equal.html @@ -0,0 +1,134 @@ + + + + + + + +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 new file mode 100644 index 000000000..54ed7c007 --- /dev/null +++ b/docs/build/html/structmlx_1_1core_1_1detail_1_1_erf-members.html @@ -0,0 +1,91 @@ + + + + + + + +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 new file mode 100644 index 000000000..cce5c15c5 --- /dev/null +++ b/docs/build/html/structmlx_1_1core_1_1detail_1_1_erf.html @@ -0,0 +1,130 @@ + + + + + + + +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 new file mode 100644 index 000000000..b98c0e0d0 --- /dev/null +++ b/docs/build/html/structmlx_1_1core_1_1detail_1_1_erf_inv-members.html @@ -0,0 +1,91 @@ + + + + + + + +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 new file mode 100644 index 000000000..1b8ca4ce9 --- /dev/null +++ b/docs/build/html/structmlx_1_1core_1_1detail_1_1_erf_inv.html @@ -0,0 +1,130 @@ + + + + + + + +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 new file mode 100644 index 000000000..5fdb816c2 --- /dev/null +++ b/docs/build/html/structmlx_1_1core_1_1detail_1_1_exp-members.html @@ -0,0 +1,92 @@ + + + + + + + +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 new file mode 100644 index 000000000..b3b858854 --- /dev/null +++ b/docs/build/html/structmlx_1_1core_1_1detail_1_1_exp.html @@ -0,0 +1,157 @@ + + + + + + + +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 new file mode 100644 index 000000000..d7273ddbf --- /dev/null +++ b/docs/build/html/structmlx_1_1core_1_1detail_1_1_expm1-members.html @@ -0,0 +1,91 @@ + + + + + + + +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 new file mode 100644 index 000000000..7b76e7844 --- /dev/null +++ b/docs/build/html/structmlx_1_1core_1_1detail_1_1_expm1.html @@ -0,0 +1,130 @@ + + + + + + + +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 new file mode 100644 index 000000000..76b3532d5 --- /dev/null +++ b/docs/build/html/structmlx_1_1core_1_1detail_1_1_floor-members.html @@ -0,0 +1,100 @@ + + + + + + + +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 new file mode 100644 index 000000000..f757fbe5e --- /dev/null +++ b/docs/build/html/structmlx_1_1core_1_1detail_1_1_floor.html @@ -0,0 +1,373 @@ + + + + + + + +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 new file mode 100644 index 000000000..c0bab8a90 --- /dev/null +++ b/docs/build/html/structmlx_1_1core_1_1detail_1_1_greater-members.html @@ -0,0 +1,91 @@ + + + + + + + +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 new file mode 100644 index 000000000..bf6f0ab61 --- /dev/null +++ b/docs/build/html/structmlx_1_1core_1_1detail_1_1_greater.html @@ -0,0 +1,134 @@ + + + + + + + +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 new file mode 100644 index 000000000..af11f1ada --- /dev/null +++ b/docs/build/html/structmlx_1_1core_1_1detail_1_1_greater_equal-members.html @@ -0,0 +1,91 @@ + + + + + + + +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 new file mode 100644 index 000000000..12357b3fa --- /dev/null +++ b/docs/build/html/structmlx_1_1core_1_1detail_1_1_greater_equal.html @@ -0,0 +1,134 @@ + + + + + + + +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 new file mode 100644 index 000000000..8181fdee4 --- /dev/null +++ b/docs/build/html/structmlx_1_1core_1_1detail_1_1_in_tracing-members.html @@ -0,0 +1,93 @@ + + + + + + + +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 new file mode 100644 index 000000000..dbd5bf18d --- /dev/null +++ b/docs/build/html/structmlx_1_1core_1_1detail_1_1_in_tracing.html @@ -0,0 +1,186 @@ + + + + + + + +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 new file mode 100644 index 000000000..93bc420ae --- /dev/null +++ b/docs/build/html/structmlx_1_1core_1_1detail_1_1_left_shift-members.html @@ -0,0 +1,91 @@ + + + + + + + +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 new file mode 100644 index 000000000..e5ecc4998 --- /dev/null +++ b/docs/build/html/structmlx_1_1core_1_1detail_1_1_left_shift.html @@ -0,0 +1,134 @@ + + + + + + + +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 new file mode 100644 index 000000000..48c25c0c4 --- /dev/null +++ b/docs/build/html/structmlx_1_1core_1_1detail_1_1_less-members.html @@ -0,0 +1,91 @@ + + + + + + + +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 new file mode 100644 index 000000000..34c2e689f --- /dev/null +++ b/docs/build/html/structmlx_1_1core_1_1detail_1_1_less.html @@ -0,0 +1,134 @@ + + + + + + + +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 new file mode 100644 index 000000000..fb50532ea --- /dev/null +++ b/docs/build/html/structmlx_1_1core_1_1detail_1_1_less_equal-members.html @@ -0,0 +1,91 @@ + + + + + + + +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 new file mode 100644 index 000000000..f5cb52d06 --- /dev/null +++ b/docs/build/html/structmlx_1_1core_1_1detail_1_1_less_equal.html @@ -0,0 +1,134 @@ + + + + + + + +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 new file mode 100644 index 000000000..adbd403bb --- /dev/null +++ b/docs/build/html/structmlx_1_1core_1_1detail_1_1_log-members.html @@ -0,0 +1,91 @@ + + + + + + + +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 new file mode 100644 index 000000000..4b973e64e --- /dev/null +++ b/docs/build/html/structmlx_1_1core_1_1detail_1_1_log.html @@ -0,0 +1,130 @@ + + + + + + + +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 new file mode 100644 index 000000000..b4f685b3b --- /dev/null +++ b/docs/build/html/structmlx_1_1core_1_1detail_1_1_log10-members.html @@ -0,0 +1,91 @@ + + + + + + + +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 new file mode 100644 index 000000000..e0a65b470 --- /dev/null +++ b/docs/build/html/structmlx_1_1core_1_1detail_1_1_log10.html @@ -0,0 +1,130 @@ + + + + + + + +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 new file mode 100644 index 000000000..d415e4e58 --- /dev/null +++ b/docs/build/html/structmlx_1_1core_1_1detail_1_1_log1p-members.html @@ -0,0 +1,91 @@ + + + + + + + +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 new file mode 100644 index 000000000..d6c763ca4 --- /dev/null +++ b/docs/build/html/structmlx_1_1core_1_1detail_1_1_log1p.html @@ -0,0 +1,130 @@ + + + + + + + +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 new file mode 100644 index 000000000..633040b71 --- /dev/null +++ b/docs/build/html/structmlx_1_1core_1_1detail_1_1_log2-members.html @@ -0,0 +1,91 @@ + + + + + + + +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 new file mode 100644 index 000000000..e4f27171e --- /dev/null +++ b/docs/build/html/structmlx_1_1core_1_1detail_1_1_log2.html @@ -0,0 +1,130 @@ + + + + + + + +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 new file mode 100644 index 000000000..ef6780c55 --- /dev/null +++ b/docs/build/html/structmlx_1_1core_1_1detail_1_1_log_add_exp-members.html @@ -0,0 +1,91 @@ + + + + + + + +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 new file mode 100644 index 000000000..b7ad084af --- /dev/null +++ b/docs/build/html/structmlx_1_1core_1_1detail_1_1_log_add_exp.html @@ -0,0 +1,134 @@ + + + + + + + +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 new file mode 100644 index 000000000..0333ff9ab --- /dev/null +++ b/docs/build/html/structmlx_1_1core_1_1detail_1_1_logical_and-members.html @@ -0,0 +1,91 @@ + + + + + + + +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 new file mode 100644 index 000000000..952dd1a5b --- /dev/null +++ b/docs/build/html/structmlx_1_1core_1_1detail_1_1_logical_and.html @@ -0,0 +1,134 @@ + + + + + + + +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 new file mode 100644 index 000000000..bf6959f5f --- /dev/null +++ b/docs/build/html/structmlx_1_1core_1_1detail_1_1_logical_not-members.html @@ -0,0 +1,91 @@ + + + + + + + +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 new file mode 100644 index 000000000..a1a99ce0a --- /dev/null +++ b/docs/build/html/structmlx_1_1core_1_1detail_1_1_logical_not.html @@ -0,0 +1,130 @@ + + + + + + + +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 new file mode 100644 index 000000000..dca012ef0 --- /dev/null +++ b/docs/build/html/structmlx_1_1core_1_1detail_1_1_logical_or-members.html @@ -0,0 +1,91 @@ + + + + + + + +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 new file mode 100644 index 000000000..1543da58b --- /dev/null +++ b/docs/build/html/structmlx_1_1core_1_1detail_1_1_logical_or.html @@ -0,0 +1,134 @@ + + + + + + + +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 new file mode 100644 index 000000000..7c3e85a14 --- /dev/null +++ b/docs/build/html/structmlx_1_1core_1_1detail_1_1_maximum-members.html @@ -0,0 +1,92 @@ + + + + + + + +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 new file mode 100644 index 000000000..992867c81 --- /dev/null +++ b/docs/build/html/structmlx_1_1core_1_1detail_1_1_maximum.html @@ -0,0 +1,168 @@ + + + + + + + +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 new file mode 100644 index 000000000..164b35103 --- /dev/null +++ b/docs/build/html/structmlx_1_1core_1_1detail_1_1_minimum-members.html @@ -0,0 +1,92 @@ + + + + + + + +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 new file mode 100644 index 000000000..cb4f049d5 --- /dev/null +++ b/docs/build/html/structmlx_1_1core_1_1detail_1_1_minimum.html @@ -0,0 +1,168 @@ + + + + + + + +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 new file mode 100644 index 000000000..90b90facd --- /dev/null +++ b/docs/build/html/structmlx_1_1core_1_1detail_1_1_multiply-members.html @@ -0,0 +1,91 @@ + + + + + + + +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 new file mode 100644 index 000000000..df2e8f0ab --- /dev/null +++ b/docs/build/html/structmlx_1_1core_1_1detail_1_1_multiply.html @@ -0,0 +1,134 @@ + + + + + + + +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 new file mode 100644 index 000000000..e3b7bf980 --- /dev/null +++ b/docs/build/html/structmlx_1_1core_1_1detail_1_1_na_n_equal-members.html @@ -0,0 +1,91 @@ + + + + + + + +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 new file mode 100644 index 000000000..586f9db7f --- /dev/null +++ b/docs/build/html/structmlx_1_1core_1_1detail_1_1_na_n_equal.html @@ -0,0 +1,134 @@ + + + + + + + +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 new file mode 100644 index 000000000..2f4ea3045 --- /dev/null +++ b/docs/build/html/structmlx_1_1core_1_1detail_1_1_negative-members.html @@ -0,0 +1,91 @@ + + + + + + + +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 new file mode 100644 index 000000000..c2aa3fb66 --- /dev/null +++ b/docs/build/html/structmlx_1_1core_1_1detail_1_1_negative.html @@ -0,0 +1,130 @@ + + + + + + + +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 new file mode 100644 index 000000000..8c9d2ff08 --- /dev/null +++ b/docs/build/html/structmlx_1_1core_1_1detail_1_1_not_equal-members.html @@ -0,0 +1,91 @@ + + + + + + + +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 new file mode 100644 index 000000000..0163000aa --- /dev/null +++ b/docs/build/html/structmlx_1_1core_1_1detail_1_1_not_equal.html @@ -0,0 +1,134 @@ + + + + + + + +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 new file mode 100644 index 000000000..df3bd3679 --- /dev/null +++ b/docs/build/html/structmlx_1_1core_1_1detail_1_1_power-members.html @@ -0,0 +1,92 @@ + + + + + + + +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 new file mode 100644 index 000000000..96586d941 --- /dev/null +++ b/docs/build/html/structmlx_1_1core_1_1detail_1_1_power.html @@ -0,0 +1,168 @@ + + + + + + + +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 new file mode 100644 index 000000000..4dd27b25c --- /dev/null +++ b/docs/build/html/structmlx_1_1core_1_1detail_1_1_remainder-members.html @@ -0,0 +1,94 @@ + + + + + + + +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 new file mode 100644 index 000000000..e541b4d92 --- /dev/null +++ b/docs/build/html/structmlx_1_1core_1_1detail_1_1_remainder.html @@ -0,0 +1,233 @@ + + + + + + + +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_right_shift-members.html b/docs/build/html/structmlx_1_1core_1_1detail_1_1_right_shift-members.html new file mode 100644 index 000000000..e8776dffc --- /dev/null +++ b/docs/build/html/structmlx_1_1core_1_1detail_1_1_right_shift-members.html @@ -0,0 +1,91 @@ + + + + + + + +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 new file mode 100644 index 000000000..7c531e69e --- /dev/null +++ b/docs/build/html/structmlx_1_1core_1_1detail_1_1_right_shift.html @@ -0,0 +1,134 @@ + + + + + + + +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 new file mode 100644 index 000000000..1effcf1f2 --- /dev/null +++ b/docs/build/html/structmlx_1_1core_1_1detail_1_1_round-members.html @@ -0,0 +1,92 @@ + + + + + + + +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 new file mode 100644 index 000000000..5f2c22be2 --- /dev/null +++ b/docs/build/html/structmlx_1_1core_1_1detail_1_1_round.html @@ -0,0 +1,157 @@ + + + + + + + +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 new file mode 100644 index 000000000..2e3fa4c4e --- /dev/null +++ b/docs/build/html/structmlx_1_1core_1_1detail_1_1_rsqrt-members.html @@ -0,0 +1,91 @@ + + + + + + + +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 new file mode 100644 index 000000000..74bbe8a9d --- /dev/null +++ b/docs/build/html/structmlx_1_1core_1_1detail_1_1_rsqrt.html @@ -0,0 +1,130 @@ + + + + + + + +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 new file mode 100644 index 000000000..bf51cb2c6 --- /dev/null +++ b/docs/build/html/structmlx_1_1core_1_1detail_1_1_select-members.html @@ -0,0 +1,91 @@ + + + + + + + +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 new file mode 100644 index 000000000..aee56a83f --- /dev/null +++ b/docs/build/html/structmlx_1_1core_1_1detail_1_1_select.html @@ -0,0 +1,139 @@ + + + + + + + +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 new file mode 100644 index 000000000..1a7f8a74a --- /dev/null +++ b/docs/build/html/structmlx_1_1core_1_1detail_1_1_sigmoid-members.html @@ -0,0 +1,91 @@ + + + + + + + +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 new file mode 100644 index 000000000..76b7b69a6 --- /dev/null +++ b/docs/build/html/structmlx_1_1core_1_1detail_1_1_sigmoid.html @@ -0,0 +1,130 @@ + + + + + + + +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 new file mode 100644 index 000000000..2f0f73479 --- /dev/null +++ b/docs/build/html/structmlx_1_1core_1_1detail_1_1_sign-members.html @@ -0,0 +1,95 @@ + + + + + + + +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
        + + + + 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 new file mode 100644 index 000000000..4e5eafa31 --- /dev/null +++ b/docs/build/html/structmlx_1_1core_1_1detail_1_1_sign.html @@ -0,0 +1,238 @@ + + + + + + + +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)
         
        +

        Member Function Documentation

        + +

        ◆ operator()() [1/5]

        + +
        +
        +
        +template<typename T >
        + + + + + +
        + + + + + + + +
        T mlx::core::detail::Sign::operator() (T x)
        +
        +inline
        +
        + +
        +
        + +

        ◆ operator()() [2/5]

        + +
        +
        + + + + + +
        + + + + + + + +
        uint16_t mlx::core::detail::Sign::operator() (uint16_t x)
        +
        +inline
        +
        + +
        +
        + +

        ◆ operator()() [3/5]

        + +
        +
        + + + + + +
        + + + + + + + +
        uint32_t mlx::core::detail::Sign::operator() (uint32_t x)
        +
        +inline
        +
        + +
        +
        + +

        ◆ operator()() [4/5]

        + +
        +
        + + + + + +
        + + + + + + + +
        uint64_t mlx::core::detail::Sign::operator() (uint64_t x)
        +
        +inline
        +
        + +
        +
        + +

        ◆ operator()() [5/5]

        + +
        +
        + + + + + +
        + + + + + + + +
        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 new file mode 100644 index 000000000..8a1a77bbb --- /dev/null +++ b/docs/build/html/structmlx_1_1core_1_1detail_1_1_sin-members.html @@ -0,0 +1,91 @@ + + + + + + + +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 new file mode 100644 index 000000000..432780f5b --- /dev/null +++ b/docs/build/html/structmlx_1_1core_1_1detail_1_1_sin.html @@ -0,0 +1,130 @@ + + + + + + + +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 new file mode 100644 index 000000000..26761f194 --- /dev/null +++ b/docs/build/html/structmlx_1_1core_1_1detail_1_1_sinh-members.html @@ -0,0 +1,91 @@ + + + + + + + +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 new file mode 100644 index 000000000..2ac727043 --- /dev/null +++ b/docs/build/html/structmlx_1_1core_1_1detail_1_1_sinh.html @@ -0,0 +1,130 @@ + + + + + + + +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 new file mode 100644 index 000000000..3815ea15b --- /dev/null +++ b/docs/build/html/structmlx_1_1core_1_1detail_1_1_sqrt-members.html @@ -0,0 +1,91 @@ + + + + + + + +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 new file mode 100644 index 000000000..44177f1bf --- /dev/null +++ b/docs/build/html/structmlx_1_1core_1_1detail_1_1_sqrt.html @@ -0,0 +1,130 @@ + + + + + + + +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 new file mode 100644 index 000000000..284830b49 --- /dev/null +++ b/docs/build/html/structmlx_1_1core_1_1detail_1_1_square-members.html @@ -0,0 +1,91 @@ + + + + + + + +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 new file mode 100644 index 000000000..48681741c --- /dev/null +++ b/docs/build/html/structmlx_1_1core_1_1detail_1_1_square.html @@ -0,0 +1,130 @@ + + + + + + + +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 new file mode 100644 index 000000000..9b69b2573 --- /dev/null +++ b/docs/build/html/structmlx_1_1core_1_1detail_1_1_subtract-members.html @@ -0,0 +1,91 @@ + + + + + + + +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 new file mode 100644 index 000000000..7d16892fe --- /dev/null +++ b/docs/build/html/structmlx_1_1core_1_1detail_1_1_subtract.html @@ -0,0 +1,134 @@ + + + + + + + +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 new file mode 100644 index 000000000..905defc12 --- /dev/null +++ b/docs/build/html/structmlx_1_1core_1_1detail_1_1_tan-members.html @@ -0,0 +1,91 @@ + + + + + + + +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 new file mode 100644 index 000000000..eb3408233 --- /dev/null +++ b/docs/build/html/structmlx_1_1core_1_1detail_1_1_tan.html @@ -0,0 +1,130 @@ + + + + + + + +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 new file mode 100644 index 000000000..e6f9f0ccf --- /dev/null +++ b/docs/build/html/structmlx_1_1core_1_1detail_1_1_tanh-members.html @@ -0,0 +1,91 @@ + + + + + + + +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 new file mode 100644 index 000000000..62c3b2e63 --- /dev/null +++ b/docs/build/html/structmlx_1_1core_1_1detail_1_1_tanh.html @@ -0,0 +1,130 @@ + + + + + + + +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 new file mode 100644 index 000000000..4fa7b8ac0 --- /dev/null +++ b/docs/build/html/structmlx_1_1core_1_1distributed_1_1_group-members.html @@ -0,0 +1,95 @@ + + + + + + + +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 new file mode 100644 index 000000000..0ab8eb588 --- /dev/null +++ b/docs/build/html/structmlx_1_1core_1_1distributed_1_1_group.html @@ -0,0 +1,227 @@ + + + + + + + +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_1metal_1_1_command_encoder-members.html b/docs/build/html/structmlx_1_1core_1_1metal_1_1_command_encoder-members.html new file mode 100644 index 000000000..1623eccac --- /dev/null +++ b/docs/build/html/structmlx_1_1core_1_1metal_1_1_command_encoder-members.html @@ -0,0 +1,100 @@ + + + + + + + +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::CommandEncoderinline
        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::CommandEncoderinline
        set_output_array(array &a, int idx, int64_t offset=0)mlx::core::metal::CommandEncoderinline
        start_concurrent()mlx::core::metal::CommandEncoderinline
        ~CommandEncoder()mlx::core::metal::CommandEncoderinline
        + + + + 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 new file mode 100644 index 000000000..c9d51a5d4 --- /dev/null +++ b/docs/build/html/structmlx_1_1core_1_1metal_1_1_command_encoder.html @@ -0,0 +1,387 @@ + + + + + + + +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)
        +
        +inline
        +
        + +
        +
        + +

        ◆ CommandEncoder() [2/2]

        + +
        +
        + + + + + +
        + + + + + + + +
        mlx::core::metal::CommandEncoder::CommandEncoder (const CommandEncoder & )
        +
        +delete
        +
        + +
        +
        + +

        ◆ ~CommandEncoder()

        + +
        +
        + + + + + +
        + + + + + + + +
        mlx::core::metal::CommandEncoder::~CommandEncoder ()
        +
        +inline
        +
        + +
        +
        +

        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 )
        +
        +inline
        +
        + +
        +
        + +

        ◆ set_output_array()

        + +
        +
        + + + + + +
        + + + + + + + + + + + + + + + + +
        void mlx::core::metal::CommandEncoder::set_output_array (array & a,
        int idx,
        int64_t offset = 0 )
        +
        +inline
        +
        + +
        +
        + +

        ◆ 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 new file mode 100644 index 000000000..cdd48d612 --- /dev/null +++ b/docs/build/html/structmlx_1_1core_1_1metal_1_1_command_encoder_1_1_concurrent_context-members.html @@ -0,0 +1,92 @@ + + + + + + + +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 new file mode 100644 index 000000000..265b169fd --- /dev/null +++ b/docs/build/html/structmlx_1_1core_1_1metal_1_1_command_encoder_1_1_concurrent_context.html @@ -0,0 +1,154 @@ + + + + + + + +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 new file mode 100644 index 000000000..050505804 --- /dev/null +++ b/docs/build/html/structmlx_1_1core_1_1scheduler_1_1_stream_thread-members.html @@ -0,0 +1,100 @@ + + + + + + + +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 new file mode 100644 index 000000000..875972b1b --- /dev/null +++ b/docs/build/html/structmlx_1_1core_1_1scheduler_1_1_stream_thread.html @@ -0,0 +1,313 @@ + + + + + + + +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 new file mode 100644 index 000000000..35bc37936 --- /dev/null +++ b/docs/build/html/structmlx_1_1steel_1_1_accum_helper-members.html @@ -0,0 +1,91 @@ + + + + + + + +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 new file mode 100644 index 000000000..6b04ad98b --- /dev/null +++ b/docs/build/html/structmlx_1_1steel_1_1_accum_helper.html @@ -0,0 +1,118 @@ + + + + + + + +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 new file mode 100644 index 000000000..655437fdb --- /dev/null +++ b/docs/build/html/structmlx_1_1steel_1_1_block_loader-members.html @@ -0,0 +1,104 @@ + + + + + + + +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 new file mode 100644 index 000000000..46761eb32 --- /dev/null +++ b/docs/build/html/structmlx_1_1steel_1_1_block_loader.html @@ -0,0 +1,441 @@ + + + + + + + +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 new file mode 100644 index 000000000..4020cf8ac --- /dev/null +++ b/docs/build/html/structmlx_1_1steel_1_1_block_loader_1_1_read_vector-members.html @@ -0,0 +1,91 @@ + + + + + + + +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 new file mode 100644 index 000000000..3db91aa2d --- /dev/null +++ b/docs/build/html/structmlx_1_1steel_1_1_block_loader_1_1_read_vector.html @@ -0,0 +1,118 @@ + + + + + + + +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 new file mode 100644 index 000000000..93e5dd752 --- /dev/null +++ b/docs/build/html/structmlx_1_1steel_1_1_block_m_m_a-members.html @@ -0,0 +1,118 @@ + + + + + + + +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 new file mode 100644 index 000000000..23a35c0e5 --- /dev/null +++ b/docs/build/html/structmlx_1_1steel_1_1_block_m_m_a.html @@ -0,0 +1,833 @@ + + + + + + + +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 new file mode 100644 index 000000000..3ac1f2fc7 --- /dev/null +++ b/docs/build/html/structmlx_1_1steel_1_1_block_swizzle-members.html @@ -0,0 +1,91 @@ + + + + + + + +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 new file mode 100644 index 000000000..b5b5929ce --- /dev/null +++ b/docs/build/html/structmlx_1_1steel_1_1_block_swizzle.html @@ -0,0 +1,131 @@ + + + + + + + +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 new file mode 100644 index 000000000..111cf2ce0 --- /dev/null +++ b/docs/build/html/structmlx_1_1steel_1_1_channel_helper-members.html @@ -0,0 +1,93 @@ + + + + + + + +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 new file mode 100644 index 000000000..81e41a0bb --- /dev/null +++ b/docs/build/html/structmlx_1_1steel_1_1_channel_helper.html @@ -0,0 +1,154 @@ + + + + + + + +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 new file mode 100644 index 000000000..0ccf2d0f1 --- /dev/null +++ b/docs/build/html/structmlx_1_1steel_1_1_channel_helper_3_011_01_4-members.html @@ -0,0 +1,93 @@ + + + + + + + +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 new file mode 100644 index 000000000..e387023e1 --- /dev/null +++ b/docs/build/html/structmlx_1_1steel_1_1_channel_helper_3_011_01_4.html @@ -0,0 +1,148 @@ + + + + + + + +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 new file mode 100644 index 000000000..42947a045 --- /dev/null +++ b/docs/build/html/structmlx_1_1steel_1_1_channel_helper_3_012_01_4-members.html @@ -0,0 +1,93 @@ + + + + + + + +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 new file mode 100644 index 000000000..783e7335e --- /dev/null +++ b/docs/build/html/structmlx_1_1steel_1_1_channel_helper_3_012_01_4.html @@ -0,0 +1,148 @@ + + + + + + + +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 new file mode 100644 index 000000000..f24ec5a4b --- /dev/null +++ b/docs/build/html/structmlx_1_1steel_1_1_channel_helper_3_013_01_4-members.html @@ -0,0 +1,93 @@ + + + + + + + +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 new file mode 100644 index 000000000..0b3a02231 --- /dev/null +++ b/docs/build/html/structmlx_1_1steel_1_1_channel_helper_3_013_01_4.html @@ -0,0 +1,148 @@ + + + + + + + +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 new file mode 100644 index 000000000..fd1370d9c --- /dev/null +++ b/docs/build/html/structmlx_1_1steel_1_1_channel_helper_3_014_01_4-members.html @@ -0,0 +1,93 @@ + + + + + + + +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 new file mode 100644 index 000000000..dd06122ce --- /dev/null +++ b/docs/build/html/structmlx_1_1steel_1_1_channel_helper_3_014_01_4.html @@ -0,0 +1,148 @@ + + + + + + + +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 new file mode 100644 index 000000000..2178a6517 --- /dev/null +++ b/docs/build/html/structmlx_1_1steel_1_1_conv2_d_general_base_info-members.html @@ -0,0 +1,92 @@ + + + + + + + +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 new file mode 100644 index 000000000..2534335b5 --- /dev/null +++ b/docs/build/html/structmlx_1_1steel_1_1_conv2_d_general_base_info.html @@ -0,0 +1,132 @@ + + + + + + + +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 new file mode 100644 index 000000000..2ad657272 --- /dev/null +++ b/docs/build/html/structmlx_1_1steel_1_1_conv2_d_general_jump_params-members.html @@ -0,0 +1,98 @@ + + + + + + + +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 new file mode 100644 index 000000000..6e4d3db7c --- /dev/null +++ b/docs/build/html/structmlx_1_1steel_1_1_conv2_d_general_jump_params.html @@ -0,0 +1,228 @@ + + + + + + + +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 new file mode 100644 index 000000000..8099a421a --- /dev/null +++ b/docs/build/html/structmlx_1_1steel_1_1_conv2_d_input_block_loader_general-members.html @@ -0,0 +1,114 @@ + + + + + + + +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 new file mode 100644 index 000000000..457b2d66d --- /dev/null +++ b/docs/build/html/structmlx_1_1steel_1_1_conv2_d_input_block_loader_general.html @@ -0,0 +1,610 @@ + + + + + + + +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 new file mode 100644 index 000000000..cf5bc5321 --- /dev/null +++ b/docs/build/html/structmlx_1_1steel_1_1_conv2_d_input_block_loader_large_filter-members.html @@ -0,0 +1,112 @@ + + + + + + + +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 new file mode 100644 index 000000000..2b59f9d31 --- /dev/null +++ b/docs/build/html/structmlx_1_1steel_1_1_conv2_d_input_block_loader_large_filter.html @@ -0,0 +1,564 @@ + + + + + + + +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 new file mode 100644 index 000000000..0f29e2335 --- /dev/null +++ b/docs/build/html/structmlx_1_1steel_1_1_conv2_d_input_block_loader_small_channels-members.html @@ -0,0 +1,111 @@ + + + + + + + +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 new file mode 100644 index 000000000..b6f145cbf --- /dev/null +++ b/docs/build/html/structmlx_1_1steel_1_1_conv2_d_input_block_loader_small_channels.html @@ -0,0 +1,546 @@ + + + + + + + +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 new file mode 100644 index 000000000..8e261e067 --- /dev/null +++ b/docs/build/html/structmlx_1_1steel_1_1_conv2_d_input_block_loader_small_filter-members.html @@ -0,0 +1,112 @@ + + + + + + + +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 new file mode 100644 index 000000000..5bf10b36b --- /dev/null +++ b/docs/build/html/structmlx_1_1steel_1_1_conv2_d_input_block_loader_small_filter.html @@ -0,0 +1,569 @@ + + + + + + + +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 new file mode 100644 index 000000000..cb49f9616 --- /dev/null +++ b/docs/build/html/structmlx_1_1steel_1_1_conv2_d_weight_block_loader-members.html @@ -0,0 +1,110 @@ + + + + + + + +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 new file mode 100644 index 000000000..62e03ac1b --- /dev/null +++ b/docs/build/html/structmlx_1_1steel_1_1_conv2_d_weight_block_loader.html @@ -0,0 +1,532 @@ + + + + + + + +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 new file mode 100644 index 000000000..a057f7721 --- /dev/null +++ b/docs/build/html/structmlx_1_1steel_1_1_conv2_d_weight_block_loader_general-members.html @@ -0,0 +1,113 @@ + + + + + + + +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 new file mode 100644 index 000000000..7dacb5ec2 --- /dev/null +++ b/docs/build/html/structmlx_1_1steel_1_1_conv2_d_weight_block_loader_general.html @@ -0,0 +1,596 @@ + + + + + + + +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 new file mode 100644 index 000000000..c47fe955d --- /dev/null +++ b/docs/build/html/structmlx_1_1steel_1_1_conv2_d_weight_block_loader_small_channels-members.html @@ -0,0 +1,110 @@ + + + + + + + +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 new file mode 100644 index 000000000..fa50ba06c --- /dev/null +++ b/docs/build/html/structmlx_1_1steel_1_1_conv2_d_weight_block_loader_small_channels.html @@ -0,0 +1,528 @@ + + + + + + + +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 new file mode 100644 index 000000000..ee6459541 --- /dev/null +++ b/docs/build/html/structmlx_1_1steel_1_1_g_e_m_m_add_m_m_params-members.html @@ -0,0 +1,95 @@ + + + + + + + +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 new file mode 100644 index 000000000..1be110b23 --- /dev/null +++ b/docs/build/html/structmlx_1_1steel_1_1_g_e_m_m_add_m_m_params.html @@ -0,0 +1,180 @@ + + + + + + + +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 new file mode 100644 index 000000000..a49dfb5c5 --- /dev/null +++ b/docs/build/html/structmlx_1_1steel_1_1_g_e_m_m_kernel-members.html @@ -0,0 +1,101 @@ + + + + + + + +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 new file mode 100644 index 000000000..697045361 --- /dev/null +++ b/docs/build/html/structmlx_1_1steel_1_1_g_e_m_m_kernel.html @@ -0,0 +1,456 @@ + + + + + + + +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 new file mode 100644 index 000000000..5eecb8fa9 --- /dev/null +++ b/docs/build/html/structmlx_1_1steel_1_1_g_e_m_m_params-members.html @@ -0,0 +1,104 @@ + + + + + + + +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 new file mode 100644 index 000000000..ce3db346f --- /dev/null +++ b/docs/build/html/structmlx_1_1steel_1_1_g_e_m_m_params.html @@ -0,0 +1,324 @@ + + + + + + + +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 new file mode 100644 index 000000000..88655c683 --- /dev/null +++ b/docs/build/html/structmlx_1_1steel_1_1_g_e_m_m_spilt_k_params-members.html @@ -0,0 +1,102 @@ + + + + + + + +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 new file mode 100644 index 000000000..c54618c13 --- /dev/null +++ b/docs/build/html/structmlx_1_1steel_1_1_g_e_m_m_spilt_k_params.html @@ -0,0 +1,292 @@ + + + + + + + +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 new file mode 100644 index 000000000..b3483a91f --- /dev/null +++ b/docs/build/html/structmlx_1_1steel_1_1_implicit_gemm_conv2_d_params-members.html @@ -0,0 +1,100 @@ + + + + + + + +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 new file mode 100644 index 000000000..ee3319815 --- /dev/null +++ b/docs/build/html/structmlx_1_1steel_1_1_implicit_gemm_conv2_d_params.html @@ -0,0 +1,260 @@ + + + + + + + +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 new file mode 100644 index 000000000..ecb9d456a --- /dev/null +++ b/docs/build/html/structmlx_1_1steel_1_1_loop_alignment.html @@ -0,0 +1,92 @@ + + + + + + + +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 new file mode 100644 index 000000000..c8522e02d --- /dev/null +++ b/docs/build/html/structmlx_1_1steel_1_1_transform_add-members.html @@ -0,0 +1,93 @@ + + + + + + + +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 new file mode 100644 index 000000000..caf29e303 --- /dev/null +++ b/docs/build/html/structmlx_1_1steel_1_1_transform_add.html @@ -0,0 +1,200 @@ + + + + + + + +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 new file mode 100644 index 000000000..c199d37dd --- /dev/null +++ b/docs/build/html/structmlx_1_1steel_1_1_transform_axpby-members.html @@ -0,0 +1,95 @@ + + + + + + + +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 new file mode 100644 index 000000000..c69d45fba --- /dev/null +++ b/docs/build/html/structmlx_1_1steel_1_1_transform_axpby.html @@ -0,0 +1,241 @@ + + + + + + + +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 new file mode 100644 index 000000000..b3e22547b --- /dev/null +++ b/docs/build/html/structmlx_1_1steel_1_1_transform_none-members.html @@ -0,0 +1,92 @@ + + + + + + + +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 new file mode 100644 index 000000000..08618cd46 --- /dev/null +++ b/docs/build/html/structmlx_1_1steel_1_1_transform_none.html @@ -0,0 +1,162 @@ + + + + + + + +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 new file mode 100644 index 000000000..79653a083 --- /dev/null +++ b/docs/build/html/structmlx__atomic-members.html @@ -0,0 +1,87 @@ + + + + + + + +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 new file mode 100644 index 000000000..ffc60d7de --- /dev/null +++ b/docs/build/html/structmlx__atomic.html @@ -0,0 +1,114 @@ + + + + + + + +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 new file mode 100644 index 000000000..69a0bbe6d --- /dev/null +++ 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 @@ -0,0 +1,87 @@ + + + + + + + +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 new file mode 100644 index 000000000..b444bac8e --- /dev/null +++ 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 @@ -0,0 +1,114 @@ + + + + + + + +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 new file mode 100644 index 000000000..4f3be94a7 --- /dev/null +++ b/docs/build/html/structpocketfft_1_1detail_1_1_exec_c2_c-members.html @@ -0,0 +1,92 @@ + + + + + + + +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 new file mode 100644 index 000000000..f32367520 --- /dev/null +++ b/docs/build/html/structpocketfft_1_1detail_1_1_exec_c2_c.html @@ -0,0 +1,175 @@ + + + + + + + +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 new file mode 100644 index 000000000..2dc7efb24 --- /dev/null +++ b/docs/build/html/structpocketfft_1_1detail_1_1_exec_dcst-members.html @@ -0,0 +1,94 @@ + + + + + + + +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 new file mode 100644 index 000000000..30ece922d --- /dev/null +++ b/docs/build/html/structpocketfft_1_1detail_1_1_exec_dcst.html @@ -0,0 +1,207 @@ + + + + + + + +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 new file mode 100644 index 000000000..ce459d088 --- /dev/null +++ b/docs/build/html/structpocketfft_1_1detail_1_1_exec_hartley-members.html @@ -0,0 +1,91 @@ + + + + + + + +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 new file mode 100644 index 000000000..180c3580a --- /dev/null +++ b/docs/build/html/structpocketfft_1_1detail_1_1_exec_hartley.html @@ -0,0 +1,154 @@ + + + + + + + +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 new file mode 100644 index 000000000..bdb555844 --- /dev/null +++ b/docs/build/html/structpocketfft_1_1detail_1_1_exec_r2_r-members.html @@ -0,0 +1,93 @@ + + + + + + + +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 new file mode 100644 index 000000000..993770fa0 --- /dev/null +++ b/docs/build/html/structpocketfft_1_1detail_1_1_exec_r2_r.html @@ -0,0 +1,191 @@ + + + + + + + +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 new file mode 100644 index 000000000..54aaab0a0 --- /dev/null +++ b/docs/build/html/structpocketfft_1_1detail_1_1_v_l_e_n-members.html @@ -0,0 +1,91 @@ + + + + + + + +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 new file mode 100644 index 000000000..1881e2352 --- /dev/null +++ b/docs/build/html/structpocketfft_1_1detail_1_1_v_l_e_n.html @@ -0,0 +1,126 @@ + + + + + + + +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 new file mode 100644 index 000000000..ed027f31d --- /dev/null +++ b/docs/build/html/structpocketfft_1_1detail_1_1_v_t_y_p_e.html @@ -0,0 +1,92 @@ + + + + + + + +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 new file mode 100644 index 000000000..8c5060122 --- /dev/null +++ b/docs/build/html/structpocketfft_1_1detail_1_1add__vec-members.html @@ -0,0 +1,91 @@ + + + + + + + +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 new file mode 100644 index 000000000..ad4c69ec8 --- /dev/null +++ b/docs/build/html/structpocketfft_1_1detail_1_1add__vec.html @@ -0,0 +1,118 @@ + + + + + + + +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 new file mode 100644 index 000000000..80a761dd0 --- /dev/null +++ b/docs/build/html/structpocketfft_1_1detail_1_1add__vec_3_01cmplx_3_01_t_01_4_01_4-members.html @@ -0,0 +1,91 @@ + + + + + + + +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 new file mode 100644 index 000000000..793e4799f --- /dev/null +++ b/docs/build/html/structpocketfft_1_1detail_1_1add__vec_3_01cmplx_3_01_t_01_4_01_4.html @@ -0,0 +1,118 @@ + + + + + + + +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 new file mode 100644 index 000000000..c5b633d69 --- /dev/null +++ b/docs/build/html/structpocketfft_1_1detail_1_1cmplx-members.html @@ -0,0 +1,106 @@ + + + + + + + +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 new file mode 100644 index 000000000..5cb72abd0 --- /dev/null +++ b/docs/build/html/structpocketfft_1_1detail_1_1cmplx.html @@ -0,0 +1,588 @@ + + + + + + + +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 new file mode 100644 index 000000000..250dcbc2c --- /dev/null +++ b/docs/build/html/structpocketfft_1_1detail_1_1threading_1_1aligned__allocator-members.html @@ -0,0 +1,95 @@ + + + + + + + +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 new file mode 100644 index 000000000..3ecf135a1 --- /dev/null +++ b/docs/build/html/structpocketfft_1_1detail_1_1threading_1_1aligned__allocator.html @@ -0,0 +1,247 @@ + + + + + + + +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 new file mode 100644 index 000000000..9f49cc91d --- /dev/null +++ b/docs/build/html/structpocketfft_1_1detail_1_1util-members.html @@ -0,0 +1,99 @@ + + + + + + + +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 new file mode 100644 index 000000000..b94359524 --- /dev/null +++ b/docs/build/html/structpocketfft_1_1detail_1_1util.html @@ -0,0 +1,409 @@ + + + + + + + +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 new file mode 100644 index 0000000000000000000000000000000000000000..3b443fc62892114406e3d399421b2a881b897acc GIT binary patch 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* literal 0 HcmV?d00001 diff --git a/docs/build/html/sync_on.png b/docs/build/html/sync_on.png new file mode 100644 index 0000000000000000000000000000000000000000..e08320fb64e6fa33b573005ed6d8fe294e19db76 GIT binary patch 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 literal 0 HcmV?d00001 diff --git a/docs/build/html/tab_a.png b/docs/build/html/tab_a.png new file mode 100644 index 0000000000000000000000000000000000000000..3b725c41c5a527a3a3e40097077d0e206a681247 GIT binary patch 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 literal 0 HcmV?d00001 diff --git a/docs/build/html/tab_ad.png b/docs/build/html/tab_ad.png new file mode 100644 index 0000000000000000000000000000000000000000..e34850acfc24be58da6d2fd1ccc6b29cc84fe34d GIT binary patch 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( literal 0 HcmV?d00001 diff --git a/docs/build/html/tab_s.png b/docs/build/html/tab_s.png new file mode 100644 index 0000000000000000000000000000000000000000..ab478c95b67371d700a20869f7de1ddd73522d50 GIT binary patch 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^ literal 0 HcmV?d00001 diff --git a/docs/build/html/tab_sd.png b/docs/build/html/tab_sd.png new file mode 100644 index 0000000000000000000000000000000000000000..757a565ced4730f85c833fb2547d8e199ae68f19 GIT binary patch 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>% literal 0 HcmV?d00001 diff --git a/docs/build/html/tabs.css b/docs/build/html/tabs.css new file mode 100644 index 000000000..fe4854aa5 --- /dev/null +++ b/docs/build/html/tabs.css @@ -0,0 +1 @@ +.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 new file mode 100644 index 000000000..aeef3e256 --- /dev/null +++ b/docs/build/html/ternary__ops_8h.html @@ -0,0 +1,97 @@ + + + + + + + +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 new file mode 100644 index 000000000..683831d6c --- /dev/null +++ b/docs/build/html/ternary__ops_8h_source.html @@ -0,0 +1,108 @@ + + + + + + + +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/threefry_8h.html b/docs/build/html/threefry_8h.html new file mode 100644 index 000000000..5c706f9b8 --- /dev/null +++ b/docs/build/html/threefry_8h.html @@ -0,0 +1,110 @@ + + + + + + + +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 new file mode 100644 index 000000000..865a11f48 --- /dev/null +++ b/docs/build/html/threefry_8h_source.html @@ -0,0 +1,111 @@ + + + + + + + +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 new file mode 100644 index 000000000..5a1746cd6 --- /dev/null +++ b/docs/build/html/topics.html @@ -0,0 +1,88 @@ + + + + + + + +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 new file mode 100644 index 000000000..baab22ade --- /dev/null +++ b/docs/build/html/transforms_8h.html @@ -0,0 +1,172 @@ + + + + + + + +MLX: mlx/transforms.h File Reference + + + + + + + + + + + +
        +
        + + + + + + +
        +
        MLX +
        +
        +
        + + + + + + + + +
        +
        + + +
        +
        +
        +
        +
        +
        Loading...
        +
        Searching...
        +
        No Matches
        +
        +
        +
        +
        + + +
        +
        + +
        transforms.h File Reference
        +
        +
        +
        #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_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 the results of calling fun with args but if their vjp is computed it will be computed by fun_vjp.
         
        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 new file mode 100644 index 000000000..d840d694b --- /dev/null +++ b/docs/build/html/transforms_8h_source.html @@ -0,0 +1,248 @@ + + + + + + + +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 "mlx/array.h"
        +
        6
        +
        7namespace mlx::core {
        +
        8
        +
        9void async_eval(std::vector<array> outputs);
        +
        10
        +
        11void eval(std::vector<array> outputs);
        +
        12
        +
        13template <typename... Arrays, typename = enable_for_arrays_t<Arrays...>>
        +
        +
        14void eval(Arrays&&... outputs) {
        +
        15 eval(std::vector<array>{std::forward<Arrays>(outputs)...});
        +
        16}
        +
        +
        17
        +
        25std::pair<std::vector<array>, std::vector<array>> vjp(
        +
        26 const std::function<std::vector<array>(const std::vector<array>&)>& fun,
        +
        27 const std::vector<array>& primals,
        +
        28 const std::vector<array>& cotangents);
        +
        29
        +
        33std::pair<array, array> vjp(
        +
        34 const std::function<array(const array&)>& fun,
        +
        35 const array& primal,
        +
        36 const array& cotangent);
        +
        37
        +
        45std::pair<std::vector<array>, std::vector<array>> jvp(
        +
        46 const std::function<std::vector<array>(const std::vector<array>&)>& fun,
        +
        47 const std::vector<array>& primals,
        +
        48 const std::vector<array>& tangents);
        +
        49
        +
        53std::pair<array, array> jvp(
        +
        54 const std::function<array(const array&)>& fun,
        +
        55 const array& primal,
        +
        56 const array& tangent);
        +
        57
        +
        58// Return type of general value_and_grad: a function which takes an input
        +
        59// vector of arrays and returns a pair of vectors of arrays one for the
        +
        60// values and one for the gradients wrt the first value.
        + +
        62 std::function<std::pair<std::vector<array>, std::vector<array>>(
        +
        63 const std::vector<array>&)>;
        +
        64using SimpleValueAndGradFn = std::function<std::pair<array, std::vector<array>>(
        +
        65 const std::vector<array>&)>;
        +
        66
        + +
        72 const std::function<std::vector<array>(const std::vector<array>&)>& fun,
        +
        73 const std::vector<int>& argnums);
        +
        74
        +
        + +
        80 const std::function<std::vector<array>(const std::vector<array>&)>& fun,
        +
        81 int argnum = 0) {
        +
        82 return value_and_grad(fun, std::vector<int>{argnum});
        +
        83}
        +
        +
        84
        +
        +
        89std::function<std::pair<array, array>(const array&)> inline value_and_grad(
        +
        90 const std::function<array(const array&)>& fun) {
        +
        91 return [fun](auto inputs) { return vjp(fun, inputs, array(1.0f)); };
        +
        92}
        +
        +
        93
        +
        + +
        95 const std::function<array(const std::vector<array>&)>& fun,
        +
        96 const std::vector<int>& argnums) {
        +
        97 return [fun, argnums](auto inputs) {
        +
        98 auto result = value_and_grad(
        +
        99 [fun](auto inputs) { return std::vector<array>{fun(inputs)}; },
        +
        100 argnums)(inputs);
        +
        101
        +
        102 return std::make_pair(result.first[0], result.second);
        +
        103 };
        +
        104}
        +
        +
        105
        +
        + +
        107 const std::function<array(const std::vector<array>&)>& fun,
        +
        108 int argnum = 0) {
        +
        109 return value_and_grad(fun, std::vector<int>{argnum});
        +
        110}
        +
        +
        111
        +
        +
        120std::function<std::vector<array>(const std::vector<array>&)> inline grad(
        +
        121 const std::function<array(const std::vector<array>&)>& fun,
        +
        122 const std::vector<int>& argnums) {
        +
        123 auto fn = value_and_grad(fun, argnums);
        +
        124 return [fn](const std::vector<array>& inputs) { return fn(inputs).second; };
        +
        125}
        +
        +
        126
        +
        +
        135std::function<std::vector<array>(const std::vector<array>&)> inline grad(
        +
        136 const std::function<array(const std::vector<array>&)>& fun,
        +
        137 int argnum = 0) {
        +
        138 return grad(fun, std::vector<int>{argnum});
        +
        139}
        +
        +
        140
        +
        +
        144std::function<array(const array&)> inline grad(
        +
        145 const std::function<array(const array&)>& fun) {
        +
        146 auto fn = value_and_grad(fun);
        +
        147 return [fn](const array& input) { return fn(input).second; };
        +
        148}
        +
        +
        149
        +
        153std::function<array(const array&)> vmap(
        +
        154 const std::function<array(const array&)>& fun,
        +
        155 int in_axis = 0,
        +
        156 int out_axis = 0);
        +
        157
        +
        161std::function<array(const array&, const array&)> vmap(
        +
        162 const std::function<array(const array&, const array&)>& fun,
        +
        163 int in_axis_a = 0,
        +
        164 int in_axis_b = 0,
        +
        165 int out_axis = 0);
        +
        166
        +
        176std::function<std::vector<array>(const std::vector<array>&)> vmap(
        +
        177 const std::function<std::vector<array>(const std::vector<array>&)>& fun,
        +
        178 const std::vector<int>& in_axes = {},
        +
        179 const std::vector<int>& out_axes = {});
        +
        180
        +
        185std::function<std::vector<array>(const std::vector<array>&)> custom_vjp(
        +
        186 std::function<std::vector<array>(const std::vector<array>&)> fun,
        +
        187 std::function<std::vector<array>(
        +
        188 const std::vector<array>&,
        +
        189 const std::vector<array>&,
        +
        190 const std::vector<array>&)> fun_vjp);
        +
        191
        +
        196std::function<std::vector<array>(const std::vector<array>&)> checkpoint(
        +
        197 std::function<std::vector<array>(const std::vector<array>&)> fun);
        +
        198
        +
        199} // 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:64
        +
        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:89
        +
        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 the results of calling fun with args but if their vjp is computed it will be computed by fun_v...
        +
        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:120
        +
        std::function< std::pair< std::vector< array >, std::vector< array > >( const std::vector< array > &)> ValueAndGradFn
        Definition transforms.h:61
        +
        typename std::enable_if_t< is_arrays_v< T... > > enable_for_arrays_t
        Definition array.h:565
        +
        + + + + diff --git a/docs/build/html/transforms__impl_8h.html b/docs/build/html/transforms__impl_8h.html new file mode 100644 index 000000000..4599a7bb7 --- /dev/null +++ b/docs/build/html/transforms__impl_8h.html @@ -0,0 +1,123 @@ + + + + + + + +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
         
        + + + + + + + +

        +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)
         
        + + + +

        +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 new file mode 100644 index 000000000..f218a425b --- /dev/null +++ b/docs/build/html/transforms__impl_8h_source.html @@ -0,0 +1,158 @@ + + + + + + + +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// Create an InTracing object during tracing operations to signify to the rest
        +
        31// of the codebase that we are during tracing so evals should not throw away
        +
        32// the graph.
        +
        +
        33struct InTracing {
        +
        + +
        35 tracing_counter++;
        +
        36 }
        +
        +
        + +
        38 tracing_counter--;
        +
        39 }
        +
        +
        40
        +
        +
        41 static bool in_tracing() {
        +
        42 return tracing_counter > 0;
        +
        43 }
        +
        +
        44
        +
        45 private:
        +
        46 static int tracing_counter;
        +
        47};
        +
        +
        48
        +
        49} // 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)
        +
        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:33
        +
        InTracing()
        Definition transforms_impl.h:34
        +
        ~InTracing()
        Definition transforms_impl.h:37
        +
        static bool in_tracing()
        Definition transforms_impl.h:41
        +
        + + + + diff --git a/docs/build/html/types_2bf16_8h.html b/docs/build/html/types_2bf16_8h.html new file mode 100644 index 000000000..bb8bc95b5 --- /dev/null +++ b/docs/build/html/types_2bf16_8h.html @@ -0,0 +1,743 @@ + + + + + + + +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 new file mode 100644 index 000000000..7206547fd --- /dev/null +++ b/docs/build/html/types_2bf16_8h_source.html @@ -0,0 +1,322 @@ + + + + + + + +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 new file mode 100644 index 000000000..6fc69a1a2 --- /dev/null +++ b/docs/build/html/types_2complex_8h.html @@ -0,0 +1,256 @@ + + + + + + + +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 new file mode 100644 index 000000000..b929b3c0a --- /dev/null +++ b/docs/build/html/types_2complex_8h_source.html @@ -0,0 +1,249 @@ + + + + + + + +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:337
        +
        array operator<=(const array &a, const array &b)
        Definition ops.h:365
        +
        array operator>(const array &a, const array &b)
        Definition ops.h:323
        +
        array operator%(const array &a, const array &b)
        +
        array operator-(const array &a)
        +
        array operator<(const array &a, const array &b)
        Definition ops.h:351
        + +
        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 new file mode 100644 index 000000000..2828379b2 --- /dev/null +++ b/docs/build/html/unary__ops_8h.html @@ -0,0 +1,163 @@ + + + + + + + +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 new file mode 100644 index 000000000..af48359cc --- /dev/null +++ b/docs/build/html/unary__ops_8h_source.html @@ -0,0 +1,807 @@ + + + + + + + +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};
        +
        +
        312
        +
        +
        313struct Sin {
        +
        314 template <typename T>
        +
        +
        315 T operator()(T x) {
        +
        316 return metal::precise::sin(x);
        +
        317 };
        +
        +
        318
        +
        319 template <>
        + +
        325};
        +
        +
        326
        +
        +
        327struct Sinh {
        +
        328 template <typename T>
        +
        +
        329 T operator()(T x) {
        +
        330 return metal::precise::sinh(x);
        +
        331 };
        +
        +
        332
        +
        333 template <>
        + +
        339};
        +
        +
        340
        +
        +
        341struct Square {
        +
        342 template <typename T>
        +
        +
        343 T operator()(T x) {
        +
        344 return x * x;
        +
        345 };
        +
        +
        346};
        +
        +
        347
        +
        +
        348struct Sqrt {
        +
        349 template <typename T>
        +
        +
        350 T operator()(T x) {
        +
        351 return metal::precise::sqrt(x);
        +
        352 };
        +
        +
        353};
        +
        +
        354
        +
        +
        355struct Rsqrt {
        +
        356 template <typename T>
        +
        +
        357 T operator()(T x) {
        +
        358 return metal::precise::rsqrt(x);
        +
        359 };
        +
        +
        360};
        +
        +
        361
        +
        +
        362struct Tan {
        +
        363 template <typename T>
        +
        +
        364 T operator()(T x) {
        +
        365 return metal::precise::tan(x);
        +
        366 };
        +
        +
        367
        +
        368 template <>
        +
        + +
        370 float tan_a = metal::precise::tan(x.real);
        +
        371 float tanh_b = metal::precise::tanh(x.imag);
        +
        372 float t1 = tan_a * tanh_b;
        +
        373 float denom = 1. + t1 * t1;
        +
        374 return {(tan_a - tanh_b * t1) / denom, (tanh_b + tan_a * t1) / denom};
        +
        375 };
        +
        +
        376};
        +
        +
        377
        +
        +
        378struct Tanh {
        +
        379 template <typename T>
        +
        +
        380 T operator()(T x) {
        +
        381 return metal::precise::tanh(x);
        +
        382 };
        +
        +
        383
        +
        384 template <>
        +
        + +
        386 float tanh_a = metal::precise::tanh(x.real);
        +
        387 float tan_b = metal::precise::tan(x.imag);
        +
        388 float t1 = tanh_a * tan_b;
        +
        389 float denom = 1. + t1 * t1;
        +
        390 return {(tanh_a + tan_b * t1) / denom, (tan_b - tanh_a * t1) / denom};
        +
        391 };
        +
        +
        392};
        +
        +
        float log1p(float x)
        Definition utils.h:301
        + +
        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:355
        +
        T operator()(T x)
        Definition unary_ops.h:357
        +
        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
        +
        Definition unary_ops.h:313
        +
        T operator()(T x)
        Definition unary_ops.h:315
        +
        complex64_t operator()(complex64_t x)
        Definition unary_ops.h:320
        +
        Definition unary_ops.h:327
        +
        T operator()(T x)
        Definition unary_ops.h:329
        +
        complex64_t operator()(complex64_t x)
        Definition unary_ops.h:334
        +
        Definition unary_ops.h:348
        +
        T operator()(T x)
        Definition unary_ops.h:350
        +
        Definition unary_ops.h:341
        +
        T operator()(T x)
        Definition unary_ops.h:343
        +
        Definition unary_ops.h:362
        +
        T operator()(T x)
        Definition unary_ops.h:364
        +
        complex64_t operator()(complex64_t x)
        Definition unary_ops.h:369
        +
        Definition unary_ops.h:378
        +
        complex64_t operator()(complex64_t x)
        Definition unary_ops.h:385
        +
        T operator()(T x)
        Definition unary_ops.h:380
        +
        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 new file mode 100644 index 000000000..925254f14 --- /dev/null +++ b/docs/build/html/unionbool4__or__uint-members.html @@ -0,0 +1,88 @@ + + + + + + + +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 new file mode 100644 index 000000000..e37ecda06 --- /dev/null +++ b/docs/build/html/unionbool4__or__uint.html @@ -0,0 +1,128 @@ + + + + + + + +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 new file mode 100644 index 000000000..173ce3aa2 --- /dev/null +++ b/docs/build/html/unionmlx_1_1core_1_1detail_1_1_int_or_float-members.html @@ -0,0 +1,92 @@ + + + + + + + +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 new file mode 100644 index 000000000..091bc78e9 --- /dev/null +++ b/docs/build/html/unionmlx_1_1core_1_1detail_1_1_int_or_float.html @@ -0,0 +1,132 @@ + + + + + + + +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 f426c1990..5838a3710 100644 --- a/docs/build/html/usage/compile.html +++ b/docs/build/html/usage/compile.html @@ -8,7 +8,7 @@ - Compilation — MLX 0.14.0 documentation + Compilation — MLX 0.15.0 documentation @@ -36,7 +36,7 @@ - + @@ -131,8 +131,8 @@ - MLX 0.14.0 documentation - Home - + MLX 0.15.0 documentation - Home + @@ -163,6 +163,7 @@
      • Function Transforms
      • Compilation
      • Conversion to NumPy and Other Frameworks
      • +
      • Distributed Communication
      • Using Streams

      Examples

      @@ -392,6 +393,7 @@
    • mlx.core.tril
    • mlx.core.triu
    • mlx.core.var
    • +
    • mlx.core.view
    • mlx.core.where
    • mlx.core.zeros
    • mlx.core.zeros_like
    • @@ -506,10 +508,15 @@
    • mlx.nn.Dropout3d
    • mlx.nn.Embedding
    • mlx.nn.GELU
    • +
    • mlx.nn.GLU
    • mlx.nn.GroupNorm
    • mlx.nn.GRU
    • +
    • mlx.nn.HardShrink
    • +
    • mlx.nn.HardTanh
    • +
    • mlx.nn.Hardswish
    • mlx.nn.InstanceNorm
    • mlx.nn.LayerNorm
    • +
    • mlx.nn.LeakyReLU
    • mlx.nn.Linear
    • mlx.nn.LSTM
    • mlx.nn.MaxPool1d
    • @@ -521,14 +528,20 @@
    • mlx.nn.QuantizedLinear
    • mlx.nn.RMSNorm
    • mlx.nn.ReLU
    • +
    • mlx.nn.ReLU6
    • mlx.nn.RNN
    • mlx.nn.RoPE
    • mlx.nn.SELU
    • mlx.nn.Sequential
    • mlx.nn.SiLU
    • mlx.nn.SinusoidalPositionalEncoding
    • +
    • mlx.nn.Softmin
    • mlx.nn.Softshrink
    • +
    • mlx.nn.Softsign
    • +
    • mlx.nn.Softmax
    • +
    • mlx.nn.Softplus
    • mlx.nn.Step
    • +
    • mlx.nn.Tanh
    • mlx.nn.Transformer
    • mlx.nn.Upsample
    @@ -539,6 +552,8 @@
  • 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
  • @@ -551,6 +566,7 @@
  • mlx.nn.sigmoid
  • mlx.nn.silu
  • mlx.nn.softmax
  • +
  • mlx.nn.softmin
  • mlx.nn.softplus
  • mlx.nn.softshrink
  • mlx.nn.step
  • @@ -618,7 +634,15 @@
  • mlx.optimizers.clip_grad_norm
  • -
  • Tree Utils @@ -539,6 +552,8 @@
  • 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
  • @@ -551,6 +566,7 @@
  • mlx.nn.sigmoid
  • mlx.nn.silu
  • mlx.nn.softmax
  • +
  • mlx.nn.softmin
  • mlx.nn.softplus
  • mlx.nn.softshrink
  • mlx.nn.step
  • @@ -618,7 +634,15 @@
  • mlx.optimizers.clip_grad_norm
  • -
  • Tree Utils @@ -539,6 +552,8 @@
  • 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
  • @@ -551,6 +566,7 @@
  • mlx.nn.sigmoid
  • mlx.nn.silu
  • mlx.nn.softmax
  • +
  • mlx.nn.softmin
  • mlx.nn.softplus
  • mlx.nn.softshrink
  • mlx.nn.step
  • @@ -618,7 +634,15 @@
  • mlx.optimizers.clip_grad_norm
  • -
  • Tree Utils @@ -539,6 +552,8 @@
  • 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
  • @@ -551,6 +566,7 @@
  • mlx.nn.sigmoid
  • mlx.nn.silu
  • mlx.nn.softmax
  • +
  • mlx.nn.softmin
  • mlx.nn.softplus
  • mlx.nn.softshrink
  • mlx.nn.step
  • @@ -618,7 +634,15 @@
  • mlx.optimizers.clip_grad_norm
  • -
  • Tree Utils @@ -539,6 +552,8 @@
  • 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
  • @@ -551,6 +566,7 @@
  • mlx.nn.sigmoid
  • mlx.nn.silu
  • mlx.nn.softmax
  • +
  • mlx.nn.softmin
  • mlx.nn.softplus
  • mlx.nn.softshrink
  • mlx.nn.step
  • @@ -618,7 +634,15 @@
  • mlx.optimizers.clip_grad_norm
  • -
  • Tree Utils @@ -539,6 +552,8 @@
  • 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
  • @@ -551,6 +566,7 @@
  • mlx.nn.sigmoid
  • mlx.nn.silu
  • mlx.nn.softmax
  • +
  • mlx.nn.softmin
  • mlx.nn.softplus
  • mlx.nn.softshrink
  • mlx.nn.step
  • @@ -618,7 +634,15 @@
  • mlx.optimizers.clip_grad_norm
  • -
  • Tree Utils @@ -539,6 +552,8 @@
  • 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
  • @@ -551,6 +566,7 @@
  • mlx.nn.sigmoid
  • mlx.nn.silu
  • mlx.nn.softmax
  • +
  • mlx.nn.softmin
  • mlx.nn.softplus
  • mlx.nn.softshrink
  • mlx.nn.step
  • @@ -618,7 +634,15 @@
  • mlx.optimizers.clip_grad_norm
  • -
  • Tree Utils @@ -539,6 +552,8 @@
  • 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
  • @@ -551,6 +566,7 @@
  • mlx.nn.sigmoid
  • mlx.nn.silu
  • mlx.nn.softmax
  • +
  • mlx.nn.softmin
  • mlx.nn.softplus
  • mlx.nn.softshrink
  • mlx.nn.step
  • @@ -618,7 +634,15 @@
  • mlx.optimizers.clip_grad_norm
  • -
  • Tree Utils @@ -539,6 +552,8 @@
  • 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
  • @@ -551,6 +566,7 @@
  • mlx.nn.sigmoid
  • mlx.nn.silu
  • mlx.nn.softmax
  • +
  • mlx.nn.softmin
  • mlx.nn.softplus
  • mlx.nn.softshrink
  • mlx.nn.step
  • @@ -618,7 +634,15 @@
  • mlx.optimizers.clip_grad_norm
  • -
  • Tree Utils