Bitcoin full node and query server

Dec 6, 2024

View in context in the libbitcoin Slack #general mirror.

evoskuil14:44
The AMD Ryzen 9 7950X has shani as well as sse4, avx2, and avx512. I haven't been able to perf test with avx512 yet but it's implemented.
neillm15:33
Ah, that would explain why I'm seeing a build error with avx512 enabled! Here for reference:
... snip ...
                 from ./include/bitcoin/system/settings.hpp:22,
                 from ./include/bitcoin/system.hpp:29,
                 from examples/main.cpp:21:
./include/bitcoin/system/intrinsics/xcpu/functional_512.hpp: In function 'libbitcoin::system::xint512_t libbitcoin::system::add(xint512_t, xint512_t)':
./include/bitcoin/system/intrinsics/xcpu/functional_512.hpp:163:31: error: cannot convert 'libbitcoin::system::xint512_t' {aka '__m512i'} to '__m256i'
  163 |         return mm256_add_epi8(a, b);
      |                               ^
      |                               |
      |                               libbitcoin::system::xint512_t {aka __m512i}
./include/bitcoin/system/intrinsics/xcpu/defines.hpp:224:61: note: in definition of macro 'mm256_add_epi8'
  224 |     #define mm256_add_epi8(a, b)            _mm256_add_epi8(a, b)
      |                                                             ^
In file included from /usr/lib/gcc/x86_64-linux-gnu/14/include/immintrin.h:53,
                 from /mnt/ssd1/libbitcoin/master/install/include/boost/multiprecision/cpp_int/intel_intrinsics.hpp:83,
                 from /mnt/ssd1/libbitcoin/master/install/include/boost/multiprecision/cpp_int/add_unsigned.hpp:10,
                 from /mnt/ssd1/libbitcoin/master/install/include/boost/multiprecision/cpp_int/add.hpp:12,
                 from /mnt/ssd1/libbitcoin/master/install/include/boost/multiprecision/cpp_int.hpp:2284,
                 from ./include/bitcoin/system/boost.hpp:54,
                 from ./include/bitcoin/system/exceptions.hpp:26,
                 from ./include/bitcoin/system/arena.hpp:22,
                 from ./include/bitcoin/system/allocator.hpp:28,
                 from ./include/bitcoin/system.hpp:17:
/usr/lib/gcc/x86_64-linux-gnu/14/include/avx2intrin.h:105:26: note:   initializing argument 1 of '__m256i _mm256_add_epi8(__m256i, __m256i)'
  105 | _mm256_add_epi8 (__m256i __A, __m256i __B)
      |                  ~~~~~~~~^~~
./include/bitcoin/system/intrinsics/xcpu/functional_512.hpp:165:32: error: cannot convert 'libbitcoin::system::xint512_t' {aka '__m512i'} to '__m256i'
  165 |         return mm256_add_epi16(a, b);
      |                                ^
      |                                |
      |                                libbitcoin::system::xint512_t {aka __m512i}
./include/bitcoin/system/intrinsics/xcpu/defines.hpp:225:62: note: in definition of macro 'mm256_add_epi16'
  225 |     #define mm256_add_epi16(a, b)           _mm256_add_epi16(a, b)
      |                                                              ^
/usr/lib/gcc/x86_64-linux-gnu/14/include/avx2intrin.h:112:27: note:   initializing argument 1 of '__m256i _mm256_add_epi16(__m256i, __m256i)'
  112 | _mm256_add_epi16 (__m256i __A, __m256i __B)
      |                   ~~~~~~~~^~~
./include/bitcoin/system/intrinsics/xcpu/functional_512.hpp:167:32: error: cannot convert 'libbitcoin::system::xint512_t' {aka '__m512i'} to '__m256i'
  167 |         return mm256_add_epi32(a, b);
      |                                ^
      |                                |
      |                                libbitcoin::system::xint512_t {aka __m512i}
./include/bitcoin/system/intrinsics/xcpu/defines.hpp:226:62: note: in definition of macro 'mm256_add_epi32'
  226 |     #define mm256_add_epi32(a, b)           _mm256_add_epi32(a, b)
      |                                                              ^
/usr/lib/gcc/x86_64-linux-gnu/14/include/avx2intrin.h:119:27: note:   initializing argument 1 of '__m256i _mm256_add_epi32(__m256i, __m256i)'
  119 | _mm256_add_epi32 (__m256i __A, __m256i __B)
      |                   ~~~~~~~~^~~
./include/bitcoin/system/intrinsics/xcpu/functional_512.hpp:169:32: error: cannot convert 'libbitcoin::system::xint512_t' {aka '__m512i'} to '__m256i'
  169 |         return mm256_add_epi64(a, b);
      |                                ^
      |                                |
      |                                libbitcoin::system::xint512_t {aka __m512i}
./include/bitcoin/system/intrinsics/xcpu/defines.hpp:227:62: note: in definition of macro 'mm256_add_epi64'
  227 |     #define mm256_add_epi64(a, b)           _mm256_add_epi64(a, b)
      |                                                              ^
/usr/lib/gcc/x86_64-linux-gnu/14/include/avx2intrin.h:126:27: note:   initializing argument 1 of '__m256i _mm256_add_epi64(__m256i, __m256i)'
  126 | _mm256_add_epi64 (__m256i __A, __m256i __B)
      |                   ~~~~~~~~^~~
make: *** [Makefile:4993: examples/libbitcoin_system_examples-main.o] Error 1