diff --git a/bindings/ruby/ext/ruby_whisper_params.c b/bindings/ruby/ext/ruby_whisper_params.c index 4a65c92a..624e0080 100644 --- a/bindings/ruby/ext/ruby_whisper_params.c +++ b/bindings/ruby/ext/ruby_whisper_params.c @@ -77,6 +77,8 @@ static ID id_vad_params; static void rb_whisper_callbcack_container_mark(ruby_whisper_callback_container *rwc) { + if (rwc == NULL) return; + rb_gc_mark(rwc->user_data); rb_gc_mark(rwc->callback); rb_gc_mark(rwc->callbacks); diff --git a/examples/bench/bench.cpp b/examples/bench/bench.cpp index 54f73110..979dca8e 100644 --- a/examples/bench/bench.cpp +++ b/examples/bench/bench.cpp @@ -156,6 +156,8 @@ static int whisper_bench_full(const whisper_params & params) { } int main(int argc, char ** argv) { + ggml_backend_load_all(); + whisper_params params; if (whisper_params_parse(argc, argv, params) == false) { diff --git a/examples/cli/cli.cpp b/examples/cli/cli.cpp index 2a0f940d..02327ed8 100644 --- a/examples/cli/cli.cpp +++ b/examples/cli/cli.cpp @@ -909,6 +909,8 @@ static void output_lrc(struct whisper_context * ctx, std::ofstream & fout, const static void cb_log_disable(enum ggml_log_level , const char * , void * ) { } int main(int argc, char ** argv) { + ggml_backend_load_all(); + #if defined(_WIN32) // Set the console output code page to UTF-8, while command line arguments // are still encoded in the system's code page. In this way, we can print @@ -988,7 +990,6 @@ int main(int argc, char ** argv) { } // whisper init - struct whisper_context_params cparams = whisper_context_default_params(); cparams.use_gpu = params.use_gpu; diff --git a/examples/command/command.cpp b/examples/command/command.cpp index 9dc8f629..63684044 100644 --- a/examples/command/command.cpp +++ b/examples/command/command.cpp @@ -678,6 +678,8 @@ static int process_general_transcription(struct whisper_context * ctx, audio_asy } int main(int argc, char ** argv) { + ggml_backend_load_all(); + whisper_params params; if (whisper_params_parse(argc, argv, params) == false) { diff --git a/examples/lsp/lsp.cpp b/examples/lsp/lsp.cpp index a32da511..cf8b75e7 100644 --- a/examples/lsp/lsp.cpp +++ b/examples/lsp/lsp.cpp @@ -424,6 +424,8 @@ static void process_loop(struct whisper_context * ctx, audio_async &audio, const } int main(int argc, char ** argv) { + ggml_backend_load_all(); + whisper_params params; if (whisper_params_parse(argc, argv, params) == false) { return 1; diff --git a/examples/quantize/quantize.cpp b/examples/quantize/quantize.cpp index 17688380..4dbae205 100644 --- a/examples/quantize/quantize.cpp +++ b/examples/quantize/quantize.cpp @@ -1,4 +1,5 @@ #include "ggml.h" +#include "ggml-backend.h" #include "common.h" #include "common-ggml.h" @@ -176,6 +177,8 @@ static bool whisper_model_quantize(const std::string & fname_inp, const std::str } int main(int argc, char ** argv) { + ggml_backend_load_all(); + if (argc != 4) { fprintf(stderr, "usage: %s model-f32.bin model-quant.bin type\n", argv[0]); ggml_print_ftypes(stderr); diff --git a/examples/server/server.cpp b/examples/server/server.cpp index bf81f792..8d99ebee 100644 --- a/examples/server/server.cpp +++ b/examples/server/server.cpp @@ -516,6 +516,8 @@ void get_req_parameters(const Request & req, whisper_params & params) } // namespace int main(int argc, char ** argv) { + ggml_backend_load_all(); + whisper_params params; server_params sparams; diff --git a/examples/stream/stream.cpp b/examples/stream/stream.cpp index 65c6587d..bc6f13fb 100644 --- a/examples/stream/stream.cpp +++ b/examples/stream/stream.cpp @@ -116,6 +116,8 @@ void whisper_print_usage(int /*argc*/, char ** argv, const whisper_params & para } int main(int argc, char ** argv) { + ggml_backend_load_all(); + whisper_params params; if (whisper_params_parse(argc, argv, params) == false) { diff --git a/examples/talk-llama/talk-llama.cpp b/examples/talk-llama/talk-llama.cpp index 17ae1c95..b4219c29 100644 --- a/examples/talk-llama/talk-llama.cpp +++ b/examples/talk-llama/talk-llama.cpp @@ -291,6 +291,8 @@ The transcript only includes text, it does not include markup like HTML and Mark {0}{4})"; int main(int argc, char ** argv) { + ggml_backend_load_all(); + whisper_params params; if (whisper_params_parse(argc, argv, params) == false) { diff --git a/examples/vad-speech-segments/speech.cpp b/examples/vad-speech-segments/speech.cpp index 287933bb..26241d95 100644 --- a/examples/vad-speech-segments/speech.cpp +++ b/examples/vad-speech-segments/speech.cpp @@ -83,6 +83,8 @@ static bool vad_params_parse(int argc, char ** argv, cli_params & params) { static void cb_log_disable(enum ggml_log_level , const char * , void * ) { } int main(int argc, char ** argv) { + ggml_backend_load_all(); + cli_params cli_params; if (!vad_params_parse(argc, argv, cli_params)) { diff --git a/examples/wchess/wchess.cmd/wchess.cmd.cpp b/examples/wchess/wchess.cmd/wchess.cmd.cpp index 4d049976..816eb1b3 100644 --- a/examples/wchess/wchess.cmd/wchess.cmd.cpp +++ b/examples/wchess/wchess.cmd/wchess.cmd.cpp @@ -168,6 +168,8 @@ bool get_audio(std::vector & pcmf32_cur) { } int main(int argc, char ** argv) { + ggml_backend_load_all(); + whisper_params params; if (whisper_params_parse(argc, argv, params) == false) { diff --git a/src/whisper.cpp b/src/whisper.cpp index cb887d45..5c4fc9df 100644 --- a/src/whisper.cpp +++ b/src/whisper.cpp @@ -206,15 +206,6 @@ static bool ggml_graph_compute_helper( return t; } -static void whisper_load_backends() { -#ifdef GGML_BACKEND_DL - static std::once_flag flag; - std::call_once(flag, []() { - ggml_backend_load_all(); - }); -#endif -} - // TODO: move these functions to ggml-base with support for ggml-backend? static ggml_tensor * whisper_set_f32(struct ggml_tensor * t, float v) { @@ -1322,8 +1313,6 @@ static size_t aheads_masks_nbytes(struct whisper_aheads_masks & aheads_masks) { static ggml_backend_t whisper_backend_init_gpu(const whisper_context_params & params) { ggml_log_set(g_state.log_callback, g_state.log_callback_user_data); - whisper_load_backends(); - ggml_backend_dev_t dev = nullptr; int cnt = 0; @@ -4335,8 +4324,6 @@ static int whisper_has_openvino(void) { const char * whisper_print_system_info(void) { static std::string s; - whisper_load_backends(); - s = ""; s += "WHISPER : "; s += "COREML = " + std::to_string(whisper_has_coreml()) + " | "; @@ -8154,8 +8141,6 @@ WHISPER_API int whisper_bench_ggml_mul_mat(int n_threads) { } WHISPER_API const char * whisper_bench_ggml_mul_mat_str(int n_threads) { - whisper_load_backends(); - static std::string s; s = ""; char strbuf[256];