pyATF: The Auto-Tuning Framework (ATF) in Python¶
Auto-Tuning Framework (ATF) is a generic, general-purpose auto-tuning approach that automatically finds well-performing values of performance-critical parameters (a.k.a. tuning parameters), such as sizes of tiles and numbers of threads. ATF works for programs written in arbitrary programming languages and belonging to arbitrary application domains, and it allows tuning for arbitrary objectives (e.g., high runtime performance and/or low energy consumption).
A major feature of ATF is that it supports auto-tuning programs whose tuning parameters have interdependencies among them, e.g., the value of one tuning parameter has to be smaller than the value of another tuning parameter. For this, ATF introduces novel process to generating, storing, and exploring the search spaces of interdependent tuning parameters (discussed in detail here).
ATF comes with easy-to-use user interfaces to make auto-tuning appealing also to common application developers. The Interfaces are based on either:
Domain-Specific Language (DSL), for auto-tuning at compile time (a.k.a. offline tuning) (discussed here);
General Purpose Language (GPL), for auto-tuning at runtime (a.k.a. online tuning), e.g., of C++ programs (referred to as cppATF, and discussed here) or Python programs (referred to as pyATF, and discussed here).
This repository contains pyATF, i.e., ATF with its GPL-based Python interface.
Content¶
- Getting Started
- API Reference
- Tuner
pyatf.Tuner
pyatf.TP
pyatf.tuning_data.Configuration
pyatf.tuning_data.TuningData
pyatf.tuning_data.TuningData.tuning_parameters
pyatf.tuning_data.TuningData.constrained_search_space_size
pyatf.tuning_data.TuningData.unconstrained_search_space_size
pyatf.tuning_data.TuningData.search_space_generation_ns
pyatf.tuning_data.TuningData.search_technique
pyatf.tuning_data.TuningData.abort_condition
pyatf.tuning_data.TuningData.tuning_start_timestamp
pyatf.tuning_data.TuningData.terminated_early
pyatf.tuning_data.TuningData.history
pyatf.tuning_data.TuningData.improvement_history
pyatf.tuning_data.TuningData.number_of_evaluated_configurations
pyatf.tuning_data.TuningData.number_of_evaluated_valid_configurations
pyatf.tuning_data.TuningData.number_of_evaluated_invalid_configurations
pyatf.tuning_data.TuningData.total_tuning_duration()
pyatf.tuning_data.TuningData.configuration_of_min_cost()
pyatf.tuning_data.TuningData.search_space_coordinates_of_min_cost()
pyatf.tuning_data.TuningData.search_space_index_of_min_cost()
pyatf.tuning_data.TuningData.timestamp_of_min_cost()
pyatf.tuning_data.TuningData.duration_to_min_cost()
pyatf.tuning_data.TuningData.evaluations_to_min_cost()
pyatf.tuning_data.TuningData.valid_evaluations_to_min_cost()
- Cost Functions
- Pre-Implemented Cost Functions
pyatf.cost_functions.generic.CostFunction
pyatf.cost_functions.opencl.CostFunction
pyatf.cost_functions.opencl.CostFunction.CostFunction()
pyatf.cost_functions.opencl.CostFunction.platform_id()
pyatf.cost_functions.opencl.CostFunction.device_id()
pyatf.cost_functions.opencl.CostFunction.kernel_args()
pyatf.cost_functions.opencl.CostFunction.global_size()
pyatf.cost_functions.opencl.CostFunction.local_size()
pyatf.cost_functions.opencl.CostFunction.check_result()
pyatf.cost_functions.opencl.CostFunction.warmups()
pyatf.cost_functions.opencl.CostFunction.evaluations()
pyatf.cost_functions.opencl.CostFunction.silent()
pyatf.cost_functions.cuda.CostFunction
pyatf.cost_functions.cuda.CostFunction.CostFunction()
pyatf.cost_functions.cuda.CostFunction.device_id()
pyatf.cost_functions.cuda.CostFunction.kernel_args()
pyatf.cost_functions.cuda.CostFunction.grid_dim()
pyatf.cost_functions.cuda.CostFunction.block_dim()
pyatf.cost_functions.cuda.CostFunction.check_result()
pyatf.cost_functions.cuda.CostFunction.warmups()
pyatf.cost_functions.cuda.CostFunction.evaluations()
pyatf.cost_functions.cuda.CostFunction.silent()
- Misc
- Pre-Implemented Cost Functions
- Search Techniques
pyatf.search_techniques.search_technique.SearchTechnique
pyatf.search_techniques.search_technique_1d.SearchTechnique1D
pyatf.search_techniques.search_technique_1d.SearchTechnique1D.initialize()
pyatf.search_techniques.search_technique_1d.SearchTechnique1D.finalize()
pyatf.search_techniques.search_technique_1d.SearchTechnique1D.get_next_indices()
pyatf.search_techniques.search_technique_1d.SearchTechnique1D.report_costs()
- Abort Conditions
- Tuner