Skip to content

Compilation failed on macOS 10.7-8-9: 'clock_gettime' produce warnings and errors #788

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
Errand24 opened this issue Apr 5, 2023 · 20 comments
Labels
bug Something isn't working build Compilation issues macos Issues specific to macOS stale

Comments

@Errand24
Copy link

Errand24 commented Apr 5, 2023

PREREQUISITES

EXPECTED BEHAVIOR

  • Attempted to compile the binary for macOS 10.7, 10.8 and 10.9.
  • Expected to run the chat app on an old macOS, that will be isolated from Internet.

ACTUAL BEHAVIOR

  • Compilation is terminated with warnings and errors.

ENVIRONMENT AND CONTEXT

  • Macbook pro 15 2012: macOS 10.8 Mountain Lion on Core i7 + 512 SDD + 16Gb RAM
    • Parallels Virtual Machine: macOS 10.7 Lion on 20Gb HDD + 4Gb RAM
      • X-Code 4.6.3
      • Command Line Tools OS X Lion Nov2012
      • MacPorts 2.8.1 10.7 (Lion)
        • git --version 2.40.0
        • clang --version 11.1.0
          • port select --set clang mp-clang-11
        • gcc --version 12.2.0
          • port select --set gcc mp-gcc12
      • export CC=gcc (in another re-try: export CC=clang)
      • export CXX=gcc (in another re-try: export CXX=clang)

FAILURE INFORMATION

  • Same issue is reproduced on macOS 10.8 on VM and macOS 10.9 on real machine.
  • Same issue is reproduced with gcc6 installed through Tigerbrew on macOS 10.9 real machine.
  • Same issue is reproduced for 'alpaca.cpp': 'clock_gettime' produce mostly the same warnings and errors on this environment.
  • 'stdatomic.h' issue is reproduced if latest gcc and clang versions are not set in ports and also CC and CXX vars are not set
  • '-gnu11', '-lrt' and '-D_POSIX_C_SOURCE=199309L' flags doesn't help, '-gnu99' gives more errors
  • Compilation successful on macOS 10.14 (Mojave) VM with Command Line Tools for Xcode 11.3.1. Chat + 7b is working.
  • Fix on this issue states that older OSX versions don't implement 'clock_gettime ()' and author seem to find solution

STEPS TO REPRODUCE

  1. Clone the repo (or download the latest build and un-tar gz using tar -xvzf)
  2. cd the llama.cpp dir (or rename the latest build dir to 'llama.cpp' and cd there)
  3. make

FAILURE LOGS

CC=gcc and CXX=gcc env vars set:

I llama.cpp build info: 
I UNAME_S:  Darwin
I UNAME_P:  i386
I UNAME_M:  x86_64
I CFLAGS:   -I.              -O3 -DNDEBUG -std=c11   -fPIC -Wall -Wextra -Wpedantic -Wcast-qual -Wdouble-promotion -Wshadow -Wstrict-prototypes -Wpointer-arith -Wno-unused-function -pthread -march=native -mtune=native -DGGML_USE_ACCELERATE
I CXXFLAGS: -I. -I./examples -O3 -DNDEBUG -std=c++11 -fPIC -Wall -Wextra -Wpedantic -Wcast-qual -Wno-unused-function -pthread -march=native -mtune=native
I LDFLAGS:   -framework Accelerate
I CC:       gcc (MacPorts gcc12 12.2.0_2+stdlib_flag) 12.2.0
I CXX:      gcc (MacPorts gcc12 12.2.0_2+stdlib_flag) 12.2.0

gcc  -I.              -O3 -DNDEBUG -std=c11   -fPIC -Wall -Wextra -Wpedantic -Wcast-qual -Wdouble-promotion -Wshadow -Wstrict-prototypes -Wpointer-arith -Wno-unused-function -pthread -march=native -mtune=native -DGGML_USE_ACCELERATE   -c ggml.c -o ggml.o
ggml.c: In function 'ggml_time_ms':
ggml.c:376:5: warning: implicit declaration of function 'clock_gettime' [-Wimplicit-function-declaration]
  376 |     clock_gettime(CLOCK_MONOTONIC, &ts);
      |     ^~~~~~~~~~~~~
ggml.c:376:19: error: 'CLOCK_MONOTONIC' undeclared (first use in this function)
  376 |     clock_gettime(CLOCK_MONOTONIC, &ts);
      |                   ^~~~~~~~~~~~~~~
ggml.c:376:19: note: each undeclared identifier is reported only once for each function it appears in
ggml.c: In function 'ggml_time_us':
ggml.c:382:19: error: 'CLOCK_MONOTONIC' undeclared (first use in this function)
  382 |     clock_gettime(CLOCK_MONOTONIC, &ts);
      |                   ^~~~~~~~~~~~~~~
ggml.c: In function 'quantize_row_q4_1':
ggml.c:856:27: warning: unused variable 'y' [-Wunused-variable]
  856 |     block_q4_1 * restrict y = vy;
      |                           ^
ggml.c:854:15: warning: unused variable 'nb' [-Wunused-variable]
  854 |     const int nb = k / QK;
      |               ^~
ggml.c: In function 'ggml_vec_sum_f32':
ggml.c:2531:14: warning: passing argument 1 of 'vDSP_sve' discards 'const' qualifier from pointer target type [-Wdiscarded-qualifiers]
 2531 |     vDSP_sve(x, 1, s, n);
      |              ^
In file included from /System/Library/Frameworks/vecLib.framework/Headers/vecLib.h:41,
                 from /System/Library/Frameworks/Accelerate.framework/Headers/Accelerate.h:20,
                 from ggml.c:143:
/System/Library/Frameworks/vecLib.framework/Headers/vDSP.h:4191:17: note: expected 'float *' but argument is of type 'const float *'
 4191 |   float *       __vDSP_A,
      |   ~~~~~~~~~~~~~~^~~~~~~~
ggml.c: In function 'ggml_vec_max_f32':
ggml.c:2543:15: warning: passing argument 1 of 'vDSP_maxv' discards 'const' qualifier from pointer target type [-Wdiscarded-qualifiers]
 2543 |     vDSP_maxv(x, 1, s, n);
      |               ^
/System/Library/Frameworks/vecLib.framework/Headers/vDSP.h:3625:17: note: expected 'float *' but argument is of type 'const float *'
 3625 |   float *       __vDSP_A,
      |   ~~~~~~~~~~~~~~^~~~~~~~
make: *** [ggml.o] Error 1

CC=clang and CXX=clang env vars set:

I llama.cpp build info: 
I UNAME_S:  Darwin
I UNAME_P:  i386
I UNAME_M:  x86_64
I CFLAGS:   -I.              -O3 -DNDEBUG -std=c11   -fPIC -Wall -Wextra -Wpedantic -Wcast-qual -Wdouble-promotion -Wshadow -Wstrict-prototypes -Wpointer-arith -Wno-unused-function -pthread -march=native -mtune=native -DGGML_USE_ACCELERATE
I CXXFLAGS: -I. -I./examples -O3 -DNDEBUG -std=c++11 -fPIC -Wall -Wextra -Wpedantic -Wcast-qual -Wno-unused-function -pthread -march=native -mtune=native
I LDFLAGS:   -framework Accelerate
I CC:       clang version 11.1.0
I CXX:      clang version 11.1.0

clang  -I.              -O3 -DNDEBUG -std=c11   -fPIC -Wall -Wextra -Wpedantic -Wcast-qual -Wdouble-promotion -Wshadow -Wstrict-prototypes -Wpointer-arith -Wno-unused-function -pthread -march=native -mtune=native -DGGML_USE_ACCELERATE   -c ggml.c -o ggml.o
ggml.c:376:5: warning: implicit declaration of function 'clock_gettime' is invalid in C99 [-Wimplicit-function-declaration]
    clock_gettime(CLOCK_MONOTONIC, &ts);
    ^
ggml.c:376:19: error: use of undeclared identifier 'CLOCK_MONOTONIC'
    clock_gettime(CLOCK_MONOTONIC, &ts);
                  ^
ggml.c:382:5: warning: implicit declaration of function 'clock_gettime' is invalid in C99 [-Wimplicit-function-declaration]
    clock_gettime(CLOCK_MONOTONIC, &ts);
    ^
ggml.c:382:19: error: use of undeclared identifier 'CLOCK_MONOTONIC'
    clock_gettime(CLOCK_MONOTONIC, &ts);
                  ^
ggml.c:854:15: warning: unused variable 'nb' [-Wunused-variable]
    const int nb = k / QK;
              ^
