Procházet zdrojové kódy

Print system information

Georgi Gerganov před 2 roky
rodič
revize
4497ad819c
1 změnil soubory, kde provedl 30 přidání a 3 odebrání
  1. 30 3
      main.cpp

+ 30 - 3
main.cpp

@@ -765,6 +765,26 @@ void sigint_handler(int signo) {
 }
 }
 #endif
 #endif
 
 
+const char * llama_print_system_info(void) {
+    static std::string s;
+
+    s  = "";
+    s += "AVX = "       + std::to_string(ggml_cpu_has_avx())       + " | ";
+    s += "AVX2 = "      + std::to_string(ggml_cpu_has_avx2())      + " | ";
+    s += "AVX512 = "    + std::to_string(ggml_cpu_has_avx512())    + " | ";
+    s += "FMA = "       + std::to_string(ggml_cpu_has_fma())       + " | ";
+    s += "NEON = "      + std::to_string(ggml_cpu_has_neon())      + " | ";
+    s += "ARM_FMA = "   + std::to_string(ggml_cpu_has_arm_fma())   + " | ";
+    s += "F16C = "      + std::to_string(ggml_cpu_has_f16c())      + " | ";
+    s += "FP16_VA = "   + std::to_string(ggml_cpu_has_fp16_va())   + " | ";
+    s += "WASM_SIMD = " + std::to_string(ggml_cpu_has_wasm_simd()) + " | ";
+    s += "BLAS = "      + std::to_string(ggml_cpu_has_blas())      + " | ";
+    s += "SSE3 = "      + std::to_string(ggml_cpu_has_sse3())      + " | ";
+    s += "VSX = "       + std::to_string(ggml_cpu_has_vsx())       + " | ";
+
+    return s.c_str();
+}
+
 int main(int argc, char ** argv) {
 int main(int argc, char ** argv) {
     ggml_time_init();
     ggml_time_init();
     const int64_t t_main_start_us = ggml_time_us();
     const int64_t t_main_start_us = ggml_time_us();
@@ -807,6 +827,13 @@ int main(int argc, char ** argv) {
         t_load_us = ggml_time_us() - t_start_us;
         t_load_us = ggml_time_us() - t_start_us;
     }
     }
 
 
+    // print system information
+    {
+        fprintf(stderr, "\n");
+        fprintf(stderr, "system_info: n_threads = %d / %d | %s\n",
+                params.n_threads, std::thread::hardware_concurrency(), llama_print_system_info());
+    }
+
     int n_past = 0;
     int n_past = 0;
 
 
     int64_t t_sample_us  = 0;
     int64_t t_sample_us  = 0;
@@ -834,7 +861,7 @@ int main(int argc, char ** argv) {
         struct sigaction sigint_action;
         struct sigaction sigint_action;
         sigint_action.sa_handler = sigint_handler;
         sigint_action.sa_handler = sigint_handler;
         sigemptyset (&sigint_action.sa_mask);
         sigemptyset (&sigint_action.sa_mask);
-        sigint_action.sa_flags = 0; 
+        sigint_action.sa_flags = 0;
         sigaction(SIGINT, &sigint_action, NULL);
         sigaction(SIGINT, &sigint_action, NULL);
 #endif
 #endif
 
 
@@ -967,7 +994,7 @@ int main(int argc, char ** argv) {
                 is_interacting = true;
                 is_interacting = true;
             }
             }
             if (is_interacting) {
             if (is_interacting) {
-                // currently being interactive 
+                // currently being interactive
                 bool another_line=true;
                 bool another_line=true;
                 while (another_line) {
                 while (another_line) {
                     fflush(stdout);
                     fflush(stdout);
@@ -999,7 +1026,7 @@ int main(int argc, char ** argv) {
                     input_noecho = true; // do not echo this again
                     input_noecho = true; // do not echo this again
                 }
                 }
 
 
-                is_interacting = false;            
+                is_interacting = false;
             }
             }
         }
         }