MCPcopy Create free account
hub / github.com/antirez/llama.cpp-deepseek-v4-flash / common_get_device_memory_data

Function common_get_device_memory_data

common/fit.cpp:29–143  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

27};
28
29static std::vector<llama_device_memory_data> common_get_device_memory_data(
30 const char * path_model,
31 const llama_model_params * mparams,
32 const llama_context_params * cparams,
33 std::vector<ggml_backend_dev_t> & devs,
34 uint32_t & hp_ngl,
35 uint32_t & hp_n_ctx_train,
36 uint32_t & hp_n_expert,
37 ggml_log_level log_level) {
38 struct user_data_t {
39 struct {
40 ggml_log_callback callback;
41 void * user_data;
42 } original_logger;
43 ggml_log_level min_level; // prints below this log level go to debug log
44 };
45 user_data_t ud;
46 llama_log_get(&ud.original_logger.callback, &ud.original_logger.user_data);
47 ud.min_level = log_level;
48
49 llama_log_set([](ggml_log_level level, const char * text, void * user_data) {
50 const user_data_t * ud = (const user_data_t *) user_data;
51 const ggml_log_level level_eff = level >= ud->min_level ? level : GGML_LOG_LEVEL_DEBUG;
52 ud->original_logger.callback(level_eff, text, ud->original_logger.user_data);
53 }, &ud);
54
55 llama_model_params mparams_copy = *mparams;
56 mparams_copy.no_alloc = true;
57 mparams_copy.use_mmap = false;
58 mparams_copy.use_mlock = false;
59
60 llama_model * model = llama_model_load_from_file(path_model, mparams_copy);
61 if (model == nullptr) {
62 llama_log_set(ud.original_logger.callback, ud.original_logger.user_data);
63 throw std::runtime_error("failed to load model");
64 }
65
66 llama_context * ctx = llama_init_from_model(model, *cparams);
67 if (ctx == nullptr) {
68 llama_model_free(model);
69 llama_log_set(ud.original_logger.callback, ud.original_logger.user_data);
70 throw std::runtime_error("failed to create llama_context from model");
71 }
72
73 const size_t nd = llama_model_n_devices(model);
74 std::vector<llama_device_memory_data> ret(nd + 1);
75
76 llama_memory_breakdown memory_breakdown = llama_get_memory_breakdown(ctx);
77
78 for (const auto & [buft, mb] : memory_breakdown) {
79 if (ggml_backend_buft_is_host(buft)) {
80 ret.back().mb.model += mb.model;
81 ret.back().mb.context += mb.context;
82 ret.back().mb.compute += mb.compute;
83 continue;
84 }
85
86 ggml_backend_dev_t dev = ggml_backend_buft_get_device(buft);

Callers 2

common_params_fit_implFunction · 0.85
common_fit_printFunction · 0.85

Calls 15

llama_log_getFunction · 0.85
llama_log_setFunction · 0.85
llama_init_from_modelFunction · 0.85
llama_model_freeFunction · 0.85
llama_model_n_devicesFunction · 0.85
llama_model_get_deviceFunction · 0.85
ggml_backend_dev_by_typeFunction · 0.85
ggml_backend_dev_memoryFunction · 0.85

Tested by

no test coverage detected