24#include <boost/mpi/collectives.hpp>
40 if (!m_errors.empty()) {
42 std::cerr <<
"There were unhandled errors.\n";
48 const std::string &
msg,
49 const char *function,
const char *file,
51 std::lock_guard<std::mutex>
lock(mutex);
52 m_errors.emplace_back(level, m_comm.rank(),
msg, std::string(function),
53 std::string(file), line);
57 const char *function,
const char *file,
59 std::lock_guard<std::mutex>
lock(mutex);
61 std::string(function), std::string(file), line);
65 const char *file,
const int line) {
66 std::lock_guard<std::mutex>
lock(mutex);
68 std::string(function), std::string(file), line);
72 std::lock_guard<std::mutex>
lock(mutex);
73 return boost::mpi::all_reduce(m_comm,
static_cast<int>(m_errors.size()),
78 return static_cast<int>(std::ranges::count_if(
79 m_errors, [level](
auto const &
e) {
return e.level() >= level; }));
83 std::lock_guard<std::mutex>
lock(mutex);
89 std::lock_guard<std::mutex>
lock(mutex);
90 for (
auto const &
e : m_errors) {
91 std::cerr <<
e.format() << std::endl;
98 std::lock_guard<std::mutex>
lock(mutex);
109 std::lock_guard<std::mutex>
lock(mutex);
void clear()
Reset error messages.
void flush()
Flush error messages to standard error.
std::vector< RuntimeError > gather()
int count() const
Get the number of all flying messages on all nodes.
void error(const std::string &msg, const char *function, const char *file, int line)
void warning(const std::string &msg, const char *function, const char *file, int line)
RuntimeErrorCollector(boost::mpi::communicator comm)
void message(RuntimeError::ErrorLevel level, const std::string &msg, const char *function, const char *file, int line)
cudaStream_t stream[1]
CUDA streams for parallel computing on CPU and GPU.
void gather_buffer(std::vector< T, Allocator > &buffer, boost::mpi::communicator const &comm, int root=0)
Gather buffer with different size on each node.