2024年1月6日土曜日

VirtualBoxのVMでllama.cppをビルドする

Ryzen 5 3600を搭載したPC上のVirtualBoxのVMで、llama.cppをビルドしようとしたら、次のようなエラーが出た。

In file included from /usr/lib/gcc/x86_64-linux-gnu/11/include/immintrin.h:99,
                 from ggml-impl.h:75,
                 from ggml-quants.h:3,
                 from ggml-quants.c:1:
ggml-quants.c: In function ‘ggml_vec_dot_q4_0_q8_0’:
/usr/lib/gcc/x86_64-linux-gnu/11/include/fmaintrin.h:63:1: error: inlining failed in call to ‘always_inline’ ‘_mm256_fmadd_ps’: target specific option mismatch
   63 | _mm256_fmadd_ps (__m256 __A, __m256 __B, __m256 __C)
      | ^~~~~~~~~~~~~~~
ggml-quants.c:2516:15: note: called from here
 2516 |         acc = _mm256_fmadd_ps( d, q, acc );
      |               ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from /usr/lib/gcc/x86_64-linux-gnu/11/include/immintrin.h:99,
                 from ggml-impl.h:75,
                 from ggml-quants.h:3,
                 from ggml-quants.c:1:

Makefileで指定されている最適化オプションの「-march=native」がうまく働いていないのが原因のようなので、単純にそれを削除することでビルドできた。高速化させるなら、cpuflagsを見ながら「-mavx」などを追加するとOK。