@@ -336,6 +336,7 @@ struct cmd_params {
336336 std::vector<bool > use_mmap;
337337 std::vector<bool > embeddings;
338338 std::vector<bool > no_op_offload;
339+ std::vector<bool > no_host;
339340 ggml_numa_strategy numa;
340341 int reps;
341342 ggml_sched_priority prio;
@@ -373,6 +374,7 @@ static const cmd_params cmd_params_defaults = {
373374 /* use_mmap */ { true },
374375 /* embeddings */ { false },
375376 /* no_op_offload */ { false },
377+ /* no_host */ { false },
376378 /* numa */ GGML_NUMA_STRATEGY_DISABLED,
377379 /* reps */ 5 ,
378380 /* prio */ GGML_SCHED_PRIO_NORMAL,
@@ -453,6 +455,8 @@ static void print_usage(int /* argc */, char ** argv) {
453455 printf (" -ot --override-tensor <tensor name pattern>=<buffer type>;...\n " );
454456 printf (" (default: disabled)\n " );
455457 printf (" -nopo, --no-op-offload <0|1> (default: 0)\n " );
458+ printf (" --no-host <0|1> (default: %s)\n " ,
459+ join (cmd_params_defaults.no_host , " ," ).c_str ());
456460 printf (" \n " );
457461 printf (
458462 " Multiple values can be given for each parameter by separating them with ','\n "
@@ -782,6 +786,13 @@ static cmd_params parse_cmd_params(int argc, char ** argv) {
782786 }
783787 auto p = string_split<bool >(argv[i], split_delim);
784788 params.no_op_offload .insert (params.no_op_offload .end (), p.begin (), p.end ());
789+ } else if (arg == " --no-host" ) {
790+ if (++i >= argc) {
791+ invalid_param = true ;
792+ break ;
793+ }
794+ auto p = string_split<bool >(argv[i], split_delim);
795+ params.no_host .insert (params.no_host .end (), p.begin (), p.end ());
785796 } else if (arg == " -ts" || arg == " --tensor-split" ) {
786797 if (++i >= argc) {
787798 invalid_param = true ;
@@ -1003,6 +1014,9 @@ static cmd_params parse_cmd_params(int argc, char ** argv) {
10031014 if (params.no_op_offload .empty ()) {
10041015 params.no_op_offload = cmd_params_defaults.no_op_offload ;
10051016 }
1017+ if (params.no_host .empty ()) {
1018+ params.no_host = cmd_params_defaults.no_host ;
1019+ }
10061020 if (params.n_threads .empty ()) {
10071021 params.n_threads = cmd_params_defaults.n_threads ;
10081022 }
@@ -1044,6 +1058,7 @@ struct cmd_params_instance {
10441058 bool use_mmap;
10451059 bool embeddings;
10461060 bool no_op_offload;
1061+ bool no_host;
10471062
10481063 llama_model_params to_llama_mparams () const {
10491064 llama_model_params mparams = llama_model_default_params ();
@@ -1056,6 +1071,7 @@ struct cmd_params_instance {
10561071 mparams.main_gpu = main_gpu;
10571072 mparams.tensor_split = tensor_split.data ();
10581073 mparams.use_mmap = use_mmap;
1074+ mparams.no_host = no_host;
10591075
10601076 if (n_cpu_moe <= 0 ) {
10611077 if (tensor_buft_overrides.empty ()) {
@@ -1101,6 +1117,7 @@ struct cmd_params_instance {
11011117 split_mode == other.split_mode &&
11021118 main_gpu == other.main_gpu && use_mmap == other.use_mmap && tensor_split == other.tensor_split &&
11031119 devices == other.devices &&
1120+ no_host == other.no_host &&
11041121 vec_tensor_buft_override_equal (tensor_buft_overrides, other.tensor_buft_overrides );
11051122 }
11061123
@@ -1136,6 +1153,7 @@ static std::vector<cmd_params_instance> get_cmd_params_instances(const cmd_param
11361153 for (const auto & ts : params.tensor_split )
11371154 for (const auto & ot : params.tensor_buft_overrides )
11381155 for (const auto & mmp : params.use_mmap )
1156+ for (const auto & noh : params.no_host )
11391157 for (const auto & embd : params.embeddings )
11401158 for (const auto & nopo : params.no_op_offload )
11411159 for (const auto & nb : params.n_batch )
@@ -1178,6 +1196,7 @@ static std::vector<cmd_params_instance> get_cmd_params_instances(const cmd_param
11781196 /* .use_mmap = */ mmp,
11791197 /* .embeddings = */ embd,
11801198 /* .no_op_offload= */ nopo,
1199+ /* .no_host = */ noh,
11811200 };
11821201 instances.push_back (instance);
11831202 }
@@ -1211,6 +1230,7 @@ static std::vector<cmd_params_instance> get_cmd_params_instances(const cmd_param
12111230 /* .use_mmap = */ mmp,
12121231 /* .embeddings = */ embd,
12131232 /* .no_op_offload= */ nopo,
1233+ /* .no_host = */ noh,
12141234 };
12151235 instances.push_back (instance);
12161236 }
@@ -1244,6 +1264,7 @@ static std::vector<cmd_params_instance> get_cmd_params_instances(const cmd_param
12441264 /* .use_mmap = */ mmp,
12451265 /* .embeddings = */ embd,
12461266 /* .no_op_offload= */ nopo,
1267+ /* .no_host = */ noh,
12471268 };
12481269 instances.push_back (instance);
12491270 }
@@ -1282,6 +1303,7 @@ struct test {
12821303 bool use_mmap;
12831304 bool embeddings;
12841305 bool no_op_offload;
1306+ bool no_host;
12851307 int n_prompt;
12861308 int n_gen;
12871309 int n_depth;
@@ -1318,6 +1340,7 @@ struct test {
13181340 use_mmap = inst.use_mmap ;
13191341 embeddings = inst.embeddings ;
13201342 no_op_offload = inst.no_op_offload ;
1343+ no_host = inst.no_host ;
13211344 n_prompt = inst.n_prompt ;
13221345 n_gen = inst.n_gen ;
13231346 n_depth = inst.n_depth ;
@@ -1375,8 +1398,8 @@ struct test {
13751398 " type_k" , " type_v" , " n_gpu_layers" , " n_cpu_moe" , " split_mode" ,
13761399 " main_gpu" , " no_kv_offload" , " flash_attn" , " devices" , " tensor_split" ,
13771400 " tensor_buft_overrides" , " use_mmap" , " embeddings" , " no_op_offload" ,
1378- " n_prompt " , " n_gen " , " n_depth " , " test_time " , " avg_ns " ,
1379- " stddev_ns" , " avg_ts" , " stddev_ts"
1401+ " no_host " , " n_prompt " , " n_gen " , " n_depth " , " test_time " ,
1402+ " avg_ns " , " stddev_ns" , " avg_ts" , " stddev_ts"
13801403 };
13811404 return fields;
13821405 }
@@ -1391,7 +1414,7 @@ struct test {
13911414 return INT;
13921415 }
13931416 if (field == " f16_kv" || field == " no_kv_offload" || field == " cpu_strict" || field == " flash_attn" ||
1394- field == " use_mmap" || field == " embeddings" ) {
1417+ field == " use_mmap" || field == " embeddings" || field == " no_host " ) {
13951418 return BOOL;
13961419 }
13971420 if (field == " avg_ts" || field == " stddev_ts" ) {
@@ -1466,6 +1489,7 @@ struct test {
14661489 std::to_string (use_mmap),
14671490 std::to_string (embeddings),
14681491 std::to_string (no_op_offload),
1492+ std::to_string (no_host),
14691493 std::to_string (n_prompt),
14701494 std::to_string (n_gen),
14711495 std::to_string (n_depth),
@@ -1654,6 +1678,9 @@ struct markdown_printer : public printer {
16541678 if (field == " no_op_offload" ) {
16551679 return 4 ;
16561680 }
1681+ if (field == " no_host" ) {
1682+ return 4 ;
1683+ }
16571684
16581685 int width = std::max ((int ) field.length (), 10 );
16591686
@@ -1688,6 +1715,9 @@ struct markdown_printer : public printer {
16881715 if (field == " no_op_offload" ) {
16891716 return " nopo" ;
16901717 }
1718+ if (field == " no_host" ) {
1719+ return " noh" ;
1720+ }
16911721 if (field == " devices" ) {
16921722 return " dev" ;
16931723 }
@@ -1768,6 +1798,9 @@ struct markdown_printer : public printer {
17681798 if (params.no_op_offload .size () > 1 || params.no_op_offload != cmd_params_defaults.no_op_offload ) {
17691799 fields.emplace_back (" no_op_offload" );
17701800 }
1801+ if (params.no_host .size () > 1 || params.no_host != cmd_params_defaults.no_host ) {
1802+ fields.emplace_back (" no_host" );
1803+ }
17711804 fields.emplace_back (" test" );
17721805 fields.emplace_back (" t/s" );
17731806
0 commit comments