// init() is called very near the beginning of execution time in the constructor of __kmp_stats_global_output void kmp_stats_output_module::init() { char * statsFileName = getenv("KMP_STATS_FILE"); eventsFileName = getenv("KMP_STATS_EVENTS_FILE"); plotFileName = getenv("KMP_STATS_PLOT_FILE"); char * threadStats = getenv("KMP_STATS_THREADS"); char * threadEvents = getenv("KMP_STATS_EVENTS"); // set the stats output filenames based on environment variables and defaults outputFileName = statsFileName; eventsFileName = eventsFileName ? eventsFileName : "events.dat"; plotFileName = plotFileName ? plotFileName : "events.plt"; // set the flags based on environment variables matching: true, on, 1, .true. , .t. , yes printPerThreadFlag = __kmp_str_match_true(threadStats); printPerThreadEventsFlag = __kmp_str_match_true(threadEvents); if(printPerThreadEventsFlag) { // assigns a color to each timer for printing setupEventColors(); } else { // will clear flag so that no event will be logged timeStat::clearEventFlags(); } return; }
// init() is called very near the beginning of execution time in the constructor // of __kmp_stats_global_output void kmp_stats_output_module::init() { char *statsFileName = getenv("KMP_STATS_FILE"); eventsFileName = getenv("KMP_STATS_EVENTS_FILE"); plotFileName = getenv("KMP_STATS_PLOT_FILE"); char *threadStats = getenv("KMP_STATS_THREADS"); char *threadEvents = getenv("KMP_STATS_EVENTS"); // set the stats output filenames based on environment variables and defaults if (statsFileName) { // append the process id to the output filename // events.csv --> events-pid.csv size_t index; std::string baseFileName, pid, suffix; std::stringstream ss; outputFileName = std::string(statsFileName); index = outputFileName.find_last_of('.'); if (index == std::string::npos) { baseFileName = outputFileName; } else { baseFileName = outputFileName.substr(0, index); suffix = outputFileName.substr(index); } ss << getpid(); pid = ss.str(); outputFileName = baseFileName + "-" + pid + suffix; } eventsFileName = eventsFileName ? eventsFileName : "events.dat"; plotFileName = plotFileName ? plotFileName : "events.plt"; // set the flags based on environment variables matching: true, on, 1, .true. // , .t. , yes printPerThreadFlag = __kmp_str_match_true(threadStats); printPerThreadEventsFlag = __kmp_str_match_true(threadEvents); if (printPerThreadEventsFlag) { // assigns a color to each timer for printing setupEventColors(); } else { // will clear flag so that no event will be logged timeStat::clearEventFlags(); } return; }