ggml.c:856:27: warning: unused variable 'y' [-Wunused-variable]
    block_q4_1 * restrict y = vy;
                          ^
ggml.c:1813:5: warning: implicit conversion increases floating-point precision: 'float' to 'ggml_float' (aka 'double') [-Wdouble-promotion]
    GGML_F16_VEC_REDUCE(sumf, sum);
    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
ggml.c:1427:37: note: expanded from macro 'GGML_F16_VEC_REDUCE'
#define GGML_F16_VEC_REDUCE         GGML_F32Cx8_REDUCE
                                    ^
ggml.c:1417:33: note: expanded from macro 'GGML_F32Cx8_REDUCE'
#define GGML_F32Cx8_REDUCE      GGML_F32x8_REDUCE
                                ^
ggml.c:1364:11: note: expanded from macro 'GGML_F32x8_REDUCE'
    res = _mm_cvtss_f32(_mm_hadd_ps(t1, t1));                     \
        ~ ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
ggml.c:2372:9: warning: implicit conversion increases floating-point precision: 'float' to 'ggml_float' (aka 'double') [-Wdouble-promotion]
        GGML_F16_VEC_REDUCE(sumf[k], sum[k]);
        ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
ggml.c:1427:37: note: expanded from macro 'GGML_F16_VEC_REDUCE'
#define GGML_F16_VEC_REDUCE         GGML_F32Cx8_REDUCE
                                    ^
ggml.c:1417:33: note: expanded from macro 'GGML_F32Cx8_REDUCE'
#define GGML_F32Cx8_REDUCE      GGML_F32x8_REDUCE
                                ^
ggml.c:1364:11: note: expanded from macro 'GGML_F32x8_REDUCE'
    res = _mm_cvtss_f32(_mm_hadd_ps(t1, t1));                     \
        ~ ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
ggml.c:2531:14: warning: passing 'const float *' to parameter of type 'float *' discards qualifiers [-Wincompatible-pointer-types-discards-qualifiers]
    vDSP_sve(x, 1, s, n);
             ^
/System/Library/Frameworks/vecLib.framework/Headers/vDSP.h:4191:17: note: passing argument to parameter '__vDSP_A' here
  float *       __vDSP_A,
                ^
ggml.c:2543:15: warning: passing 'const float *' to parameter of type 'float *' discards qualifiers [-Wincompatible-pointer-types-discards-qualifiers]
    vDSP_maxv(x, 1, s, n);
              ^
/System/Library/Frameworks/vecLib.framework/Headers/vDSP.h:3625:17: note: passing argument to parameter '__vDSP_A' here
  float *       __vDSP_A,
                ^
8 warnings and 2 errors generated.
make: *** [ggml.o] Error 1
@bakkot
Copy link
Contributor

bakkot commented Apr 6, 2023

OS X 10.8 was released more than a decade ago. The last release was in 2015. I suspect if you want this project to work on such an old OS you'll probably need to do the work necessary yourself.

@Errand24
Copy link
Author

Errand24 commented Apr 6, 2023

OS X 10.8 was released more than a decade ago. The last release was in 2015. I suspect if you want this project to work on such an old OS you'll probably need to do the work necessary yourself.

I agree to do what I can!
For a certain reason, the need is high, I'm a QA and am ready to help with testing, but I'm not a programmer and can't write the code...

At least I need help in pointing out: what exactly to do, the direction.
If there's something missing in configuration - I have to know what exactly.

@j-f1
Copy link
Collaborator

j-f1 commented Apr 6, 2023

If you replace the following code in ggml.c with the following code block you should be able to compile (although you may have other issues running):

int64_t ggml_time_ms(void) {
    struct timespec ts;
    clock_gettime(CLOCK_MONOTONIC, &ts);
    return (int64_t)ts.tv_sec*1000 + (int64_t)ts.tv_nsec/1000000;
}

int64_t ggml_time_us(void) {
    struct timespec ts;
    clock_gettime(CLOCK_MONOTONIC, &ts);
    return (int64_t)ts.tv_sec*1000000 + (int64_t)ts.tv_nsec/1000;
}

Replacement (most time values will be reported as 0):

int64_t ggml_time_ms(void) {
    return 0;
}

int64_t ggml_time_us(void) {
    return 0;
}

@gjmulder gjmulder added bug Something isn't working build Compilation issues labels Apr 6, 2023
@gjmulder
Copy link
Collaborator

gjmulder commented Apr 6, 2023

For a certain reason, the need is high, I'm a QA and am ready to help with testing, but I'm not a programmer and can't write the code...

QA is always good to have!

Run Ubuntu Linux in a VM perhaps? I'd only try the 7B model as it will likely be very slow. 4 cores and 8GB of RAM is about the minimum spec.

@Errand24
Copy link
Author

Errand24 commented Apr 7, 2023

@j-f1 Thanks a lot - replacement of the code allowed to move a little bit forward:

I have force-applied clang usage as it seems to go better than even the latest gcc:

I llama.cpp build info: 
I UNAME_S:  Darwin
I UNAME_P:  i386
I UNAME_M:  x86_64
I CFLAGS:   -I.              -O3 -DNDEBUG -std=c11   -fPIC -Wall -Wextra -Wpedantic -Wcast-qual -Wdouble-promotion -Wshadow -Wstrict-prototypes -Wpointer-arith -Wno-unused-function -pthread -march=native -mtune=native -DGGML_USE_ACCELERATE
I CXXFLAGS: -I. -I./examples -O3 -DNDEBUG -std=c++11 -fPIC -Wall -Wextra -Wpedantic -Wcast-qual -Wno-unused-function -pthread -march=native -mtune=native
I LDFLAGS:   -framework Accelerate
I CC:       clang version 11.1.0
I CXX:      clang version 11.1.0

clang  -I.              -O3 -DNDEBUG -std=c11   -fPIC -Wall -Wextra -Wpedantic -Wcast-qual -Wdouble-promotion -Wshadow -Wstrict-prototypes -Wpointer-arith -Wno-unused-function -pthread -march=native -mtune=native -DGGML_USE_ACCELERATE   -c ggml.c -o ggml.o
ggml.c:852:27: warning: unused variable 'y' [-Wunused-variable]
    block_q4_1 * restrict y = vy;
                          ^
ggml.c:850:15: warning: unused variable 'nb' [-Wunused-variable]
    const int nb = k / QK;
              ^
ggml.c:1809:5: warning: implicit conversion increases floating-point precision: 'float' to 'ggml_float' (aka 'double') [-Wdouble-promotion]
    GGML_F16_VEC_REDUCE(sumf, sum);
    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
ggml.c:1423:37: note: expanded from macro 'GGML_F16_VEC_REDUCE'
#define GGML_F16_VEC_REDUCE         GGML_F32Cx8_REDUCE
                                    ^
ggml.c:1413:33: note: expanded from macro 'GGML_F32Cx8_REDUCE'
#define GGML_F32Cx8_REDUCE      GGML_F32x8_REDUCE
                                ^
ggml.c:1360:11: note: expanded from macro 'GGML_F32x8_REDUCE'
    res = _mm_cvtss_f32(_mm_hadd_ps(t1, t1));                     \
        ~ ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
ggml.c:2368:9: warning: implicit conversion increases floating-point precision: 'float' to 'ggml_float' (aka 'double') [-Wdouble-promotion]
        GGML_F16_VEC_REDUCE(sumf[k], sum[k]);
        ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
ggml.c:1423:37: note: expanded from macro 'GGML_F16_VEC_REDUCE'
#define GGML_F16_VEC_REDUCE         GGML_F32Cx8_REDUCE
                                    ^
ggml.c:1413:33: note: expanded from macro 'GGML_F32Cx8_REDUCE'
#define GGML_F32Cx8_REDUCE      GGML_F32x8_REDUCE
                                ^
ggml.c:1360:11: note: expanded from macro 'GGML_F32x8_REDUCE'
    res = _mm_cvtss_f32(_mm_hadd_ps(t1, t1));                     \
        ~ ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
ggml.c:2527:14: warning: passing 'const float *' to parameter of type 'float *' discards qualifiers [-Wincompatible-pointer-types-discards-qualifiers]
    vDSP_sve(x, 1, s, n);
             ^
/System/Library/Frameworks/vecLib.framework/Headers/vDSP.h:4191:17: note: passing argument to parameter '__vDSP_A' here
  float *       __vDSP_A,
                ^
ggml.c:2539:15: warning: passing 'const float *' to parameter of type 'float *' discards qualifiers [-Wincompatible-pointer-types-discards-qualifiers]
    vDSP_maxv(x, 1, s, n);
              ^
