|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#include "logger.h" |
|
#include <cuda_runtime.h> |
|
|
|
namespace fastertransformer { |
|
|
|
Logger::Logger() |
|
{ |
|
char* is_first_rank_only_char = std::getenv("FT_LOG_FIRST_RANK_ONLY"); |
|
bool is_first_rank_only = |
|
(is_first_rank_only_char != nullptr && std::string(is_first_rank_only_char) == "ON") ? true : false; |
|
|
|
int device_id; |
|
cudaGetDevice(&device_id); |
|
|
|
char* level_name = std::getenv("FT_LOG_LEVEL"); |
|
if (level_name != nullptr) { |
|
std::map<std::string, Level> name_to_level = { |
|
{"TRACE", TRACE}, |
|
{"DEBUG", DEBUG}, |
|
{"INFO", INFO}, |
|
{"WARNING", WARNING}, |
|
{"ERROR", ERROR}, |
|
}; |
|
auto level = name_to_level.find(level_name); |
|
|
|
if (is_first_rank_only && device_id != 0) { |
|
level = name_to_level.find("ERROR"); |
|
} |
|
if (level != name_to_level.end()) { |
|
setLevel(level->second); |
|
} |
|
else { |
|
fprintf(stderr, |
|
"[FT][WARNING] Invalid logger level FT_LOG_LEVEL=%s. " |
|
"Ignore the environment variable and use a default " |
|
"logging level.\n", |
|
level_name); |
|
level_name = nullptr; |
|
} |
|
} |
|
} |
|
|
|
} |
|
|