Autonomic Performance Environment for eXascale (APEX)  2.3.1
Classes | Namespaces | Macros | Functions
apex_api.hpp File Reference

Go to the source code of this file.

Classes

class  apex::scoped_timer
 A convenience class for using APEX in C++ applications. More...
 
class  apex::scoped_thread
 A convenience class for creating a scoped thread. More...
 

Namespaces

 apex
 The main APEX namespace.
 

Macros

#define APEX_SCOPED_TIMER
 A convenient macro for inserting an APEX self-stopping timer. More...
 

Functions

static std::shared_ptr< task_wrapper > apex::null_task_wrapper (nullptr)
 declare a default "null" pointer for std::shared_ptr<task_wrapper>& references More...
 
uint64_t apex::init (const char *thread_name, const uint64_t comm_rank, const uint64_t comm_size)
 Intialize APEX. More...
 
std::string apex::dump (bool reset)
 Dump output from APEX. More...
 
void apex::finalize (void)
 Finalize APEX. More...
 
void apex::cleanup (void)
 Cleanup APEX. More...
 
profiler * apex::start (const std::string &timer_name)
 Start a timer. More...
 
profiler * apex::start (const apex_function_address function_address)
 Start a timer. More...
 
void apex::start (std::shared_ptr< task_wrapper > task_wrapper_ptr)
 Start a timer. More...
 
void apex::stop (profiler *the_profiler, bool cleanup=true)
 Stop a timer. More...
 
void apex::stop (std::shared_ptr< task_wrapper > task_wrapper_ptr)
 Stop a timer. More...
 
void apex::yield (profiler *the_profiler)
 Stop a timer, but don't increment the number of calls. More...
 
void apex::yield (std::shared_ptr< task_wrapper > task_wrapper_ptr)
 Stop a timer, but don't increment the number of calls. More...
 
profiler * apex::resume (const std::string &timer_name)
 Resume a timer. More...
 
profiler * apex::resume (const apex_function_address function_address)
 Resume a timer. More...
 
void apex::resume (std::shared_ptr< task_wrapper > task_wrapper_ptr)
 Resume a timer. More...
 
void apex::reset (const std::string &timer_name)
 Reset a timer or counter. More...
 
void apex::reset (apex_function_address function_address)
 Reset a timer. More...
 
void apex::set_state (apex_thread_state state)
 Set the thread state. More...
 
void apex::sample_value (const std::string &name, double value)
 Sample a state value. More...
 
std::shared_ptr< task_wrapper > apex::new_task (const std::string &name, const uint64_t task_id=UINTMAX_MAX, const std::shared_ptr< apex::task_wrapper > parent_task=null_task_wrapper)
 Create a new task (dependency). More...
 
std::shared_ptr< task_wrapper > apex::new_task (const apex_function_address function_address, const uint64_t task_id=UINTMAX_MAX, const std::shared_ptr< apex::task_wrapper > parent_task=null_task_wrapper)
 Create a new task (dependency). More...
 
std::shared_ptr< task_wrapper > apex::update_task (std::shared_ptr< task_wrapper > wrapper, const std::string &name)
 Update a task (dependency). More...
 
std::shared_ptr< task_wrapper > apex::update_task (std::shared_ptr< task_wrapper > wrapper, const apex_function_address function_address)
 Update a task wrapper (dependency). More...
 
apex_event_type apex::register_custom_event (const std::string &name)
 Register an event type with APEX. More...
 
void apex::custom_event (apex_event_type event_type, void *custom_data)
 Trigger a custom event. More...
 
std::string & apex::version (void)
 Return the APEX version. More...
 
void apex::register_thread (const std::string &name)
 Register a new thread. More...
 
void apex::exit_thread (void)
 Exit a thread. More...
 
apex_policy_handle * apex::register_policy (const apex_event_type when, std::function< int(apex_context const &)> f)
 Register a policy with APEX. More...
 
std::set< apex_policy_handle * > apex::register_policy (std::set< apex_event_type > when, std::function< int(apex_context const &)> f)
 Register a policy with APEX. More...
 
apex_policy_handle * apex::register_periodic_policy (unsigned long period, std::function< int(apex_context const &)> f)
 Register a policy with APEX. More...
 
apex_policy_handle * apex::sample_runtime_counter (unsigned long period, const std::string &counter_name)
 Periodically sample a runtime counter. More...
 
void apex::deregister_policy (apex_policy_handle *handle)
 Deregister a policy with APEX. More...
 
void apex::stop_all_async_threads (void)
 Stop all asynchronous APEX background threads. More...
 
apex_profile * apex::get_profile (apex_function_address function_address)
 Get the current profile for the specified function address. More...
 
apex_profile * apex::get_profile (const std::string &timer_name)
 Get the current profile for the specified function address. More...
 
int apex::setup_power_cap_throttling (void)
 Initialize the power cap throttling policy. More...
 
int apex::setup_timer_throttling (apex_function_address the_address, apex_optimization_criteria_t criteria, apex_optimization_method_t method, unsigned long update_interval)
 Setup throttling to optimize for the specified function. More...
 
int apex::setup_throughput_tuning (apex_function_address the_address, apex_optimization_criteria_t criteria, apex_event_type event_type, int num_inputs, long **inputs, long *mins, long *maxs, long *steps)
 Setup throttling to optimize for the specified function, using multiple input criteria. More...
 
apex_tuning_session_handle apex::setup_custom_tuning (std::function< double(void)> metric, apex_event_type event_type, int num_inputs, long **inputs, long *mins, long *maxs, long *steps)
 Setup tuning of specified parameters to optimize for a custom metric, using multiple input criteria. More...
 
apex_tuning_session_handle apex::setup_custom_tuning (apex_tuning_request &request)
 Setup tuning of specified parameters to optimize for a custom metric, using multiple input criteria of potentially multiple types. More...
 
int apex::setup_timer_throttling (const std::string &the_name, apex_optimization_criteria_t criteria, apex_optimization_method_t method, unsigned long update_interval)
 Setup throttling to optimize for the specified function or counter. More...
 
int apex::shutdown_throttling (void)
 Terminate the throttling policy. More...
 
int apex::get_thread_cap (void)
 Get the current thread cap set by the throttling. More...
 
void apex::set_thread_cap (int new_cap)
 Set the current thread cap for throttling. More...
 
std::vector< std::pair< std::string, long * > > & apex::get_tunable_params (apex_tuning_session_handle h)
 Return a vector of the current tunable parameters. More...
 
bool apex::has_session_converged (apex_tuning_session_handle handle)
 Check whether a tuning session has converged. More...
 
void apex::get_best_values (apex_tuning_session_handle h)
 Set a tuning session's values to the best known values. More...
 
void apex::print_options (void)
 Print out all configuration settings for APEX. More...
 
void apex::send (uint64_t tag, uint64_t size, uint64_t target)
 Notify APEX that the current thread is sending a parcel/message to another rank/locality/process. More...
 
void apex::recv (uint64_t tag, uint64_t size, uint64_t source_rank, uint64_t source_thread)
 Notify APEX that the current thread is receiving a parcel/message from another rank/locality/process. More...
 

Macro Definition Documentation

◆ APEX_SCOPED_TIMER

#define APEX_SCOPED_TIMER
Value:
std::ostringstream _s_foo; \
_s_foo << __func__ << " [" << __FILE__ << ":" << __LINE__ << "]"; \
apex::scoped_timer __foo(_s_foo.str());

A convenient macro for inserting an APEX self-stopping timer.

This macro will create a timer using the values of func, LINE and FILE from the preprocessor.