/System/Library/Frameworks/vecLib.framework/Headers/vDSP.h:3625:17: note: passing argument to parameter '__vDSP_A' here
  float *       __vDSP_A,
                ^
6 warnings generated.

llama.o and common.o compiled with silence:

clang -I. -I./examples -O3 -DNDEBUG -std=c++11 -fPIC -Wall -Wextra -Wpedantic -Wcast-qual -Wno-unused-function -pthread -march=native -mtune=native -c llama.cpp -o llama.o
clang -I. -I./examples -O3 -DNDEBUG -std=c++11 -fPIC -Wall -Wextra -Wpedantic -Wcast-qual -Wno-unused-function -pthread -march=native -mtune=native -c examples/common.cpp -o common.o

I even crossed fingers: it felt like success, only the last step left... but suddenly:

d-function -pthread -march=native -mtune=native examples/main/main.cpp ggml.o llama.o common.o -o main  -framework Accelerate
Undefined symbols for architecture x86_64:
  "std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >::find(char const*, unsigned long, unsigned long) const", referenced from:
      _main in main-256172.o
  "std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >::compare(unsigned long, unsigned long, char const*, unsigned long) const", referenced from:
      std::__1::__bracket_expression<char, std::__1::regex_traits<char> >::__bracket_expression(std::__1::regex_traits<char> const&, std::__1::__node<char>*, bool, bool, bool) in llama.o
      gpt_params_parse(int, char**, gpt_params&) in common.o
  "std::__1::__vector_base_common<true>::__throw_length_error() const", referenced from:
      _main in main-256172.o
      __ZNSt3__16vectorIiNS_9allocatorIiEEE6insertINS_11__wrap_iterIPiEEEENS_9enable_ifIXaasr27__is_cpp17_forward_iteratorIT_EE5valuesr16is_constructibleIiNS_15iterator_traitsIS9_E9referenceEEE5valueES7_E4typeENS5_IPKiEES9_S9_ in main-256172.o
      __ZNSt3__16vectorIiNS_9allocatorIiEEE6insertINS_11__wrap_iterIPKiEEEENS_9enable_ifIXaasr27__is_cpp17_forward_iteratorIT_EE5valuesr16is_constructibleIiNS_15iterator_traitsISA_E9referenceEEE5valueENS5_IPiEEE4typeES8_SA_SA_ in main-256172.o
      void std::__1::vector<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::allocator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > >::__push_back_slow_path<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >&&) in main-256172.o
      std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >::resize(unsigned long) in llama.o
      _llama_sample_top_p_top_k in llama.o
      std::__1::vector<char, std::__1::allocator<char> >::resize(unsigned long) in llama.o
      ...
  "std::__1::__basic_string_common<true>::__throw_length_error() const", referenced from:
      std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > std::__1::operator+<char, std::__1::char_traits<char>, std::__1::allocator<char> >(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, char) in main-256172.o
      _llama_init_from_file in llama.o
      __ZL16llama_model_loadRKNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEER13llama_contextii9ggml_typebPFvfPvESB_ in llama.o
      _llama_model_quantize in llama.o
      _llama_tokenize in llama.o
      std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > std::__1::regex_traits<char>::__lookup_collatename<char*>(char*, char*, char) const in llama.o
      std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > std::__1::regex_traits<char>::__transform_primary<char*>(char*, char*, char) const in llama.o
      ...
  "std::__1::__match_any_but_newline<char>::__exec(std::__1::__state<char>&) const", referenced from:
      vtable for std::__1::__match_any_but_newline<char> in llama.o
  "std::__1::locale::name() const", referenced from:
      std::__1::__bracket_expression<char, std::__1::regex_traits<char> >::__bracket_expression(std::__1::regex_traits<char> const&, std::__1::__node<char>*, bool, bool, bool) in llama.o
  "std::__1::locale::has_facet(std::__1::locale::id&) const", referenced from:
      std::__1::basic_filebuf<char, std::__1::char_traits<char> >::basic_filebuf() in llama.o
      std::__1::basic_filebuf<char, std::__1::char_traits<char> >::basic_filebuf() in common.o
  "std::__1::locale::use_facet(std::__1::locale::id&) const", referenced from:
      _main in main-256172.o
      std::__1::basic_filebuf<char, std::__1::char_traits<char> >::basic_filebuf() in llama.o
      std::__1::basic_filebuf<char, std::__1::char_traits<char> >::imbue(std::__1::locale const&) in llama.o
      std::__1::basic_regex<char, std::__1::regex_traits<char> >::basic_regex<std::__1::char_traits<char>, std::__1::allocator<char> >(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::regex_constants::syntax_option_type) in llama.o
      std::__1::__wrap_iter<char const*> std::__1::basic_regex<char, std::__1::regex_traits<char> >::__parse_assertion<std::__1::__wrap_iter<char const*> >(std::__1::__wrap_iter<char const*>, std::__1::__wrap_iter<char const*>) in llama.o
      std::__1::basic_filebuf<char, std::__1::char_traits<char> >::imbue(std::__1::locale const&) in common.o
      std::__1::basic_filebuf<char, std::__1::char_traits<char> >::basic_filebuf() in common.o
      ...
  "std::__1::ios_base::getloc() const", referenced from:
      _main in main-256172.o
  "std::logic_error::logic_error(char const*)", referenced from:
      std::length_error::length_error(char const*) in main-256172.o
      std::length_error::length_error(char const*) in llama.o
      std::out_of_range::out_of_range(char const*) in llama.o
      std::length_error::length_error(char const*) in common.o
  "std::length_error::~length_error()", referenced from:
      std::__1::__throw_length_error(char const*) in main-256172.o
      std::__1::__throw_length_error(char const*) in llama.o
      std::__1::__throw_length_error(char const*) in common.o
  "std::out_of_range::~out_of_range()", referenced from:
      std::__1::__throw_out_of_range(char const*) in llama.o
  "std::__1::regex_error::regex_error(std::__1::regex_constants::error_type)", referenced from:
      void std::__1::__throw_regex_error<(std::__1::regex_constants::error_type)12>() in llama.o
      void std::__1::__throw_regex_error<(std::__1::regex_constants::error_type)16>() in llama.o
      void std::__1::__throw_regex_error<(std::__1::regex_constants::error_type)17>() in llama.o
      void std::__1::__throw_regex_error<(std::__1::regex_constants::error_type)14>() in llama.o
      void std::__1::__throw_regex_error<(std::__1::regex_constants::error_type)6>() in llama.o
      void std::__1::__throw_regex_error<(std::__1::regex_constants::error_type)11>() in llama.o
      void std::__1::__throw_regex_error<(std::__1::regex_constants::error_type)3>() in llama.o
      ...
  "std::__1::regex_error::~regex_error()", referenced from:
      void std::__1::__throw_regex_error<(std::__1::regex_constants::error_type)12>() in llama.o
      void std::__1::__throw_regex_error<(std::__1::regex_constants::error_type)16>() in llama.o
      void std::__1::__throw_regex_error<(std::__1::regex_constants::error_type)17>() in llama.o
      void std::__1::__throw_regex_error<(std::__1::regex_constants::error_type)14>() in llama.o
      void std::__1::__throw_regex_error<(std::__1::regex_constants::error_type)6>() in llama.o
      void std::__1::__throw_regex_error<(std::__1::regex_constants::error_type)11>() in llama.o
      void std::__1::__throw_regex_error<(std::__1::regex_constants::error_type)3>() in llama.o
      ...
  "std::__1::__next_prime(unsigned long)", referenced from:
      std::__1::__hash_table<std::__1::__hash_value_type<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, int>, std::__1::__unordered_map_hasher<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::__hash_value_type<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, int>, std::__1::hash<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, true>, std::__1::__unordered_map_equal<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::__hash_value_type<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, int>, std::__1::equal_to<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, true>, std::__1::allocator<std::__1::__hash_value_type<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, int> > >::rehash(unsigned long) in llama.o
      std::__1::__hash_table<std::__1::__hash_value_type<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, ggml_tensor*>, std::__1::__unordered_map_hasher<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::__hash_value_type<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, ggml_tensor*>, std::__1::hash<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, true>, std::__1::__unordered_map_equal<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::__hash_value_type<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, ggml_tensor*>, std::__1::equal_to<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, true>, std::__1::allocator<std::__1::__hash_value_type<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, ggml_tensor*> > >::rehash(unsigned long) in llama.o
      std::__1::__hash_table<std::__1::__hash_value_type<int, int>, std::__1::__unordered_map_hasher<int, std::__1::__hash_value_type<int, int>, std::__1::hash<int>, true>, std::__1::__unordered_map_equal<int, std::__1::__hash_value_type<int, int>, std::__1::equal_to<int>, true>, std::__1::allocator<std::__1::__hash_value_type<int, int> > >::rehash(unsigned long) in llama.o
  "std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >::append(char const*)", referenced from:
      _main in main-256172.o
      __ZL16llama_model_loadRKNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEER13llama_contextii9ggml_typebPFvfPvESB_ in llama.o
      _llama_print_system_info in llama.o
  "std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >::append(char const*, unsigned long)", referenced from:
      _main in main-256172.o
      _llama_print_system_info in llama.o
  "std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >::assign(char const*)", referenced from:
      _main in main-256172.o
      _llama_model_quantize in llama.o
      _llama_print_system_info in llama.o
      gpt_params_parse(int, char**, gpt_params&) in common.o
  "std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >::assign(char const*, unsigned long)", referenced from:
      __ZL16llama_model_loadRKNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEER13llama_contextii9ggml_typebPFvfPvESB_ in llama.o
  "std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >::insert(unsigned long, char const*)", referenced from:
      __ZL16llama_model_loadRKNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEER13llama_contextii9ggml_typebPFvfPvESB_ in llama.o
      _llama_print_system_info in llama.o
  "std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >::insert(unsigned long, unsigned long, char)", referenced from:
      _main in main-256172.o
  "std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >::resize(unsigned long, char)", referenced from:
      __ZL16llama_model_loadRKNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEER13llama_contextii9ggml_typebPFvfPvESB_ in llama.o
  "std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >::push_back(char)", referenced from:
      std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > std::__1::operator+<char, std::__1::char_traits<char>, std::__1::allocator<char> >(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, char) in main-256172.o
      std::__1::basic_istream<char, std::__1::char_traits<char> >& std::__1::getline<char, std::__1::char_traits<char>, std::__1::allocator<char> >(std::__1::basic_istream<char, std::__1::char_traits<char> >&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >&, char) in main-256172.o
      gpt_params_parse(int, char**, gpt_params&) in common.o
  "std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >::basic_string(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)", referenced from:
      _main in main-256172.o
      _llama_model_quantize in llama.o
      __ZNSt3__112__hash_tableINS_17__hash_value_typeINS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEEiEENS_22__unordered_map_hasherIS7_S8_NS_4hashIS7_EELb1EEENS_21__unordered_map_equalIS7_S8_NS_8equal_toIS7_EELb1EEENS5_IS8_EEE25__emplace_unique_key_argsIS7_JRKNS_21piecewise_construct_tENS_5tupleIJRKS7_EEENSN_IJEEEEEENS_4pairINS_15__hash_iteratorIPNS_11__hash_nodeIS8_PvEEEEbEERKT_DpOT0_ in llama.o
      std::__1::__wrap_iter<char const*> std::__1::basic_regex<char, std::__1::regex_traits<char> >::__parse_equivalence_class<std::__1::__wrap_iter<char const*> >(std::__1::__wrap_iter<char const*>, std::__1::__wrap_iter<char const*>, std::__1::__bracket_expression<char, std::__1::regex_traits<char> >*) in llama.o
      void std::__1::vector<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::allocator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > >::__push_back_slow_path<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&>(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&&&) in llama.o
  "std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >::~basic_string()", referenced from:
      _llama_print_system_info in llama.o
  "std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >::operator=(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)", referenced from:
      __ZL16llama_model_loadRKNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEER13llama_contextii9ggml_typebPFvfPvESB_ in llama.o
      std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > std::__1::regex_traits<char>::__lookup_collatename<char*>(char*, char*, char) const in llama.o
      std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > std::__1::regex_traits<char>::__lookup_collatename<std::__1::__wrap_iter<char const*> >(std::__1::__wrap_iter<char const*>, std::__1::__wrap_iter<char const*>, char) const in llama.o
  "std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >::operator=(char)", referenced from:
      std::__1::__wrap_iter<char const*> std::__1::basic_regex<char, std::__1::regex_traits<char> >::__parse_character_escape<std::__1::__wrap_iter<char const*> >(std::__1::__wrap_iter<char const*>, std::__1::__wrap_iter<char const*>, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >*) in llama.o
      std::__1::__wrap_iter<char const*> std::__1::basic_regex<char, std::__1::regex_traits<char> >::__parse_expression_term<std::__1::__wrap_iter<char const*> >(std::__1::__wrap_iter<char const*>, std::__1::__wrap_iter<char const*>, std::__1::__bracket_expression<char, std::__1::regex_traits<char> >*) in llama.o
      std::__1::__wrap_iter<char const*> std::__1::basic_regex<char, std::__1::regex_traits<char> >::__parse_class_escape<std::__1::__wrap_iter<char const*> >(std::__1::__wrap_iter<char const*>, std::__1::__wrap_iter<char const*>, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >&, std::__1::__bracket_expression<char, std::__1::regex_traits<char> >*) in llama.o
      std::__1::__wrap_iter<char const*> std::__1::basic_regex<char, std::__1::regex_traits<char> >::__parse_awk_escape<std::__1::__wrap_iter<char const*> >(std::__1::__wrap_iter<char const*>, std::__1::__wrap_iter<char const*>, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >*) in llama.o
  "std::__1::__get_classname(char const*, bool)", referenced from:
      unsigned int std::__1::regex_traits<char>::__lookup_classname<std::__1::__wrap_iter<char const*> >(std::__1::__wrap_iter<char const*>, std::__1::__wrap_iter<char const*>, bool, char) const in llama.o
  "std::__1::__shared_weak_count::__release_weak()", referenced from:
      _llama_model_quantize in llama.o
      std::__1::basic_regex<char, std::__1::regex_traits<char> >::basic_regex<std::__1::char_traits<char>, std::__1::allocator<char> >(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::regex_constants::syntax_option_type) in llama.o
      std::__1::__wrap_iter<char const*> std::__1::basic_regex<char, std::__1::regex_traits<char> >::__parse<std::__1::__wrap_iter<char const*> >(std::__1::__wrap_iter<char const*>, std::__1::__wrap_iter<char const*>) in llama.o
      std::__1::__wrap_iter<char const*> std::__1::basic_regex<char, std::__1::regex_traits<char> >::__parse_assertion<std::__1::__wrap_iter<char const*> >(std::__1::__wrap_iter<char const*>, std::__1::__wrap_iter<char const*>) in llama.o
      std::__1::__lookahead<char, std::__1::regex_traits<char> >::~__lookahead() in llama.o
      std::__1::__lookahead<char, std::__1::regex_traits<char> >::~__lookahead() in llama.o
  "std::__1::__shared_weak_count::~__shared_weak_count()", referenced from:
      std::__1::__shared_ptr_pointer<std::__1::__empty_state<char>*, std::__1::shared_ptr<std::__1::__empty_state<char> >::__shared_ptr_default_delete<std::__1::__empty_state<char>, std::__1::__empty_state<char> >, std::__1::allocator<std::__1::__empty_state<char> > >::~__shared_ptr_pointer() in llama.o
      std::__1::__shared_ptr_pointer<std::__1::__empty_state<char>*, std::__1::shared_ptr<std::__1::__empty_state<char> >::__shared_ptr_default_delete<std::__1::__empty_state<char>, std::__1::__empty_state<char> >, std::__1::allocator<std::__1::__empty_state<char> > >::~__shared_ptr_pointer() in llama.o
  "std::__1::__get_collation_name(char const*)", referenced from:
      std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > std::__1::regex_traits<char>::__lookup_collatename<char*>(char*, char*, char) const in llama.o
      std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > std::__1::regex_traits<char>::__lookup_collatename<std::__1::__wrap_iter<char const*> >(std::__1::__wrap_iter<char const*>, std::__1::__wrap_iter<char const*>, char) const in llama.o
  "std::__1::cin", referenced from:
      _main in main-256172.o
  "std::__1::stof(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, unsigned long*)", referenced from:
      gpt_params_parse(int, char**, gpt_params&) in common.o
  "std::__1::stoi(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, unsigned long*, int)", referenced from:
      gpt_params_parse(int, char**, gpt_params&) in common.o
  "std::__1::ctype<char>::id", referenced from:
      _main in main-256172.o
      std::__1::basic_regex<char, std::__1::regex_traits<char> >::basic_regex<std::__1::char_traits<char>, std::__1::allocator<char> >(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::regex_constants::syntax_option_type) in llama.o
      std::__1::__wrap_iter<char const*> std::__1::basic_regex<char, std::__1::regex_traits<char> >::__parse_assertion<std::__1::__wrap_iter<char const*> >(std::__1::__wrap_iter<char const*>, std::__1::__wrap_iter<char const*>) in llama.o
  "std::__1::locale::locale(std::__1::locale const&)", referenced from:
      std::__1::basic_filebuf<char, std::__1::char_traits<char> >::basic_filebuf() in llama.o
      std::__1::__wrap_iter<char const*> std::__1::basic_regex<char, std::__1::regex_traits<char> >::__parse_assertion<std::__1::__wrap_iter<char const*> >(std::__1::__wrap_iter<char const*>, std::__1::__wrap_iter<char const*>) in llama.o
      std::__1::basic_regex<char, std::__1::regex_traits<char> >::__push_char(char) in llama.o
      std::__1::basic_regex<char, std::__1::regex_traits<char> >::__push_back_ref(int) in llama.o
      std::__1::__bracket_expression<char, std::__1::regex_traits<char> >::__bracket_expression(std::__1::regex_traits<char> const&, std::__1::__node<char>*, bool, bool, bool) in llama.o
      std::__1::basic_filebuf<char, std::__1::char_traits<char> >::basic_filebuf() in common.o
  "std::__1::locale::locale()", referenced from:
      std::__1::basic_filebuf<char, std::__1::char_traits<char> >::basic_filebuf() in llama.o
      std::__1::basic_regex<char, std::__1::regex_traits<char> >::basic_regex<std::__1::char_traits<char>, std::__1::allocator<char> >(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::regex_constants::syntax_option_type) in llama.o
      std::__1::__wrap_iter<char const*> std::__1::basic_regex<char, std::__1::regex_traits<char> >::__parse_assertion<std::__1::__wrap_iter<char const*> >(std::__1::__wrap_iter<char const*>, std::__1::__wrap_iter<char const*>) in llama.o
      std::__1::basic_filebuf<char, std::__1::char_traits<char> >::basic_filebuf() in common.o
  "std::__1::locale::~locale()", referenced from:
      _main in main-256172.o
      _llama_model_quantize in llama.o
      std::__1::basic_filebuf<char, std::__1::char_traits<char> >::basic_filebuf() in llama.o
      std::__1::basic_streambuf<char, std::__1::char_traits<char> >::~basic_streambuf() in llama.o
      std::__1::basic_streambuf<char, std::__1::char_traits<char> >::~basic_streambuf() in llama.o
      std::__1::basic_streambuf<char, std::__1::char_traits<char> >::~basic_streambuf() in llama.o
      std::__1::basic_filebuf<char, std::__1::char_traits<char> >::~basic_filebuf() in llama.o
      ...
  "std::__1::thread::hardware_concurrency()", referenced from:
      _main in main-256172.o
      gpt_params_parse(int, char**, gpt_params&) in common.o
  "std::__1::codecvt<char, char, __mbstate_t>::id", referenced from:
      std::__1::basic_filebuf<char, std::__1::char_traits<char> >::basic_filebuf() in llama.o
      std::__1::basic_filebuf<char, std::__1::char_traits<char> >::imbue(std::__1::locale const&) in llama.o
      std::__1::basic_filebuf<char, std::__1::char_traits<char> >::imbue(std::__1::locale const&) in common.o
      std::__1::basic_filebuf<char, std::__1::char_traits<char> >::basic_filebuf() in common.o
  "std::__1::collate<char>::id", referenced from:
      std::__1::basic_regex<char, std::__1::regex_traits<char> >::basic_regex<std::__1::char_traits<char>, std::__1::allocator<char> >(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::regex_constants::syntax_option_type) in llama.o
      std::__1::__wrap_iter<char const*> std::__1::basic_regex<char, std::__1::regex_traits<char> >::__parse_assertion<std::__1::__wrap_iter<char const*> >(std::__1::__wrap_iter<char const*>, std::__1::__wrap_iter<char const*>) in llama.o
  "std::__1::ios_base::__set_badbit_and_consider_rethrow()", referenced from:
      std::__1::basic_ostream<char, std::__1::char_traits<char> >::flush() in main-256172.o
      std::__1::basic_ostream<char, std::__1::char_traits<char> >::flush() in llama.o
      std::__1::basic_ostream<char, std::__1::char_traits<char> >::write(char const*, long) in llama.o
  "std::__1::ios_base::init(void*)", referenced from:
      __ZL16llama_model_loadRKNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEER13llama_contextii9ggml_typebPFvfPvESB_ in llama.o
      _llama_model_quantize in llama.o
      std::__1::basic_ifstream<char, std::__1::char_traits<char> >::basic_ifstream(char const*, unsigned int) in common.o
  "std::__1::ios_base::clear(unsigned int)", referenced from:
      std::__1::basic_istream<char, std::__1::char_traits<char> >& std::__1::getline<char, std::__1::char_traits<char>, std::__1::allocator<char> >(std::__1::basic_istream<char, std::__1::char_traits<char> >&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >&, char) in main-256172.o
      std::__1::basic_ostream<char, std::__1::char_traits<char> >::flush() in main-256172.o
      std::__1::basic_ostream<char, std::__1::char_traits<char> >::sentry::~sentry() in main-256172.o
      __ZL16llama_model_loadRKNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEER13llama_contextii9ggml_typebPFvfPvESB_ in llama.o
      _llama_model_quantize in llama.o
      std::__1::basic_istream<char, std::__1::char_traits<char> >::seekg(long long, std::__1::ios_base::seekdir) in llama.o
      std::__1::basic_istream<char, std::__1::char_traits<char> >::tellg() in llama.o
      ...
  "std::__1::ios_base::~ios_base()", referenced from:
      __ZL16llama_model_loadRKNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEER13llama_contextii9ggml_typebPFvfPvESB_ in llama.o
      _llama_model_quantize in llama.o
      std::__1::basic_ifstream<char, std::__1::char_traits<char> >::~basic_ifstream() in llama.o
      std::__1::basic_istream<char, std::__1::char_traits<char> >::~basic_istream() in llama.o
      std::__1::basic_istream<char, std::__1::char_traits<char> >::~basic_istream() in llama.o
      virtual thunk to std::__1::basic_istream<char, std::__1::char_traits<char> >::~basic_istream() in llama.o
      virtual thunk to std::__1::basic_istream<char, std::__1::char_traits<char> >::~basic_istream() in llama.o
      ...
  "std::__1::to_string(int)", referenced from:
      __ZL16llama_model_loadRKNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEER13llama_contextii9ggml_typebPFvfPvESB_ in llama.o
      _llama_print_system_info in llama.o
  "std::bad_cast::bad_cast()", referenced from:
      std::__1::__throw_bad_cast() in llama.o
      std::__1::__throw_bad_cast() in common.o
  "std::bad_cast::~bad_cast()", referenced from:
      std::__1::__throw_bad_cast() in llama.o
      std::__1::__throw_bad_cast() in common.o
  "std::uncaught_exception()", referenced from:
      std::__1::basic_ostream<char, std::__1::char_traits<char> >::sentry::~sentry() in main-256172.o
      std::__1::basic_ostream<char, std::__1::char_traits<char> >::sentry::~sentry() in llama.o
  "std::terminate()", referenced from:
      ___clang_call_terminate in main-256172.o
      ___clang_call_terminate in llama.o
      ___clang_call_terminate in common.o
  "typeinfo for std::__1::regex_error", referenced from:
      void std::__1::__throw_regex_error<(std::__1::regex_constants::error_type)12>() in llama.o
      void std::__1::__throw_regex_error<(std::__1::regex_constants::error_type)16>() in llama.o
      void std::__1::__throw_regex_error<(std::__1::regex_constants::error_type)17>() in llama.o
      void std::__1::__throw_regex_error<(std::__1::regex_constants::error_type)14>() in llama.o
      void std::__1::__throw_regex_error<(std::__1::regex_constants::error_type)6>() in llama.o
      void std::__1::__throw_regex_error<(std::__1::regex_constants::error_type)11>() in llama.o
      void std::__1::__throw_regex_error<(std::__1::regex_constants::error_type)3>() in llama.o
      ...
  "typeinfo for std::__1::__shared_weak_count", referenced from:
      typeinfo for std::__1::__shared_ptr_pointer<std::__1::__empty_state<char>*, std::__1::shared_ptr<std::__1::__empty_state<char> >::__shared_ptr_default_delete<std::__1::__empty_state<char>, std::__1::__empty_state<char> >, std::__1::allocator<std::__1::__empty_state<char> > > in llama.o
  "typeinfo for std::__1::ios_base", referenced from:
      typeinfo for std::__1::basic_ios<char, std::__1::char_traits<char> > in llama.o
      typeinfo for std::__1::basic_ios<char, std::__1::char_traits<char> > in common.o
  "typeinfo for std::length_error", referenced from:
      std::__1::__throw_length_error(char const*) in main-256172.o
      std::__1::__throw_length_error(char const*) in llama.o
      std::__1::__throw_length_error(char const*) in common.o
  "typeinfo for std::out_of_range", referenced from:
      std::__1::__throw_out_of_range(char const*) in llama.o
  "typeinfo for std::bad_cast", referenced from:
      std::__1::__throw_bad_cast() in llama.o
      std::__1::__throw_bad_cast() in common.o
  "vtable for __cxxabiv1::__class_type_info", referenced from:
      typeinfo for std::__1::basic_streambuf<char, std::__1::char_traits<char> > in llama.o
      typeinfo for std::__1::__node<char> in llama.o
      typeinfo for std::__1::basic_streambuf<char, std::__1::char_traits<char> > in common.o
  NOTE: a missing vtable usually means the first non-inline virtual member function has no definition.
  "vtable for __cxxabiv1::__si_class_type_info", referenced from:
      typeinfo for std::__1::basic_ios<char, std::__1::char_traits<char> > in llama.o
      typeinfo for std::__1::basic_ifstream<char, std::__1::char_traits<char> > in llama.o
      typeinfo for std::__1::basic_filebuf<char, std::__1::char_traits<char> > in llama.o
      typeinfo for std::__1::basic_ofstream<char, std::__1::char_traits<char> > in llama.o
      typeinfo for std::__1::__end_state<char> in llama.o
      typeinfo for std::__1::__shared_ptr_pointer<std::__1::__empty_state<char>*, std::__1::shared_ptr<std::__1::__empty_state<char> >::__shared_ptr_default_delete<std::__1::__empty_state<char>, std::__1::__empty_state<char> >, std::__1::allocator<std::__1::__empty_state<char> > > in llama.o
      typeinfo for std::__1::__has_one_state<char> in llama.o
      ...
  NOTE: a missing vtable usually means the first non-inline virtual member function has no definition.
  "vtable for __cxxabiv1::__vmi_class_type_info", referenced from:
      typeinfo for std::__1::basic_istream<char, std::__1::char_traits<char> > in llama.o
      typeinfo for std::__1::basic_ostream<char, std::__1::char_traits<char> > in llama.o
      typeinfo for std::__1::basic_istream<char, std::__1::char_traits<char> > in common.o
  NOTE: a missing vtable usually means the first non-inline virtual member function has no definition.
  "vtable for std::length_error", referenced from:
      std::length_error::length_error(char const*) in main-256172.o
      std::length_error::length_error(char const*) in llama.o
      std::length_error::length_error(char const*) in common.o
  NOTE: a missing vtable usually means the first non-inline virtual member function has no definition.
  "vtable for std::out_of_range", referenced from:
      std::out_of_range::out_of_range(char const*) in llama.o
  NOTE: a missing vtable usually means the first non-inline virtual member function has no definition.
  "operator delete[](void*)", referenced from:
      std::__1::basic_filebuf<char, std::__1::char_traits<char> >::imbue(std::__1::locale const&) in llama.o
      std::__1::basic_filebuf<char, std::__1::char_traits<char> >::setbuf(char*, long) in llama.o
      std::__1::basic_filebuf<char, std::__1::char_traits<char> >::~basic_filebuf() in llama.o
      std::__1::basic_filebuf<char, std::__1::char_traits<char> >::~basic_filebuf() in common.o
      std::__1::basic_filebuf<char, std::__1::char_traits<char> >::imbue(std::__1::locale const&) in common.o
      std::__1::basic_filebuf<char, std::__1::char_traits<char> >::setbuf(char*, long) in common.o
  "operator delete(void*)", referenced from:
      _main in main-256172.o
      __ZNSt3__16vectorIiNS_9allocatorIiEEE6insertINS_11__wrap_iterIPiEEEENS_9enable_ifIXaasr27__is_cpp17_forward_iteratorIT_EE5valuesr16is_constructibleIiNS_15iterator_traitsIS9_E9referenceEEE5valueES7_E4typeENS5_IPKiEES9_S9_ in main-256172.o
      __ZNSt3__16vectorIiNS_9allocatorIiEEE6insertINS_11__wrap_iterIPKiEEEENS_9enable_ifIXaasr27__is_cpp17_forward_iteratorIT_EE5valuesr16is_constructibleIiNS_15iterator_traitsISA_E9referenceEEE5valueENS5_IPiEEE4typeES8_SA_SA_ in main-256172.o
      std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > std::__1::operator+<char, std::__1::char_traits<char>, std::__1::allocator<char> >(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, char) in main-256172.o
      void std::__1::vector<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::allocator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > >::__push_back_slow_path<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >&&) in main-256172.o
      std::__1::unordered_map<int, int, std::__1::hash<int>, std::__1::equal_to<int>, std::__1::allocator<std::__1::pair<int const, int> > >::~unordered_map() in llama.o
      _llama_init_from_file in llama.o
      ...
  "operator new[](unsigned long)", referenced from:
      std::__1::basic_filebuf<char, std::__1::char_traits<char> >::imbue(std::__1::locale const&) in llama.o
      std::__1::basic_filebuf<char, std::__1::char_traits<char> >::setbuf(char*, long) in llama.o
      std::__1::basic_filebuf<char, std::__1::char_traits<char> >::imbue(std::__1::locale const&) in common.o
      std::__1::basic_filebuf<char, std::__1::char_traits<char> >::setbuf(char*, long) in common.o
  "operator new(unsigned long)", referenced from:
      _main in main-256172.o
      __ZNSt3__16vectorIiNS_9allocatorIiEEE6insertINS_11__wrap_iterIPiEEEENS_9enable_ifIXaasr27__is_cpp17_forward_iteratorIT_EE5valuesr16is_constructibleIiNS_15iterator_traitsIS9_E9referenceEEE5valueES7_E4typeENS5_IPKiEES9_S9_ in main-256172.o
      __ZNSt3__16vectorIiNS_9allocatorIiEEE6insertINS_11__wrap_iterIPKiEEEENS_9enable_ifIXaasr27__is_cpp17_forward_iteratorIT_EE5valuesr16is_constructibleIiNS_15iterator_traitsISA_E9referenceEEE5valueENS5_IPiEEE4typeES8_SA_SA_ in main-256172.o
      std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > std::__1::operator+<char, std::__1::char_traits<char>, std::__1::allocator<char> >(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, char) in main-256172.o
      void std::__1::vector<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::allocator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > >::__push_back_slow_path<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >&&) in main-256172.o
      std::__1::map<e_model, unsigned long, std::__1::less<e_model>, std::__1::allocator<std::__1::pair<e_model const, unsigned long> > >::map(std::initializer_list<std::__1::pair<e_model const, unsigned long> >, std::__1::less<e_model> const&) in llama.o
      _llama_init_from_file in llama.o
      ...
  "___cxa_allocate_exception", referenced from:
      std::__1::__throw_length_error(char const*) in main-256172.o
      std::__1::__throw_bad_cast() in llama.o
      std::__1::__throw_length_error(char const*) in llama.o
      std::__1::__throw_out_of_range(char const*) in llama.o
      void std::__1::__throw_regex_error<(std::__1::regex_constants::error_type)12>() in llama.o
      void std::__1::__throw_regex_error<(std::__1::regex_constants::error_type)16>() in llama.o
      void std::__1::__throw_regex_error<(std::__1::regex_constants::error_type)17>() in llama.o
      ...
  "___cxa_begin_catch", referenced from:
      ___clang_call_terminate in main-256172.o
      std::__1::basic_istream<char, std::__1::char_traits<char> >& std::__1::getline<char, std::__1::char_traits<char>, std::__1::allocator<char> >(std::__1::basic_istream<char, std::__1::char_traits<char> >&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >&, char) in main-256172.o
      std::__1::basic_ostream<char, std::__1::char_traits<char> >::flush() in main-256172.o
      std::__1::basic_ostream<char, std::__1::char_traits<char> >::sentry::~sentry() in main-256172.o
      ___clang_call_terminate in llama.o
      std::__1::basic_istream<char, std::__1::char_traits<char> >::seekg(long long, std::__1::ios_base::seekdir) in llama.o
      std::__1::basic_istream<char, std::__1::char_traits<char> >::tellg() in llama.o
      ...
  "___cxa_end_catch", referenced from:
      std::__1::basic_istream<char, std::__1::char_traits<char> >& std::__1::getline<char, std::__1::char_traits<char>, std::__1::allocator<char> >(std::__1::basic_istream<char, std::__1::char_traits<char> >&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >&, char) in main-256172.o
      std::__1::basic_ostream<char, std::__1::char_traits<char> >::flush() in main-256172.o
      std::__1::basic_ostream<char, std::__1::char_traits<char> >::sentry::~sentry() in main-256172.o
      std::__1::basic_istream<char, std::__1::char_traits<char> >::seekg(long long, std::__1::ios_base::seekdir) in llama.o
      std::__1::basic_istream<char, std::__1::char_traits<char> >::tellg() in llama.o
      std::__1::basic_istream<char, std::__1::char_traits<char> >::seekg(std::__1::fpos<__mbstate_t>) in llama.o
      std::__1::basic_istream<char, std::__1::char_traits<char> >::read(char*, long) in llama.o
      ...
  "___cxa_free_exception", referenced from:
      std::__1::__throw_length_error(char const*) in main-256172.o
      std::__1::__throw_length_error(char const*) in llama.o
      std::__1::__throw_out_of_range(char const*) in llama.o
      void std::__1::__throw_regex_error<(std::__1::regex_constants::error_type)12>() in llama.o
      void std::__1::__throw_regex_error<(std::__1::regex_constants::error_type)16>() in llama.o
      void std::__1::__throw_regex_error<(std::__1::regex_constants::error_type)17>() in llama.o
      void std::__1::__throw_regex_error<(std::__1::regex_constants::error_type)14>() in llama.o
      ...
  "___cxa_guard_acquire", referenced from:
      _llama_print_system_info in llama.o
  "___cxa_guard_release", referenced from:
      _llama_print_system_info in llama.o
  "___cxa_rethrow", referenced from:
      std::__1::basic_istream<char, std::__1::char_traits<char> >& std::__1::getline<char, std::__1::char_traits<char>, std::__1::allocator<char> >(std::__1::basic_istream<char, std::__1::char_traits<char> >&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >&, char) in main-256172.o
      std::__1::basic_istream<char, std::__1::char_traits<char> >::seekg(long long, std::__1::ios_base::seekdir) in llama.o
      std::__1::basic_istream<char, std::__1::char_traits<char> >::tellg() in llama.o
      std::__1::basic_istream<char, std::__1::char_traits<char> >::seekg(std::__1::fpos<__mbstate_t>) in llama.o
      std::__1::basic_istream<char, std::__1::char_traits<char> >::read(char*, long) in llama.o
  "___cxa_throw", referenced from:
      std::__1::__throw_length_error(char const*) in main-256172.o
      std::__1::__throw_bad_cast() in llama.o
      std::__1::__throw_length_error(char const*) in llama.o
      std::__1::__throw_out_of_range(char const*) in llama.o
      void std::__1::__throw_regex_error<(std::__1::regex_constants::error_type)12>() in llama.o
      void std::__1::__throw_regex_error<(std::__1::regex_constants::error_type)16>() in llama.o
      void std::__1::__throw_regex_error<(std::__1::regex_constants::error_type)17>() in llama.o
      ...
  "___gxx_personality_v0", referenced from:
      _main in main-256172.o
      std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > std::__1::operator+<char, std::__1::char_traits<char>, std::__1::allocator<char> >(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, char) in main-256172.o
      std::__1::__throw_length_error(char const*) in main-256172.o
      std::__1::basic_istream<char, std::__1::char_traits<char> >& std::__1::getline<char, std::__1::char_traits<char>, std::__1::allocator<char> >(std::__1::basic_istream<char, std::__1::char_traits<char> >&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >&, char) in main-256172.o
      std::__1::basic_ostream<char, std::__1::char_traits<char> >::flush() in main-256172.o
      std::__1::basic_ostream<char, std::__1::char_traits<char> >::sentry::~sentry() in main-256172.o
      Dwarf Exception Unwind Info (__eh_frame) in main-256172.o
      ...
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make: *** [main] Error 1

