split numa init out from llama_backend_init and created llama_numa_init. Updated all code paths and samples

This commit is contained in:
root 2024-02-14 09:46:06 +00:00
parent 0e05042b45
commit 0fb40ae755
31 changed files with 59 additions and 39 deletions

View file

@ -82,7 +82,8 @@ int main(int argc, char ** argv) {
// init LLM
llama_backend_init(params.numa);
llama_backend_init();
llama_numa_init(params.numa);
// initialize the model

View file

@ -17,7 +17,7 @@ let n_parallel: Int = arguments.count > 3 && Int(arguments[3]) != nil ? Int(argu
let n_len: Int = 32
// init LLM
llama_backend_init(GGML_NUMA_STRATEGY_DISABLED)
llama_backend_init()
defer {
llama_backend_free()
}

View file

@ -50,7 +50,8 @@ int main(int argc, char ** argv) {
// init LLM
llama_backend_init(params.numa);
llama_backend_init();
llama_numa_init(params.numa);
// initialize the model

View file

@ -119,7 +119,8 @@ int main(int argc, char ** argv)
// Init LLM :
//---------------------------------
llama_backend_init(params.numa);
llama_backend_init();
llama_numa_init(params.numa);
llama_model * model;
llama_context * ctx;

View file

@ -74,7 +74,8 @@ int main(int argc, char ** argv) {
params.prompt = gpt_random_prompt(rng);
}
llama_backend_init(params.numa);
llama_backend_init();
llama_numa_init(params.numa);
llama_model * model;
llama_context * ctx;

View file

@ -568,7 +568,8 @@ int main(int argc, char ** argv) {
params.prompt = gpt_random_prompt(rng);
}
llama_backend_init(params.numa);
llama_backend_init();
llama_numa_init(params.numa);
llama_model_params mparams = llama_model_params_from_gpt_params(params);

View file

@ -202,7 +202,8 @@ int main(int argc, char ** argv) {
std::mt19937 rng(params.seed);
LOG("%s: llama backend init\n", __func__);
llama_backend_init(params.numa);
llama_backend_init();
llama_numa_init(params.numa);
llama_model * model;
llama_context * ctx;

View file

@ -1151,8 +1151,7 @@ int main(int argc, char ** argv) {
if (!params.verbose) {
llama_log_set(llama_null_log_callback, NULL);
}
enum ggml_numa_strategies numa = GGML_NUMA_STRATEGY_DISABLED;
llama_backend_init(numa);
llama_backend_init();
// initialize printer
std::unique_ptr<printer> p;

View file

@ -274,8 +274,8 @@ Java_com_example_llama_Llm_new_1batch(JNIEnv *, jobject, jint n_tokens, jint emb
extern "C"
JNIEXPORT void JNICALL
Java_com_example_llama_Llm_backend_1init(JNIEnv *, jobject, jint32 numa) {
llama_backend_init(numa);
Java_com_example_llama_Llm_backend_1init(JNIEnv *, jobject) {
llama_backend_init();
}
extern "C"

View file

@ -51,7 +51,7 @@ actor LlamaContext {
}
static func create_context(path: String) throws -> LlamaContext {
llama_backend_init(GGML_NUMA_STRATEGY_DISABLED)
llama_backend_init()
var model_params = llama_model_default_params()
#if targetEnvironment(simulator)

View file

@ -196,7 +196,8 @@ static struct llava_context * llava_init(gpt_params * params) {
auto ctx_clip = clip_model_load(clip_path, /*verbosity=*/ 1);
llama_backend_init(params->numa);
llama_backend_init();
llama_numa_init(params->numa);
llama_model_params model_params = llama_model_params_from_gpt_params(*params);

View file

@ -54,7 +54,8 @@ int main(int argc, char ** argv) {
#endif // LOG_DISABLE_LOGS
// init llama.cpp
llama_backend_init(params.numa);
llama_backend_init();
llama_numa_init(params.numa);
llama_model * model = NULL;
llama_context * ctx = NULL;

View file

@ -31,7 +31,8 @@ int main(int argc, char ** argv){
#endif // LOG_DISABLE_LOGS
// init llama.cpp
llama_backend_init(params.numa);
llama_backend_init();
llama_numa_init(params.numa);
llama_model * model = NULL;
llama_context * ctx = NULL;

View file

@ -185,7 +185,8 @@ int main(int argc, char ** argv) {
}
LOG("%s: llama backend init\n", __func__);
llama_backend_init(params.numa);
llama_backend_init();
llama_numa_init(params.numa);
llama_model * model;
llama_context * ctx;

View file

@ -122,7 +122,8 @@ int main(int argc, char ** argv) {
#endif // LOG_DISABLE_LOGS
// init llama.cpp
llama_backend_init(params.numa);
llama_backend_init();
llama_numa_init(params.numa);
llama_model * model = NULL;
llama_context * ctx = NULL;

View file

@ -71,7 +71,8 @@ int main(int argc, char ** argv) {
// init LLM
llama_backend_init(params.numa);
llama_backend_init();
llama_numa_init(params.numa);
// initialize the model

View file

@ -1809,7 +1809,8 @@ int main(int argc, char ** argv) {
params.prompt = gpt_random_prompt(rng);
}
llama_backend_init(params.numa);
llama_backend_init();
llama_numa_init(params.numa);
llama_model * model;
llama_context * ctx;

View file

@ -237,7 +237,7 @@ int main(int argc, char ** argv) {
params.imatrix = &imatrix_data;
}
llama_backend_init(GGML_NUMA_STRATEGY_DISABLED);
llama_backend_init();
// parse command line arguments
const std::string fname_inp = argv[arg_idx];

View file

@ -2492,7 +2492,8 @@ int main(int argc, char **argv)
params.model_alias = params.model;
}
llama_backend_init(params.numa);
llama_backend_init();
llama_numa_init(params.numa);
LOG_INFO("build info", {{"build", LLAMA_BUILD_NUMBER},
{"commit", LLAMA_COMMIT}});

View file

@ -31,7 +31,8 @@ int main(int argc, char ** argv) {
// init LLM
llama_backend_init(params.numa);
llama_backend_init();
llama_numa_init(params.numa);
// initialize the model

View file

@ -50,7 +50,8 @@ int main(int argc, char ** argv) {
#endif // LOG_DISABLE_LOGS
// init llama.cpp
llama_backend_init(params.numa);
llama_backend_init();
llama_numa_init(params.numa);
llama_model * model_tgt = NULL;
llama_model * model_dft = NULL;

View file

@ -17,7 +17,7 @@ int main(int argc, char ** argv) {
const bool printing_ids = argc > 3 && std::string(argv[3]) == "--ids";
llama_backend_init(GGML_NUMA_STRATEGY_DISABLED);
llama_backend_init();
llama_model_params model_params = llama_model_default_params();
model_params.vocab_only = true;

6
ggml.c
View file

@ -16663,7 +16663,7 @@ typedef pthread_t ggml_thread_t;
// Android's libc implementation "bionic" does not support setting affinity
#if defined(__linux__) && !defined(__BIONIC__)
static void set_numa_thread_affinity(int thread_n, int n_threads) {
static void set_numa_thread_affinity(int thread_n) {
if (!ggml_is_numa()) {
return;
}
@ -16731,7 +16731,7 @@ static void clear_numa_thread_affinity(void) {
#else
// TODO: Windows etc.
// (the linux implementation may also work on BSD, someone should test)
static void set_numa_thread_affinity(int thread_n, int n_threads) { UNUSED(thread_n); UNUSED(n_threads); }
static void set_numa_thread_affinity(int thread_n) { UNUSED(thread_n); }
static void clear_numa_thread_affinity(void) {}
#endif
@ -17031,7 +17031,7 @@ static thread_ret_t ggml_graph_compute_thread(void * data) {
const int n_threads = state->shared->n_threads;
set_numa_thread_affinity(state->ith, n_threads);
set_numa_thread_affinity(state->ith);
int node_n = -1;
int task_phase = GGML_TASK_FINALIZE;

View file

@ -11156,7 +11156,7 @@ bool llama_mlock_supported(void) {
return llama_supports_mlock();
}
void llama_backend_init(enum ggml_numa_strategies numa) {
void llama_backend_init(void) {
ggml_time_init();
// needed to initialize f16 tables
@ -11166,15 +11166,17 @@ void llama_backend_init(enum ggml_numa_strategies numa) {
ggml_free(ctx);
}
if (numa > 0) {
ggml_numa_init(numa);
}
#ifdef GGML_USE_MPI
ggml_mpi_backend_init();
#endif
}
void llama_numa_init(enum ggml_numa_strategies numa) {
if (numa > 0) {
ggml_numa_init(numa);
}
}
void llama_backend_free(void) {
#ifdef GGML_USE_MPI
ggml_mpi_backend_free();

View file

@ -306,7 +306,10 @@ extern "C" {
// Initialize the llama + ggml backend
// If numa is true, use NUMA optimizations
// Call once at the start of the program
LLAMA_API void llama_backend_init(enum ggml_numa_strategies numa);
LLAMA_API void llama_backend_init(void);
//optional:
LLAMA_API void llama_numa_init(enum ggml_numa_strategies numa);
// Call once at the end of the program - currently only used for MPI
LLAMA_API void llama_backend_free(void);

View file

@ -12,7 +12,7 @@ int main(int argc, char ** argv) {
auto * model_path = get_model_or_exit(argc, argv);
std::thread([&model_path]() {
llama_backend_init(GGML_NUMA_STRATEGY_DISABLED);
llama_backend_init();
auto * model = llama_load_model_from_file(model_path, llama_model_default_params());
auto * ctx = llama_new_context_with_model(model, llama_context_default_params());
llama_free(ctx);

View file

@ -14,7 +14,7 @@ int main(int argc, char *argv[] ) {
fprintf(stderr, "using '%s'\n", model_path);
fclose(file);
llama_backend_init(GGML_NUMA_STRATEGY_DISABLED);
llama_backend_init();
auto params = llama_model_params{};
params.use_mmap = false;
params.progress_callback = [](float progress, void * ctx){

View file

@ -61,7 +61,7 @@ int main(int argc, char **argv) {
llama_model * model;
llama_context * ctx;
llama_backend_init(GGML_NUMA_STRATEGY_DISABLED);
llama_backend_init();
// load the vocab
{

View file

@ -60,7 +60,7 @@ int main(int argc, char **argv) {
llama_model * model;
llama_context * ctx;
llama_backend_init(GGML_NUMA_STRATEGY_DISABLED);
llama_backend_init();
// load the vocab
{

View file

@ -25,7 +25,7 @@ int main(int argc, char **argv) {
llama_model * model;
llama_context * ctx;
llama_backend_init(GGML_NUMA_STRATEGY_DISABLED);
llama_backend_init();
// load the vocab
{

View file

@ -25,7 +25,7 @@ int main(int argc, char **argv) {
llama_model * model;
llama_context * ctx;
llama_backend_init(GGML_NUMA_STRATEGY_DISABLED);
llama_backend_init();
// load the vocab
{