Автор статьи: Полфамилия, старший эксперт в сфере локализации
ЦП Hygon — это процессор x86_64, основанный на лицензии AMD Zen 1 (znver1), разработанный совместно AMD и Китаем. Поддерживает SSE/SSE2/SSE3/SSE4A/SSE4.1/SSE4.2/AVX/AVX2/RDRDND/RDSEED/. Набор инструкций PCLMUL.
GCC 6.3+ Задаваемая микроархитектура -march=znver1
оптимизация hygon Код:
$ gcc -march=znver1 -E -dM - < /dev/null |grep -i "_AVX\|_SSE\|_RD\|_PCLMUL"
#define __SSE4_1__ 1
#define __SSE4_2__ 1
#define __MMX_WITH_SSE__ 1
#define __SSE2_MATH__ 1
#define __AVX__ 1
#define __PCLMUL__ 1
#define __SSE_MATH__ 1
#define __RDSEED__ 1
#define __AVX2__ 1
#define __RDRND__ 1
#define __SSE4A__ 1
#define __SSE__ 1
#define __SSE2__ 1
#define __SSE3__ 1
DPDK 21.08
Как скачать ДПДК 21.08
http://fast.dpdk.org/rel/dpdk-21.08.tar.xz
wget http://fast.dpdk.org/rel/dpdk-21.08.tar.xz
На что следует обратить внимание:
dpdk-21.08 meson build Больше не используется -Dmachine Установить параметры набора команд оптимизации, было изменено на -Dcpu_instruction_set;
dpdk-21.08 добавляет поддержку AVX512 по умолчанию, проверяя, поддерживает ли компилятор AVX512, а hygon не поддерживает набор инструкций AVX512. dpdk проверяет, включен ли он во время выполнения;
Пример сборки hygon dpdk (-Dcpu_instruction_set=znver1):
CC=gcc meson ${MESON_ARGS} \
-Dprefix=/DPDK/v2108/v2108-hygon-7285-gcc \
-Dc_args="${C_ARGS}" \
-Dbuild.c_args="${C_ARGS}" \
-Dmax_lcores=32 \
-Dmax_ethports=16 \
-Dmax_numa_nodes=4 \
-Denable_kmods=true \
-Ddeveloper_mode=false \
-Dkernel_dir=~/kernel/kylin-kernel-to-qmxc-V10S-1.0/ \
-Dcpu_instruction_set=znver1 \
-Dexamples=l3fwd,l2fwd,l3fwd-acl,flow_classify,flow_filtering,bond,l3fwd-graph \
-Dwerror=false \
v2108-znver1-50mlnx1-1.50218.x86_64-gcc