@j-f1
Copy link
Collaborator

j-f1 commented Apr 7, 2023

It looks like you may not be linking against the C++ standard library, but I’m not sure how you could fix that.

@Errand24
Copy link
Author

Errand24 commented Apr 7, 2023

@j-f1 oh... Well, I'm still ready to keep standing and fighting :)

I have tried to compile it with Tigerbrew version of gcc-6 (latest gcc available in Tigerbrew) on OS Mavericks, but it even can't get pass ggml.o. Pity, they don't have clang11 in Tigerbrew...

Current approach is the largest distance I got over: at least it compiled few files with no problem!

Maybe, you have some more guessing or some workaround ?..


Should I try to compile gcc from sources? It's a bit of pain, but I don't know if it possibly can help...
Maybe, newer version of clang?.. MacPorts have some more versions beyond 11

@j-f1
Copy link
Collaborator

j-f1 commented Apr 7, 2023

Which linker are you using?

@comex
Copy link
Contributor

comex commented Apr 7, 2023

To fix the linking issue, you probably just need to set CXX to clang++ instead of clang.

@Errand24
Copy link
Author

Errand24 commented Apr 7, 2023

Which linker are you using?

@(#)PROGRAM:ld PROJECT:ld64-274.2 configured to support archs: i386 x86_64 x86_64h armv6 armv7 armv7s armv7m armv7k arm64 (tvOS) LTO support using: LLVM version 3.4.2

I did nothing with linker, it may be an OS default one.

If you recommend another linker - I'll try to find it on MacPorts and switch to it somehow..

@Errand24
Copy link
Author

Errand24 commented Apr 7, 2023

To fix the linking issue, you probably just need to set CXX to clang++ instead of clang.

Did it. No way!.. It looks like...

I llama.cpp build info: 
I UNAME_S:  Darwin
I UNAME_P:  i386
I UNAME_M:  x86_64
I CFLAGS:   -I.              -O3 -DNDEBUG -std=c11   -fPIC -Wall -Wextra -Wpedantic -Wcast-qual -Wdouble-promotion -Wshadow -Wstrict-prototypes -Wpointer-arith -Wno-unused-function -pthread -march=native -mtune=native -DGGML_USE_ACCELERATE
I CXXFLAGS: -I. -I./examples -O3 -DNDEBUG -std=c++11 -fPIC -Wall -Wextra -Wpedantic -Wcast-qual -Wno-unused-function -pthread -march=native -mtune=native
I LDFLAGS:   -framework Accelerate
I CC:       clang version 11.1.0
I CXX:      clang version 11.1.0

clang++ -I. -I./examples -O3 -DNDEBUG -std=c++11 -fPIC -Wall -Wextra -Wpedantic -Wcast-qual -Wno-unused-function -pthread -march=native -mtune=native examples/main/main.cpp ggml.o llama.o common.o -o main  -framework Accelerate

====  Run ./main -h for help.  ====

clang++ -I. -I./examples -O3 -DNDEBUG -std=c++11 -fPIC -Wall -Wextra -Wpedantic -Wcast-qual -Wno-unused-function -pthread -march=native -mtune=native examples/quantize/quantize.cpp ggml.o llama.o -o quantize  -framework Accelerate
clang++ -I. -I./examples -O3 -DNDEBUG -std=c++11 -fPIC -Wall -Wextra -Wpedantic -Wcast-qual -Wno-unused-function -pthread -march=native -mtune=native examples/perplexity/perplexity.cpp ggml.o llama.o common.o -o perplexity  -framework Accelerate
clang++ -I. -I./examples -O3 -DNDEBUG -std=c++11 -fPIC -Wall -Wextra -Wpedantic -Wcast-qual -Wno-unused-function -pthread -march=native -mtune=native examples/embedding/embedding.cpp ggml.o llama.o common.o -o embedding  -framework Accelerate

Screen Shot 2023-04-07 at 11 46 01 PM

Hold on, let me finish copying my weights here and try it... Can't believe. It must be something not working... :)

@j-f1 j-f1 changed the title Compilation failed on macOS: 'clock_gettime' produce warnings and errors Compilation failed on macOS 10.7-8-9: 'clock_gettime' produce warnings and errors Apr 7, 2023
@Errand24
Copy link
Author

Errand24 commented Apr 7, 2023

I have also compiled alpaca.cpp for macOS 10.7 and looks like it is working on real machine with macOS 10.8:

main: seed = 1680900951
llama_model_load: loading model from 'ggml-alpaca-7b-q4.bin' - please wait ...
llama_model_load: ggml ctx size = 6065.34 MB
llama_model_load: memory_size =  2048.00 MB, n_mem = 65536
llama_model_load: loading model part 1/1 from 'ggml-alpaca-7b-q4.bin'
llama_model_load: .................................... done
llama_model_load: model size =  4017.27 MB / num tensors = 291

system_info: n_threads = 4 / 8 | AVX = 1 | AVX2 = 0 | AVX512 = 0 | FMA = 0 | NEON = 0 | ARM_FMA = 0 | F16C = 1 | FP16_VA = 0 | WASM_SIMD = 0 | BLAS = 1 | SSE3 = 1 | VSX = 0 | 
main: interactive mode on.
sampling parameters: temp = 0.100000, top_k = 40, top_p = 0.950000, repeat_last_n = 64, repeat_penalty = 1.300000


== Running in chat mode. ==
 - Press Ctrl+C to interject at any time.
 - Press Return to return control to LLaMA.
 - If you want to submit another line, end your input in '\'.

> Hello!                                
Welcome!
> I have compiled the version of this chat model for my old mac and I can talk to you at last!
That sounds great. We are looking forward to chatting with you soon :)

