1#pragma once
2
3#include "ggml.h" // for ggml_log_level
4
5#include <string>
6#include <vector>
7
8#ifdef __GNUC__
9# if defined(__MINGW32__) && !defined(__clang__)
10# define LLAMA_ATTRIBUTE_FORMAT(...) __attribute__((format(gnu_printf, __VA_ARGS__)))
11# else
12# define LLAMA_ATTRIBUTE_FORMAT(...) __attribute__((format(printf, __VA_ARGS__)))
13# endif
14#else
15# define LLAMA_ATTRIBUTE_FORMAT(...)
16#endif
17
18//
19// logging
20//
21
22LLAMA_ATTRIBUTE_FORMAT(2, 3)
23void llama_log_internal (ggml_log_level level, const char * format, ...);
24void llama_log_callback_default(ggml_log_level level, const char * text, void * user_data);
25
26#define LLAMA_LOG(...) llama_log_internal(GGML_LOG_LEVEL_NONE , __VA_ARGS__)
27#define LLAMA_LOG_INFO(...) llama_log_internal(GGML_LOG_LEVEL_INFO , __VA_ARGS__)
28#define LLAMA_LOG_WARN(...) llama_log_internal(GGML_LOG_LEVEL_WARN , __VA_ARGS__)
29#define LLAMA_LOG_ERROR(...) llama_log_internal(GGML_LOG_LEVEL_ERROR, __VA_ARGS__)
30#define LLAMA_LOG_DEBUG(...) llama_log_internal(GGML_LOG_LEVEL_DEBUG, __VA_ARGS__)
31#define LLAMA_LOG_CONT(...) llama_log_internal(GGML_LOG_LEVEL_CONT , __VA_ARGS__)
32
33//
34// helpers
35//
36
37template <typename T>
38struct no_init {
39 T value;
40 no_init() = default;
41};
42
43struct time_meas {
44 time_meas(int64_t & t_acc, bool disable = false);
45 ~time_meas();
46
47 const int64_t t_start_us;
48
49 int64_t & t_acc;
50};
51
52template <typename T>
53struct buffer_view {
54 T * data;
55 size_t size = 0;
56
57 bool has_data() const {
58 return data && size > 0;
59 }
60};
61
62void replace_all(std::string & s, const std::string & search, const std::string & replace);
63
64// TODO: rename to llama_format ?
65LLAMA_ATTRIBUTE_FORMAT(1, 2)
66std::string format(const char * fmt, ...);
67
68std::string llama_format_tensor_shape(const std::vector<int64_t> & ne);
69std::string llama_format_tensor_shape(const struct ggml_tensor * t);
70
71std::string gguf_kv_to_str(const struct gguf_context * ctx_gguf, int i);
72
73#define LLAMA_TENSOR_NAME_FATTN "__fattn__"