Skip to content
Merged
Show file tree
Hide file tree
Changes from 8 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion benchmarks/linear_programming/cuopt/run_mip.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -22,8 +22,8 @@
#include <cuopt/linear_programming/mip/solver_solution.hpp>
#include <cuopt/linear_programming/optimization_problem.hpp>
#include <cuopt/linear_programming/solve.hpp>
#include <cuopt/logger.hpp>
#include <mps_parser/parser.hpp>
#include <utilities/logger.hpp>

#include <raft/core/handle.hpp>

Expand Down
2 changes: 1 addition & 1 deletion cpp/cuopt_cli.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -18,8 +18,8 @@
#include <cuopt/linear_programming/mip/solver_settings.hpp>
#include <cuopt/linear_programming/optimization_problem.hpp>
#include <cuopt/linear_programming/solve.hpp>
#include <cuopt/logger.hpp>
#include <mps_parser/parser.hpp>
#include <utilities/logger.hpp>

#include <raft/core/handle.hpp>

Expand Down
2 changes: 1 addition & 1 deletion cpp/src/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@
# limitations under the License.

set(UTIL_SRC_FILES ${CMAKE_CURRENT_SOURCE_DIR}/utilities/seed_generator.cu
${CMAKE_CURRENT_SOURCE_DIR}/utilities/logger_helper.cpp
${CMAKE_CURRENT_SOURCE_DIR}/utilities/logger.cpp
${CMAKE_CURRENT_SOURCE_DIR}/utilities/version_info.cpp
${CMAKE_CURRENT_SOURCE_DIR}/utilities/timestamp_utils.cpp)

Expand Down
2 changes: 1 addition & 1 deletion cpp/src/dual_simplex/logger.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@
#pragma once

#ifdef CUOPT_LOG_ACTIVE_LEVEL
#include <cuopt/logger.hpp>
#include <utilities/logger.hpp>
#endif

#include <string>
Expand Down
2 changes: 1 addition & 1 deletion cpp/src/linear_programming/cuopt_c.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -20,8 +20,8 @@
#include <cuopt/linear_programming/optimization_problem.hpp>
#include <cuopt/linear_programming/solve.hpp>
#include <cuopt/linear_programming/solver_settings.hpp>
#include <cuopt/logger.hpp>
#include <cuopt/utilities/timestamp_utils.hpp>
#include <utilities/logger.hpp>

#include <mps_parser/parser.hpp>

Expand Down
2 changes: 1 addition & 1 deletion cpp/src/linear_programming/optimization_problem.cu
Original file line number Diff line number Diff line change
Expand Up @@ -16,8 +16,8 @@
*/

#include <cuopt/error.hpp>
#include <cuopt/logger.hpp>
#include <mps_parser/writer.hpp>
#include <utilities/logger.hpp>

#include <cuopt/linear_programming/optimization_problem.hpp>
#include <mip/mip_constants.hpp>
Expand Down
2 changes: 1 addition & 1 deletion cpp/src/linear_programming/solve.cu
Original file line number Diff line number Diff line change
Expand Up @@ -20,9 +20,9 @@
#include <linear_programming/restart_strategy/pdlp_restart_strategy.cuh>
#include <linear_programming/step_size_strategy/adaptive_step_size_strategy.hpp>
#include <linear_programming/translate.hpp>
#include <linear_programming/utilities/logger_init.hpp>
#include <linear_programming/utilities/problem_checking.cuh>
#include <linear_programming/utils.cuh>
#include <utilities/logger.hpp>

#include <mip/mip_constants.hpp>
#include <mip/presolve/third_party_presolve.hpp>
Expand Down
2 changes: 1 addition & 1 deletion cpp/src/linear_programming/solver_settings.cu
Original file line number Diff line number Diff line change
Expand Up @@ -18,10 +18,10 @@
#include <cuopt/error.hpp>
#include <cuopt/linear_programming/pdlp/pdlp_warm_start_data.hpp>
#include <cuopt/linear_programming/pdlp/solver_settings.hpp>
#include <cuopt/logger.hpp>
#include <math_optimization/solution_writer.hpp>
#include <mip/mip_constants.hpp>
#include <mps_parser/utilities/span.hpp>
#include <utilities/logger.hpp>