...I love this 'We are' :)

Haven't tried configuring it yet, but at least - it is compiled successfully and running.
Now I'm planning to investigate the whole environment setup and find the minimum configuration to compile on these old OS.
Let me know if it will be useful to share this info.

Thank you all very much for helping me out!

@Errand24
Copy link
Author

Errand24 commented Apr 7, 2023

If you replace the following code in ggml.c with the following code block you should be able to compile (although you may have other issues running):

int64_t ggml_time_ms(void) {
    struct timespec ts;
    clock_gettime(CLOCK_MONOTONIC, &ts);
    return (int64_t)ts.tv_sec*1000 + (int64_t)ts.tv_nsec/1000000;
}

int64_t ggml_time_us(void) {
    struct timespec ts;
    clock_gettime(CLOCK_MONOTONIC, &ts);
    return (int64_t)ts.tv_sec*1000000 + (int64_t)ts.tv_nsec/1000;
}

Replacement (most time values will be reported as 0):

int64_t ggml_time_ms(void) {
    return 0;
}

int64_t ggml_time_us(void) {
    return 0;
}

@j-f1 can you, please, explain what can be the consequences of this 'return 0' replacement?..

@j-f1
Copy link
Collaborator

j-f1 commented Apr 7, 2023

As far as I can tell, the only consequence will be that the time values that will be printed out will all be 0. Feel free to open a PR adding an alternate timing mechanism that can be used if the more accurate one is unavailable?

