//
struct llama_state {
+ llama_state() {
+#ifdef GGML_USE_METAL
+ ggml_metal_log_set_callback(log_callback, log_callback_user_data);
+#endif
+ }
+
// We save the log callback globally
ggml_log_callback log_callback = llama_log_callback_default;
void * log_callback_user_data = nullptr;
#ifdef GGML_USE_METAL
if (model->n_gpu_layers > 0) {
- ggml_metal_log_set_callback(llama_log_callback_default, NULL);
-
ctx->ctx_metal = ggml_metal_init(1);
if (!ctx->ctx_metal) {
LLAMA_LOG_ERROR("%s: ggml_metal_init() failed\n", __func__);
void llama_log_set(ggml_log_callback log_callback, void * user_data) {
g_state.log_callback = log_callback ? log_callback : llama_log_callback_default;
g_state.log_callback_user_data = user_data;
+#ifdef GGML_USE_METAL
+ ggml_metal_log_set_callback(g_state.log_callback, g_state.log_callback_user_data);
+#endif
}
static void llama_log_internal_v(ggml_log_level level, const char * format, va_list args) {