Miscellaneous utilities. More...
#include <core/MPIUtil.h>#include <map>#include <array>#include <cstring>#include <cstdio>#include <cstdint>#include <sys/time.h>#include <sys/wait.h>#include <unistd.h>#include <execinfo.h>#include <sys/stat.h>#include <inttypes.h>Go to the source code of this file.
Classes | |
| class | StopWatch |
| class | EnumStringMap< Enum > |
| A template to ease option parsing (maps enums <–> strings) More... | |
Macros | |
| #define | TIME(title, fp, code) |
| Elapsed time in seconds (from start of program) More... | |
| #define | assert(expr) (void)((expr) ? 0 : assertStackTraceExit(#expr, __func__, __FILE__, __LINE__)) |
| A custom assertion with stack trace (NOTE: enabled in release modes as well) | |
| #define | logPrintf(...) fprintf(globalLog, __VA_ARGS__) |
| printf() for log files | |
| #define | logFlush() fflush(globalLog) |
| fflush() for log files | |
| #define | die(...) |
| Quit with an error message (formatted using printf()). Must be called from all processes. More... | |
| #define | die_alone(...) |
| Version of die that should only be used when it is impossible to guarantee synchronized calls from all processes. More... | |
| #define | PRIdPTR "zd" |
Functions | |
| void | printVersionBanner () |
| Print package name, version, revision etc. to log. | |
| void | initSystem (int argc, char **argv) |
| Init MPI (if not already done), print banner, set up threads (play nice with job schedulers), GPU and signal handlers. | |
| void | initSystemCmdline (int argc, char **argv, const char *description, string &inputFilename, bool &dryRun, bool &printDefaults) |
| initSystem along with commandline options | |
| void | finalizeSystem (bool successful=true) |
| Clean-up corresponding to initSystem(), final messages (depending on successful) and clean-up MPI. | |
| double | clock_us () |
| double | clock_sec () |
| Elapsed time in microseconds (from start of program) | |
| void | printStack (bool detailedStackScript=false) |
| Print a minimal stack trace and optionally write a script that, when run, will print a more detailed stacktrace. | |
| void | stackTraceExit (int code) |
| Exit on error with stack trace. | |
| int | assertStackTraceExit (const char *expr, const char *function, const char *file, long line) |
| void | logSuspend () |
| temporarily disable all log output (until logResume()) | |
| void | logResume () |
| re-enable logging after a logSuspend() call | |
| void | Citations::add (string reason, string paper) |
| void | Citations::print (FILE *fp=globalLog) |
| Print the list of citations (with reasons) to the specified stream. | |
| off_t | fileSize (const char *filename) |
| Get the size of a file. | |
| void | convertToLE (void *ptr, size_t size, size_t nmemb) |
| Convert data from operating endianness to little-endian. | |
| void | convertFromLE (void *ptr, size_t size, size_t nmemb) |
| Convert data from little-endian to operating endianness. | |
| size_t | freadLE (void *ptr, size_t size, size_t nmemb, FILE *fp) |
| Read from a little-endian binary file, regardless of operating endianness. | |
| size_t | fwriteLE (const void *ptr, size_t size, size_t nmemb, FILE *fp) |
| Write to a little-endian binary file, regardless of operating endianness. | |
| uint16_t | positiveRemainder (int16_t x, uint16_t y) |
| For any x and y>0, compute z = x % y such that 0 <= z < y. | |
| bool | fftSuitable (int N) |
| Check if an integer is suitable for Fast Fourier Transforms (small prime factors only) | |
Variables | |
| bool | killFlag |
| Flag set by signal handlers - all compute loops should quit cleanly when this is set. | |
| MPIUtil * | mpiUtil |
| bool | mpiDebugLog |
| If true, all processes output to seperate debug log files, otherwise only head process outputs (set before calling initSystem()) | |
| FILE * | globalLog |
| FILE * | nullLog |
| pointer to /dev/null | |
Miscellaneous utilities.
| #define die | ( | ... | ) |
Quit with an error message (formatted using printf()). Must be called from all processes.
| #define die_alone | ( | ... | ) |
Version of die that should only be used when it is impossible to guarantee synchronized calls from all processes.
| #define TIME | ( | title, | |
| fp, | |||
| code | |||
| ) |
Elapsed time in seconds (from start of program)
Time a code section and print the timing (with title).
Code must be self-contained as a scope, as it will be surrounded by { }, and should not define "runTime"
| title | Name to use when printing the timing info for the code block |
| fp | Stream to output the timing info to |
| code | The code block to time (must be a self-contained scope) |
Add a citation to a paper with a reason (The same paper could be cited multiple times for different reasons)
| int assertStackTraceExit | ( | const char * | expr, |
| const char * | function, | ||
| const char * | file, | ||
| long | line | ||
| ) |
stack trace on failed assertions