@Errand24
Copy link
Author

Errand24 commented Apr 8, 2023

@j-f1 I have following warnings left with ggml.o:

clang  -I.              -O3 -DNDEBUG -std=c11   -fPIC -Wall -Wextra -Wpedantic -Wcast-qual -Wdouble-promotion -Wshadow -Wstrict-prototypes -Wpointer-arith -Wno-unused-function -pthread -march=native -mtune=native -DGGML_USE_ACCELERATE   -c ggml.c -o ggml.o
ggml.c:852:27: warning: unused variable 'y' [-Wunused-variable]
    block_q4_1 * restrict y = vy;
                          ^
ggml.c:850:15: warning: unused variable 'nb' [-Wunused-variable]
    const int nb = k / QK;
              ^
ggml.c:1809:5: warning: implicit conversion increases floating-point precision: 'float' to
      'ggml_float' (aka 'double') [-Wdouble-promotion]
    GGML_F16_VEC_REDUCE(sumf, sum);
    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
ggml.c:1423:37: note: expanded from macro 'GGML_F16_VEC_REDUCE'
#define GGML_F16_VEC_REDUCE         GGML_F32Cx8_REDUCE
                                    ^
ggml.c:1413:33: note: expanded from macro 'GGML_F32Cx8_REDUCE'
#define GGML_F32Cx8_REDUCE      GGML_F32x8_REDUCE
                                ^
