// Copyright © 2024 Apple Inc. #pragma once #include #include #include "mlx/array.h" namespace mlx::core { using Args = std::vector; using Kwargs = std::unordered_map; struct FunctionExporter; /** * Make an exporter to save multiple traces of a given function to * the same file. */ FunctionExporter exporter( const std::string& file, const std::function(const Args&)>& fun, bool shapeless = false); FunctionExporter exporter( const std::string& file, const std::function(const Kwargs&)>& fun, bool shapeless = false); FunctionExporter exporter( const std::string& path, const std::function(const Args&, const Kwargs&)>& fun, bool shapeless = false); /** * Export a function to a file. */ void export_function( const std::string& file, const std::function(const Args&)>& fun, const Args& args, bool shapeless = false); void export_function( const std::string& file, const std::function(const Kwargs&)>& fun, const Kwargs& kwargs, bool shapeless = false); void export_function( const std::string& file, const std::function(const Args&, const Kwargs&)>& fun, const Args& args, const Kwargs& kwargs, bool shapeless = false); struct ImportedFunction; /** * Import a function from a file. */ ImportedFunction import_function(const std::string& file); } // namespace mlx::core #include "mlx/export_impl.h"