Highly Efficient FFT for Exascale: HeFFTe v2.3
Collaboration diagram for Event tracing:

Classes

struct  heffte::event
 A tracing event. More...
 

Functions

void heffte::init_tracing (std::string root_filename)
 Initialize tracing and remember the root filename for output, see the Detailed Description.
 
void heffte::finalize_tracing ()
 Finalize tracing and write the result to a file, see the Detailed Description.
 

Variables

std::deque< eventheffte::event_log
 Logs the list of events (declared in heffte_reshape3d.cpp).
 
std::string heffte::log_filename
 Root filename to write out the traces (decaled in heffte_reshape3d.cpp).
 

Detailed Description

HeFFTe provides a simple tracing capability that will log different events in both a forward and backward transform. Tracing is disabled by default (in order to remove any overhead), and is designed to have minimal overhead at run time.

Tracing must first be enabled in CMake with

-D Heffte_ENABLE_TRACING=ON

and in the client code must be initialized with

init_tracing("root-file-name");
void init_tracing(std::string root_filename)
Initialize tracing and remember the root filename for output, see the Detailed Description.
Definition: heffte_trace.h:102

which must be called after MPI_Init(). Then, any FFT transform will log different events, e.g., packing, unpacking, communicating all-to-all, etc. Each event will be times beginning to end using MPI_Wtime(). Tracing is finalized with

void finalize_tracing()
Finalize tracing and write the result to a file, see the Detailed Description.
Definition: heffte_trace.h:111

which must be called before MPI_Finalize(). The finalize call will write a number of text files (one per MPI rank) each with name "root-file-name_rank_number.txt" that will hold the list of events encountered during the calls to HeFFTe.

Note: if tracing is not enabled, all tracing methods are no-op.