[dpdk-dev] [PATCH v3 00/18] add max SIMD bitwidth to EAL

Ciara Power ciara.power at intel.com
Wed Sep 30 15:03:56 CEST 2020


A number of components in DPDK have optional AVX-512 or other vector
code paths which can be selected at runtime. Rather than having each
component provide its own mechanism to select a code path, this patchset
adds support for a single setting to control what code paths are used.
This can be used to enable some non-default code paths e.g. ones using
AVX-512, but also to limit the code paths to certain vector widths, or
to scalar code only, which is useful for testing.

The max SIMD bitwidth setting can be set by the app itself through use of
the available API, or can be overriden by a commandline argument passed by
the user.

v3:
 - Added patch to add check for LPM lib
 - Modified default max bitwidth for Arm to disable max SIMD bitwidth,
   which will allow for SVE.
 - Added "0" as an acceptable value for command-line flag, which internally
   is used as UINT16_MAX to essentially disable max SIMD bitwidth limits.
 - Made suggested changes to net lib patch.
 - Rebased onto main.
v2:
  - Added some documentation.
  - Modified default max bitwidth for Arm.
  - Moved mlx5 condition check into existing check vec support function.
  - Added max SIMD bitwidth checks to some libraries.

Ciara Power (18):
  eal: add max SIMD bitwidth
  eal: add default SIMD bitwidth values
  doc: add detail on using max SIMD bitwidth
  net/i40e: add checks for max SIMD bitwidth
  net/axgbe: add checks for max SIMD bitwidth
  net/bnxt: add checks for max SIMD bitwidth
  net/enic: add checks for max SIMD bitwidth
  net/fm10k: add checks for max SIMD bitwidth
  net/iavf: add checks for max SIMD bitwidth
  net/ice: add checks for max SIMD bitwidth
  net/ixgbe: add checks for max SIMD bitwidth
  net/mlx5: add checks for max SIMD bitwidth
  net/virtio: add checks for max SIMD bitwidth
  distributor: add checks for max SIMD bitwidth
  member: add checks for max SIMD bitwidth
  efd: add checks for max SIMD bitwidth
  net: add checks for max SIMD bitwidth
  lpm: choose vector path at runtime

 doc/guides/howto/avx512.rst                   | 36 ++++++++++
 doc/guides/howto/index.rst                    |  1 +
 doc/guides/linux_gsg/eal_args.include.rst     | 16 +++++
 .../prog_guide/env_abstraction_layer.rst      | 32 +++++++++
 drivers/net/axgbe/axgbe_rxtx.c                |  3 +-
 drivers/net/bnxt/bnxt_ethdev.c                |  6 +-
 drivers/net/enic/enic_rxtx_vec_avx2.c         |  3 +-
 drivers/net/fm10k/fm10k_ethdev.c              | 11 ++-
 drivers/net/i40e/i40e_rxtx.c                  | 19 ++++--
 drivers/net/iavf/iavf_rxtx.c                  | 16 +++--
 drivers/net/ice/ice_rxtx.c                    | 20 ++++--
 drivers/net/ixgbe/ixgbe_rxtx.c                |  7 +-
 drivers/net/mlx5/mlx5_rxtx_vec.c              |  2 +
 drivers/net/virtio/virtio_ethdev.c            |  9 ++-
 lib/librte_distributor/rte_distributor.c      |  3 +-
 lib/librte_eal/arm/include/rte_vect.h         |  2 +
 lib/librte_eal/common/eal_common_options.c    | 67 +++++++++++++++++++
 lib/librte_eal/common/eal_internal_cfg.h      |  8 +++
 lib/librte_eal/common/eal_options.h           |  2 +
 lib/librte_eal/include/rte_eal.h              | 33 +++++++++
 lib/librte_eal/ppc/include/rte_vect.h         |  2 +
 lib/librte_eal/rte_eal_version.map            |  4 ++
 lib/librte_eal/x86/include/rte_vect.h         |  2 +
 lib/librte_efd/rte_efd.c                      |  7 +-
 lib/librte_lpm/rte_lpm.h                      | 57 +++++++++++++---
 lib/librte_lpm/rte_lpm_altivec.h              |  2 +-
 lib/librte_lpm/rte_lpm_neon.h                 |  2 +-
 lib/librte_lpm/rte_lpm_sse.h                  |  2 +-
 lib/librte_member/rte_member_ht.c             |  3 +-
 lib/librte_net/rte_net_crc.c                  | 26 ++++---
 lib/librte_net/rte_net_crc.h                  |  3 +-
 31 files changed, 351 insertions(+), 55 deletions(-)
 create mode 100644 doc/guides/howto/avx512.rst

-- 
2.17.1



More information about the dev mailing list