MUDA
Loading...
Searching...
No Matches
logger.h
1#pragma once
2#include <muda/muda_def.h>
3#include <muda/check/check_cuda_errors.h>
4#include <cinttypes>
5#include <muda/literal/unit.h>
6#include <muda/logger/logger_viewer.h>
7#include <muda/buffer/device_var.h>
8#include <vector>
9#include <muda/tools/temp_buffer.h>
10
11namespace muda
12{
14{
15 public:
16 uint32_t id;
17 LoggerBasicType type;
18 void* data;
19 LoggerFmtArg fmt_arg;
20 template <typename T>
21 const T& as();
22};
23
25{
26 public:
27 span<LoggerMetaData> meta_data() { return m_meta_data; }
28
29 private:
30 friend class Logger;
31 std::vector<LoggerMetaData> m_meta_data;
32 std::vector<char> m_buffer;
33};
34
35class Logger
36{
37 static constexpr size_t DEFAULT_META_SIZE = 16_M;
38 static constexpr size_t DEFAULT_BUFFER_SIZE = 128_M;
39
40 public:
41 Logger(LoggerViewer* global_viewer,
42 size_t meta_size = DEFAULT_META_SIZE,
43 size_t buffer_size = DEFAULT_BUFFER_SIZE);
44
45 Logger(size_t meta_size = DEFAULT_META_SIZE, size_t buffer_size = DEFAULT_BUFFER_SIZE)
46 : Logger(nullptr, meta_size, buffer_size)
47 {
48 }
49
50 ~Logger();
51
52 // delete copy
53 Logger(const Logger&) = delete;
54 Logger& operator=(const Logger&) = delete;
55
56 // allow move
57 Logger(Logger&&) noexcept;
58 Logger& operator=(Logger&&) noexcept;
59
60
61 void retrieve(std::ostream& o = std::cout);
62
63 MUDA_NODISCARD LoggerDataContainer retrieve_meta();
64
65 MUDA_NODISCARD bool is_meta_data_full() const
66 {
67 return m_h_offset.exceed_meta_data;
68 }
69
70 MUDA_NODISCARD bool is_buffer_full() const
71 {
72 return m_h_offset.exceed_buffer;
73 }
74
75 MUDA_NODISCARD LoggerViewer viewer() const
76 {
77 return m_log_viewer_ptr ? *m_log_viewer_ptr : m_viewer;
78 }
79
80 private:
81 friend class LaunchCore;
82 friend class Debug;
83 void expand_meta_data();
84 void expand_buffer();
85 void upload();
86 void download();
87 void expand_if_needed();
88
89 //details::LoggerMetaData* m_meta_data;
90 //size_t m_meta_data_size;
91
92
93 details::TempBuffer<uint32_t> m_sorted_meta_data_id;
95
96 details::TempBuffer<uint32_t> m_meta_data_id;
98
99 std::vector<details::LoggerMetaData> m_h_meta_data;
100
101 //char* m_buffer;
102 //size_t m_buffer_size;
104 std::vector<char> m_h_buffer;
105
106 //details::LoggerOffset* m_offset;
108 details::LoggerOffset m_h_offset;
109
110 LoggerViewer* m_log_viewer_ptr = nullptr;
111 LoggerViewer m_viewer;
112 template <typename F>
113 void _retrieve(F&&);
114 void put(std::ostream& os, const details::LoggerMetaData& meta_data) const;
115};
116//MUDA_INLINE __device__ LoggerViewer cout;
117} // namespace muda
118
119#include <muda/logger/details/logger.inl>
Definition debug.h:8
Definition launch_base.h:42
Definition logger.h:25
Definition logger.h:36
Definition logger.h:14
Definition logger_viewer.h:71
Definition logger_basic_data.h:39
Definition logger_basic_data.h:50
Definition temp_buffer.h:8