|
Peano
|
Command Line Logger. More...
#include <NVTXLogger.h>

Public Member Functions | |
| ~NVTXLogger () | |
| bool | getLogMachineName () const |
| Is public as some analysis frameworks check explicitly whether these features are switched on. | |
| bool | getLogThreadName () const |
| Is public as some analysis frameworks check explicitly whether these features are switched on. | |
| bool | getLogTrace () const |
| Is public as some analysis frameworks check explicitly whether these features are switched on. | |
| bool | getLogTimeStamp () const |
| Is public as some analysis frameworks check explicitly whether these features are switched on. | |
| void | debug (long int timestampNanoseconds, int rank, int threadId, const std::string &trace, const std::string &message) |
| void | info (long int timestampNanoseconds, int rank, int threadId, const std::string &trace, const std::string &message) |
| void | warning (long int timestampNanoseconds, int rank, int threadId, const std::string &trace, const std::string &message) |
| Write Warning. | |
| void | error (long int timestampNanoseconds, int rank, int threadId, const std::string &trace, const std::string &message) |
| Write Error. | |
| void | traceIn (long int timestampNanoseconds, int rank, int threadId, const std::string &trace, const std::string &message) |
| void | traceOut (long int timestampNanoseconds, int rank, int threadId, const std::string &trace, const std::string &message) |
| void | indent (bool indent, const std::string &trace, const std::string &message) |
| Tells the logger to increment/decrement the indent. | |
| void | close () |
Static Public Member Functions | |
| static NVTXLogger & | getInstance () |
Private Member Functions | |
| NVTXLogger & | operator= (const CommandLineLogger &)=delete |
| Declared private since assignment does not make sense for an output class (output information mismatch). | |
| NVTXLogger (const NVTXLogger &)=delete | |
| Declared private since copying does not make sense for an output class (output information mismatch). | |
| std::string | constructMessageString (std::string messageType, long int timestampNanoseconds, int rank, int threadId, const std::string &trace, const std::string &message) |
| Construct message string. | |
| NVTXLogger () | |
| It's a singleton. | |
| std::string | getTimeStampHumanReadable (long int timestampNanoseconds) const |
Private Attributes | |
| tarch::multicore::BooleanSemaphore | _semaphore |
Static Private Attributes | |
| static Log | _log |
| static NVTXLogger | _singleton |
Command Line Logger.
Standard log output device. Implements the LogHandle. Usually there's only one instance of this class for only the Log type aggregates it in a static way. For a detailed description of this compiler flags please browse through the static consts of the class or the howto page.
An interesting issue is the behaviour of the command line logger in the parallel mode if debug is switched on. In this case the number of messages soon becomes unreadable for any human. Thus, the command line logger internally creates one output file rank.log for each rank and writes all the information into this file. info, warnings and errors are written (in short form) to std::cout / std::cerr, too.
If the debug mode is not set, all information is written to std::cout.
Note, that if multithreading is switched on (TBB-flag), the access to std::cout or the logfile respectively is synchronized. The other methods are not thread-safe and should be called only in safe context for defined behaviour.
Definition at line 48 of file NVTXLogger.h.
|
privatedelete |
Declared private since copying does not make sense for an output class (output information mismatch).
|
private |
It's a singleton.
| tarch::logging::NVTXLogger::~NVTXLogger | ( | ) |
| void tarch::logging::NVTXLogger::close | ( | ) |
|
private |
Construct message string.
!!! Thread Safety
The message string relies on the global field _indent. This one might change throughout the execution of this method. However, I accept such a behavior: Changing _indent throughout the message execution makes the method add the wrong number of whitespaces in front of the message. That is a 'bug' we can accept.
To satisfy Intel Inspector et al at least slightly, I copy over _indent before I actually construct the message string. So the indent can't change while we add the spaces/tabs to the output.
| void tarch::logging::NVTXLogger::debug | ( | long int | timestampNanoseconds, |
| int | rank, | ||
| int | threadId, | ||
| const std::string & | trace, | ||
| const std::string & | message ) |
| void tarch::logging::NVTXLogger::error | ( | long int | timestampNanoseconds, |
| int | rank, | ||
| int | threadId, | ||
| const std::string & | trace, | ||
| const std::string & | message ) |
Write Error.
In the implementation, I call a flush on cout before I write to cerr. Otherwise, the cerr messages might overtake cout. Before the operation returns, it does a flush on cerr, too. Otherwise, the message might not occur, i.e. the application might shut down before the message is flushed to the terminal.
|
static |
| bool tarch::logging::NVTXLogger::getLogMachineName | ( | ) | const |
Is public as some analysis frameworks check explicitly whether these features are switched on.
| bool tarch::logging::NVTXLogger::getLogThreadName | ( | ) | const |
Is public as some analysis frameworks check explicitly whether these features are switched on.
| bool tarch::logging::NVTXLogger::getLogTimeStamp | ( | ) | const |
Is public as some analysis frameworks check explicitly whether these features are switched on.
| bool tarch::logging::NVTXLogger::getLogTrace | ( | ) | const |
Is public as some analysis frameworks check explicitly whether these features are switched on.
|
private |
| void tarch::logging::NVTXLogger::indent | ( | bool | indent, |
| const std::string & | trace, | ||
| const std::string & | message ) |
Tells the logger to increment/decrement the indent.
For NVTX, we do not need any indentation. Consequently, we put the nop implementation into the header, so the compiler can inline the call and eventually remove it completely.
Definition at line 159 of file NVTXLogger.h.
| void tarch::logging::NVTXLogger::info | ( | long int | timestampNanoseconds, |
| int | rank, | ||
| int | threadId, | ||
| const std::string & | trace, | ||
| const std::string & | message ) |
|
privatedelete |
Declared private since assignment does not make sense for an output class (output information mismatch).
| void tarch::logging::NVTXLogger::traceIn | ( | long int | timestampNanoseconds, |
| int | rank, | ||
| int | threadId, | ||
| const std::string & | trace, | ||
| const std::string & | message ) |
| void tarch::logging::NVTXLogger::traceOut | ( | long int | timestampNanoseconds, |
| int | rank, | ||
| int | threadId, | ||
| const std::string & | trace, | ||
| const std::string & | message ) |
| void tarch::logging::NVTXLogger::warning | ( | long int | timestampNanoseconds, |
| int | rank, | ||
| int | threadId, | ||
| const std::string & | trace, | ||
| const std::string & | message ) |
Write Warning.
In the implementation, I call a flush on cout before I write to cerr. Otherwise, the cerr messages might overtake cout. Before the operation returns, it does a flush on cerr, too. Otherwise, the message might not occur, i.e. the application might shut down before the message is flushed to the terminal.
|
staticprivate |
Definition at line 50 of file NVTXLogger.h.
|
private |
Definition at line 54 of file NVTXLogger.h.
|
staticprivate |
Definition at line 52 of file NVTXLogger.h.