ggml.c:1360:11: note: expanded from macro 'GGML_F32x8_REDUCE'
    res = _mm_cvtss_f32(_mm_hadd_ps(t1, t1));                     \
        ~ ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
ggml.c:2368:9: warning: implicit conversion increases floating-point precision: 'float' to
      'ggml_float' (aka 'double') [-Wdouble-promotion]
        GGML_F16_VEC_REDUCE(sumf[k], sum[k]);
        ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
ggml.c:1423:37: note: expanded from macro 'GGML_F16_VEC_REDUCE'
#define GGML_F16_VEC_REDUCE         GGML_F32Cx8_REDUCE
                                    ^
ggml.c:1413:33: note: expanded from macro 'GGML_F32Cx8_REDUCE'
#define GGML_F32Cx8_REDUCE      GGML_F32x8_REDUCE
                                ^
ggml.c:1360:11: note: expanded from macro 'GGML_F32x8_REDUCE'
    res = _mm_cvtss_f32(_mm_hadd_ps(t1, t1));                     \
        ~ ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
ggml.c:2527:14: warning: passing 'const float *' to parameter of type 'float *' discards qualifiers
      [-Wincompatible-pointer-types-discards-qualifiers]
    vDSP_sve(x, 1, s, n);
             ^
/System/Library/Frameworks/vecLib.framework/Headers/vDSP.h:4191:17: note: passing argument to
      parameter '__vDSP_A' here
  float *       __vDSP_A,
                ^