#include <raft/util/cudart_utils.hpp>

Expand Down
2 changes: 1 addition & 1 deletion cpp/src/linear_programming/solver_solution.cu
Original file line number Diff line number Diff line change
Expand Up @@ -16,9 +16,9 @@
*/

#include <cuopt/linear_programming/pdlp/solver_solution.hpp>
#include <cuopt/logger.hpp>
#include <math_optimization/solution_writer.hpp>
#include <mip/mip_constants.hpp>
#include <utilities/logger.hpp>

#include <raft/common/nvtx.hpp>
#include <raft/util/cudart_utils.hpp>
Expand Down
54 changes: 0 additions & 54 deletions cpp/src/linear_programming/utilities/logger_init.hpp

This file was deleted.

2 changes: 1 addition & 1 deletion cpp/src/math_optimization/solution_writer.cu
Original file line number Diff line number Diff line change
Expand Up @@ -15,8 +15,8 @@
* limitations under the License.
*/

#include <cuopt/logger.hpp>
#include <raft/common/nvtx.hpp>
#include <utilities/logger.hpp>
#include "solution_writer.hpp"

#include <fstream>
Expand Down
2 changes: 1 addition & 1 deletion cpp/src/math_optimization/solver_settings.cu
Original file line number Diff line number Diff line change
Expand Up @@ -16,8 +16,8 @@
*/

#include <cuopt/linear_programming/solver_settings.hpp>
#include <cuopt/logger.hpp>
#include <mip/mip_constants.hpp>
#include <utilities/logger.hpp>

