// Copyright © 2025 Apple Inc. namespace mlx::core::distributed::detail { template struct SumOp { void operator()(const T* input, T* output, size_t N) const { while (N-- > 0) { *output += *input; input++; output++; } } }; template struct MaxOp { void operator()(const T* input, T* output, size_t N) const { while (N-- > 0) { *output = std::max(*output, *input); input++; output++; } } }; template struct MinOp { void operator()(const T* input, T* output, size_t N) const { while (N-- > 0) { *output = std::min(*output, *input); input++; output++; } } }; } // namespace mlx::core::distributed::detail