ggml.c:2539:15: warning: passing 'const float *' to parameter of type 'float *' discards qualifiers
      [-Wincompatible-pointer-types-discards-qualifiers]
    vDSP_maxv(x, 1, s, n);
              ^
/System/Library/Frameworks/vecLib.framework/Headers/vDSP.h:3625:17: note: passing argument to
      parameter '__vDSP_A' here
  float *       __vDSP_A,
                ^
ggml.c:2962:39: warning: missing field 'context' initializer [-Wmissing-field-initializers]
                /*.contexts =*/ { { 0 } },
                                      ^
7 warnings generated.

Any idea about what is causing them?

@prusnak prusnak added the macos Issues specific to macOS label Apr 8, 2023
@j-f1
Copy link
Collaborator

j-f1 commented Apr 8, 2023

I wouldn’t worry too much about those if it works ok!

@Errand24
Copy link
Author

Errand24 commented Apr 8, 2023

Compiling from the source code on macOS 10.7-8-9 (clean OS):

PREREQUISITES:

  • X-Code correspondent to macOS version // optional for 10.9
  • Command Line Tools for X-Code // optional for 10.9
  • MacPorts correspondent to macOS version // optional, can compile/install everything manually
  • git // optional, can download and up-pack using 'tar -xvzf [tar.gz name]'
  • clang version 5 and + // 'no dependencies' declared, but atomic header appears a dependency

STEPS (base command line skills required):
(!) If clang installed through MacPorts, replace native macOS clang with MacPorts clang using 'clang_select'

  1. Obtain and put the source code of chat model into the dir (using 'git clone' from the guide or download/un-pack manually)
  2. Navigate the dir with unpacked source code (using 'cd' command from the guide)
  3. Edit 'ggml.c', 'timing' section, #else condition (any text editor, that is not screwing up structure and encoding):
    replace all 3 strings inside 'int64_t ggml_time_ms(void)' function with 'return 0;'
    replace all 3 strings inside 'int64_t ggml_time_us(void)' function with 'return 0;'
  4. Define following environment variables (use 'export [variable]=[value]'):
    CC=clang
    CXX=clang++
  5. Proceed with compilation according to existing guide ('make')

KNOWN ISSUES AND WORKAROUNDS:

  • If 'stdatomic.h' not found, then clang is not properly installed, insufficient version or something with clang paths
  • If 'CLOCK_MONOTONIC' error occurs, then 'ggml.c' not edited or edited incorrectly (make sure to edit only 'else' condition)
  • Tigerbrew (fork of Homebrew for older OS) doesn't contain recent versions of dependencies, MacPorts works better
  • GCC (version 4.9 and +) also contain atomic, but clang works better

@prusnak
Copy link
Collaborator

prusnak commented Apr 11, 2023

macOS 10.9 is EOL since 2016
older releases are EOL for more than 7 years

src: https://endoflife.date/macos

Is this really something we want someone to spend their time on?

@lukaszsobala
Copy link

I have a similar problem on Ubuntu 22.04, so it's not only Macs.

Copy link
Contributor

This issue was closed because it has been inactive for 14 days since being marked as stale.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working build Compilation issues macos Issues specific to macOS stale
Projects
None yet
Development

No branches or pull requests

7 participants