split numa init out from llama_backend_init and created llama_numa_init. Updated all code paths and samples
This commit is contained in:
parent
0e05042b45
commit
0fb40ae755
31 changed files with 59 additions and 39 deletions
|
@ -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
|
||||||
|
|
||||||
|
|
|
@ -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()
|
||||||
}
|
}
|
||||||
|
|
|
@ -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
|
||||||
|
|
||||||
|
|
|
@ -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;
|
||||||
|
|
|
@ -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;
|
||||||
|
|
|
@ -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);
|
||||||
|
|
||||||
|
|
|
@ -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;
|
||||||
|
|
|
@ -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;
|
||||||
|
|
|
@ -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"
|
||||||
|
|
|
@ -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)
|
||||||
|
|
|
@ -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);
|
||||||
|
|
||||||
|
|
|
@ -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;
|
||||||
|
|
|
@ -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;
|
||||||
|
|
|
@ -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;
|
||||||
|
|
|
@ -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;
|
||||||
|
|
|
@ -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
|
||||||
|
|
||||||
|
|
|
@ -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;
|
||||||
|
|
|
@ -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];
|
||||||
|
|
|
@ -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}});
|
||||||
|
|
|
@ -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
|
||||||
|
|
||||||
|
|
|
@ -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;
|
||||||
|
|
|
@ -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
6
ggml.c
|
@ -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;
|
||||||
|
|
12
llama.cpp
12
llama.cpp
|
@ -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();
|
||||||
|
|
5
llama.h
5
llama.h
|
@ -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);
|
||||||
|
|
|
@ -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);
|
||||||
|
|
|
@ -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){
|
||||||
|
|
|
@ -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
|
||||||
{
|
{
|
||||||
|
|
|
@ -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
|
||||||
{
|
{
|
||||||
|
|
|
@ -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
|
||||||
{
|
{
|
||||||
|
|
|
@ -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
|
||||||
{
|
{
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue