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 // init LLM
llama_backend_init(params.numa); llama_backend_init();
llama_numa_init(params.numa);
// initialize the model // 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 let n_len: Int = 32
// init LLM // init LLM
llama_backend_init(GGML_NUMA_STRATEGY_DISABLED) llama_backend_init()
defer { defer {
llama_backend_free() llama_backend_free()
} }

View file

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

View file

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

View file

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

View file

@ -568,7 +568,8 @@ int main(int argc, char ** argv) {
params.prompt = gpt_random_prompt(rng); 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); 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); std::mt19937 rng(params.seed);
LOG("%s: llama backend init\n", __func__); LOG("%s: llama backend init\n", __func__);
llama_backend_init(params.numa); llama_backend_init();
llama_numa_init(params.numa);
llama_model * model; llama_model * model;
llama_context * ctx; llama_context * ctx;

View file

@ -1151,8 +1151,7 @@ int main(int argc, char ** argv) {
if (!params.verbose) { if (!params.verbose) {
llama_log_set(llama_null_log_callback, NULL); llama_log_set(llama_null_log_callback, NULL);
} }
enum ggml_numa_strategies numa = GGML_NUMA_STRATEGY_DISABLED; llama_backend_init();
llama_backend_init(numa);
// initialize printer // initialize printer
std::unique_ptr<printer> p; 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" extern "C"
JNIEXPORT void JNICALL JNIEXPORT void JNICALL
Java_com_example_llama_Llm_backend_1init(JNIEnv *, jobject, jint32 numa) { Java_com_example_llama_Llm_backend_1init(JNIEnv *, jobject) {
llama_backend_init(numa); llama_backend_init();
} }
extern "C" extern "C"

View file

@ -51,7 +51,7 @@ actor LlamaContext {
} }
static func create_context(path: String) throws -> 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() var model_params = llama_model_default_params()
#if targetEnvironment(simulator) #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); 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); 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 #endif // LOG_DISABLE_LOGS
// init llama.cpp // init llama.cpp
llama_backend_init(params.numa); llama_backend_init();
llama_numa_init(params.numa);
llama_model * model = NULL; llama_model * model = NULL;
llama_context * ctx = NULL; llama_context * ctx = NULL;

View file

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

View file

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

View file

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

View file

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

View file

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

View file

@ -237,7 +237,7 @@ int main(int argc, char ** argv) {
params.imatrix = &imatrix_data; params.imatrix = &imatrix_data;
} }
llama_backend_init(GGML_NUMA_STRATEGY_DISABLED); llama_backend_init();
// parse command line arguments // parse command line arguments
const std::string fname_inp = argv[arg_idx]; 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; 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}, LOG_INFO("build info", {{"build", LLAMA_BUILD_NUMBER},
{"commit", LLAMA_COMMIT}}); {"commit", LLAMA_COMMIT}});

View file

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

View file

@ -50,7 +50,8 @@ int main(int argc, char ** argv) {
#endif // LOG_DISABLE_LOGS #endif // LOG_DISABLE_LOGS
// init llama.cpp // init llama.cpp
llama_backend_init(params.numa); llama_backend_init();
llama_numa_init(params.numa);
llama_model * model_tgt = NULL; llama_model * model_tgt = NULL;
llama_model * model_dft = 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"; 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(); llama_model_params model_params = llama_model_default_params();
model_params.vocab_only = true; 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 // Android's libc implementation "bionic" does not support setting affinity
#if defined(__linux__) && !defined(__BIONIC__) #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()) { if (!ggml_is_numa()) {
return; return;
} }
@ -16731,7 +16731,7 @@ static void clear_numa_thread_affinity(void) {
#else #else
// TODO: Windows etc. // TODO: Windows etc.
// (the linux implementation may also work on BSD, someone should test) // (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) {} static void clear_numa_thread_affinity(void) {}
#endif #endif
@ -17031,7 +17031,7 @@ static thread_ret_t ggml_graph_compute_thread(void * data) {
const int n_threads = state->shared->n_threads; 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 node_n = -1;
int task_phase = GGML_TASK_FINALIZE; int task_phase = GGML_TASK_FINALIZE;

View file

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

View file

@ -306,7 +306,10 @@ extern "C" {
// Initialize the llama + ggml backend // Initialize the llama + ggml backend
// If numa is true, use NUMA optimizations // If numa is true, use NUMA optimizations
// Call once at the start of the program // 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 // Call once at the end of the program - currently only used for MPI
LLAMA_API void llama_backend_free(void); 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); auto * model_path = get_model_or_exit(argc, argv);
std::thread([&model_path]() { 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 * model = llama_load_model_from_file(model_path, llama_model_default_params());
auto * ctx = llama_new_context_with_model(model, llama_context_default_params()); auto * ctx = llama_new_context_with_model(model, llama_context_default_params());
llama_free(ctx); llama_free(ctx);

View file

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

View file

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

View file

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

View file

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

View file

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