namespace cuopt::linear_programming {

Expand Down
2 changes: 1 addition & 1 deletion cpp/src/mip/logger.cuh
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@

#pragma once

#include <cuopt/logger.hpp>
#include <utilities/logger.hpp>

namespace cuopt::linear_programming::detail {

Expand Down
2 changes: 1 addition & 1 deletion cpp/src/mip/logger.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -17,4 +17,4 @@

#pragma once

#include <cuopt/logger.hpp>
#include <utilities/logger.hpp>
2 changes: 1 addition & 1 deletion cpp/src/mip/presolve/third_party_presolve.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -16,10 +16,10 @@
*/

#include <cuopt/error.hpp>
#include <cuopt/logger.hpp>
#include <mip/mip_constants.hpp>
#include <mip/presolve/gf2_presolve.hpp>
#include <mip/presolve/third_party_presolve.hpp>
#include <utilities/logger.hpp>
#include <utilities/timer.hpp>

#include <raft/common/nvtx.hpp>
Expand Down
2 changes: 1 addition & 1 deletion cpp/src/mip/solve.cu
Original file line number Diff line number Diff line change
Expand Up @@ -27,9 +27,9 @@
#include <linear_programming/pdlp.cuh>
#include <linear_programming/restart_strategy/pdlp_restart_strategy.cuh>
#include <linear_programming/step_size_strategy/adaptive_step_size_strategy.hpp>
#include <linear_programming/utilities/logger_init.hpp>
#include <linear_programming/utilities/problem_checking.cuh>
#include <linear_programming/utils.cuh>
#include <utilities/logger.hpp>
#include <utilities/timer.hpp>
#include <utilities/version_info.hpp>

Expand Down
2 changes: 1 addition & 1 deletion cpp/src/mip/solver_solution.cu
Original file line number Diff line number Diff line change
Expand Up @@ -16,8 +16,8 @@
*/

#include <cuopt/linear_programming/mip/solver_solution.hpp>
#include <cuopt/logger.hpp>
#include <mip/mip_constants.hpp>
#include <utilities/logger.hpp>

#include <limits>
#include <math_optimization/solution_writer.hpp>
Expand Down
2 changes: 1 addition & 1 deletion cpp/src/routing/solve.cu
Original file line number Diff line number Diff line change
Expand Up @@ -15,9 +15,9 @@
* limitations under the License.
*/

#include <cuopt/logger.hpp>
#include <cuopt/routing/solve.hpp>
#include <routing/solver.hpp>
#include <utilities/logger.hpp>

namespace cuopt {
namespace routing {
Expand Down
111 changes: 94 additions & 17 deletions cpp/include/cuopt/logger.hpp → cpp/src/utilities/logger.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -15,13 +15,62 @@
* limitations under the License.
*/

#pragma once
#include <utilities/logger.hpp>
#include <utilities/version_info.hpp>

#include <cuopt/logger_macros.hpp>
namespace cuopt {

#include <rapids_logger/logger.hpp>
struct buffered_entry {
rapids_logger::level_enum level;
std::string msg;
};

namespace cuopt {
// Buffer to store log messages
class log_buffer {
public:
log_buffer() = default;
~log_buffer() = default;

void log(rapids_logger::level_enum lvl, const char* msg)
{
std::lock_guard<std::mutex> lock(mutex);
if (!msg) return;
std::string str(msg);

if (!str.empty() && str.back() == '\n') { str.pop_back(); }
messages.push_back({lvl, std::move(str)});
}

size_t size() const
{
std::lock_guard<std::mutex> lock(mutex);
return messages.size();
}

std::vector<buffered_entry> drain_all()
{
std::lock_guard<std::mutex> lock(mutex);
std::vector<buffered_entry> out;
out.swap(messages);
return out;
}

std::vector<buffered_entry> messages;
mutable std::mutex mutex;
};

log_buffer& global_log_buffer()
{
static log_buffer buffer;
return buffer;
}

// Callback function for the buffer sink
static void buffer_log_callback(int lvl, const char* msg)
{
// store level with message; actual filtering happens at logger time
global_log_buffer().log(static_cast<rapids_logger::level_enum>(lvl), msg);
}

/**
* @brief Returns the default sink for the global logger.
Expand All @@ -31,7 +80,11 @@ namespace cuopt {
*
* @return sink_ptr The sink to use
*/
rapids_logger::sink_ptr default_sink();
rapids_logger::sink_ptr default_sink()
{
return std::make_shared<rapids_logger::callback_sink_mt>(buffer_log_callback);
}

/**
* @brief Returns the default log pattern for the global logger.
*
Expand Down Expand Up @@ -63,12 +116,7 @@ inline rapids_logger::level_enum default_level()
#endif
}

/**
* @brief Get the default logger.
*
* @return logger& The default logger
*/
inline rapids_logger::logger& default_logger()
rapids_logger::logger& default_logger()
{
static rapids_logger::logger logger_ = [] {
rapids_logger::logger logger_{"CUOPT", {default_sink()}};
Expand All @@ -82,15 +130,11 @@ inline rapids_logger::logger& default_logger()

return logger_;
}();

return logger_;
}

/**
* @brief Reset the default logger to the default settings.
* This is needed when we are running multiple tests and each test has different logger settings
* and we need to reset the logger to the default settings before each test.
*/
inline void reset_default_logger()
void reset_default_logger()
{
default_logger().sinks().clear();
default_logger().sinks().push_back(default_sink());
Expand All @@ -103,4 +147,37 @@ inline void reset_default_logger()
default_logger().flush_on(rapids_logger::level_enum::debug);
}

init_logger_t::init_logger_t(std::string log_file, bool log_to_console)
{
// until this function is called, the default sink is the buffer sink
// if (cuopt::default_logger().sinks()) {
cuopt::default_logger().sinks().clear();
//}

// re-initialize sinks
if (log_to_console) {
cuopt::default_logger().sinks().push_back(
std::make_shared<rapids_logger::ostream_sink_mt>(std::cout));
}
if (!log_file.empty()) {
cuopt::default_logger().sinks().push_back(
std::make_shared<rapids_logger::basic_file_sink_mt>(log_file, true));
cuopt::default_logger().flush_on(rapids_logger::level_enum::debug);
}

#if CUOPT_LOG_ACTIVE_LEVEL >= RAPIDS_LOGGER_LOG_LEVEL_INFO
cuopt::default_logger().set_pattern("%v");
#else
cuopt::default_logger().set_pattern(cuopt::default_pattern());
#endif

// Extract messages from the global buffer and log to the default logger
auto buffered_messages = global_log_buffer().drain_all();
for (const auto& entry : buffered_messages) {
cuopt::default_logger().log(entry.level, entry.msg.c_str());
}
}

init_logger_t::~init_logger_t() { cuopt::reset_default_logger(); }

} // namespace cuopt
Loading