From: David Marchand <david.marchand@redhat.com>
To: dev@dpdk.org
Cc: viktorin@rehivetech.com, ruifeng.wang@arm.com,
jerinj@marvell.com, drc@linux.vnet.ibm.com,
bruce.richardson@intel.com, konstantin.ananyev@intel.com,
ciara.power@intel.com
Subject: [dpdk-dev] [PATCH v10 00/18] add max SIMD bitwidth to EAL
Date: Mon, 19 Oct 2020 15:48:40 +0200 [thread overview]
Message-ID: <20201019134858.32507-1-david.marchand@redhat.com> (raw)
From: Ciara Power <ciara.power@intel.com>
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.
v10:
- Updated API namespace and moved it to rte_vect.h,
- Split patch 2 and merged relevant parts in patch 1,
v9:
- Rebased onto main.
- Added release note.
v8:
- Rebased onto main.
- Fixed ACL patch to include AVX512X32 as a default option,
and modified docs to reflect that change.
v7: Fixed comments on v6.
v6:
- Rebased on main.
- Added ACL patch based on recent changes to the library.
- Modified net library patch based on recent rework.
- Fixed comments on the v5.
v5: Fixed cc list.
v4:
- Dropped LPM patch as the lookupx4 function is called from SSE/NEON headers,
so is already on a vectorised path. Given the performance impact for an
unnecessary change, it was decided the check is not needed.
- Renamed enum values for readability.
- Added patch to add check for node library.
- Reworked net patch to choose default handlers rather than scalar by default.
- Updated some Doxygen comments.
- Fixed some other small comments on v3.
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: control max SIMD bitwidth
doc: describe how to enable AVX512
net/i40e: check max SIMD bitwidth
net/axgbe: check max SIMD bitwidth
net/bnxt: check max SIMD bitwidth
net/enic: check max SIMD bitwidth
net/fm10k: check max SIMD bitwidth
net/iavf: check max SIMD bitwidth
net/ice: check max SIMD bitwidth
net/ixgbe: check max SIMD bitwidth
net/mlx5: check max SIMD bitwidth
net/virtio: check max SIMD bitwidth
distributor: check max SIMD bitwidth
member: check max SIMD bitwidth
efd: check max SIMD bitwidth
net: check max SIMD bitwidth
node: choose vector path at runtime
acl: check max SIMD bitwidth
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 | 34 +++++
.../prog_guide/packet_classif_access_ctrl.rst | 16 +--
doc/guides/rel_notes/release_20_11.rst | 6 +
drivers/net/axgbe/axgbe_rxtx.c | 4 +-
drivers/net/bnxt/bnxt_ethdev.c | 7 +-
drivers/net/enic/enic_rxtx_vec_avx2.c | 4 +-
drivers/net/fm10k/fm10k_ethdev.c | 10 +-
drivers/net/i40e/i40e_rxtx.c | 19 ++-
drivers/net/iavf/iavf_rxtx.c | 17 ++-
drivers/net/ice/ice_rxtx.c | 17 ++-
drivers/net/ixgbe/ixgbe_rxtx.c | 6 +-
drivers/net/mlx5/mlx5_rxtx_vec.c | 3 +
drivers/net/virtio/virtio_ethdev.c | 10 +-
lib/librte_acl/rte_acl.c | 53 +++++---
lib/librte_acl/rte_acl.h | 1 +
lib/librte_distributor/rte_distributor.c | 4 +-
lib/librte_eal/arm/include/rte_vect.h | 2 +
lib/librte_eal/common/eal_common_options.c | 66 ++++++++++
lib/librte_eal/common/eal_internal_cfg.h | 8 ++
lib/librte_eal/common/eal_options.h | 2 +
lib/librte_eal/include/generic/rte_vect.h | 53 +++++++-
lib/librte_eal/ppc/include/rte_vect.h | 2 +
lib/librte_eal/rte_eal_exports.def | 3 +
lib/librte_eal/rte_eal_version.map | 2 +
lib/librte_eal/x86/include/rte_vect.h | 2 +
lib/librte_efd/rte_efd.c | 8 +-
lib/librte_member/rte_member_ht.c | 4 +-
lib/librte_net/rte_net_crc.c | 117 +++++++++++++-----
lib/librte_node/ip4_lookup.c | 15 ++-
lib/librte_node/ip4_lookup_neon.h | 2 +-
lib/librte_node/ip4_lookup_sse.h | 2 +-
34 files changed, 458 insertions(+), 94 deletions(-)
create mode 100644 doc/guides/howto/avx512.rst
--
2.23.0
next reply other threads:[~2020-10-19 13:49 UTC|newest]
Thread overview: 20+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-10-19 13:48 David Marchand [this message]
2020-10-19 13:48 ` [dpdk-dev] [PATCH v10 01/18] eal: control max SIMD bitwidth David Marchand
2020-10-19 13:48 ` [dpdk-dev] [PATCH v10 02/18] doc: describe how to enable AVX512 David Marchand
2020-10-19 13:48 ` [dpdk-dev] [PATCH v10 03/18] net/i40e: check max SIMD bitwidth David Marchand
2020-10-19 13:48 ` [dpdk-dev] [PATCH v10 04/18] net/axgbe: " David Marchand
2020-10-19 13:48 ` [dpdk-dev] [PATCH v10 05/18] net/bnxt: " David Marchand
2020-10-19 13:48 ` [dpdk-dev] [PATCH v10 06/18] net/enic: " David Marchand
2020-10-19 13:48 ` [dpdk-dev] [PATCH v10 07/18] net/fm10k: " David Marchand
2020-10-19 13:48 ` [dpdk-dev] [PATCH v10 08/18] net/iavf: " David Marchand
2020-10-19 13:48 ` [dpdk-dev] [PATCH v10 09/18] net/ice: " David Marchand
2020-10-19 13:48 ` [dpdk-dev] [PATCH v10 10/18] net/ixgbe: " David Marchand
2020-10-19 13:48 ` [dpdk-dev] [PATCH v10 11/18] net/mlx5: " David Marchand
2020-10-19 13:48 ` [dpdk-dev] [PATCH v10 12/18] net/virtio: " David Marchand
2020-10-19 13:48 ` [dpdk-dev] [PATCH v10 13/18] distributor: " David Marchand
2020-10-19 13:48 ` [dpdk-dev] [PATCH v10 14/18] member: " David Marchand
2020-10-19 13:48 ` [dpdk-dev] [PATCH v10 15/18] efd: " David Marchand
2020-10-19 13:48 ` [dpdk-dev] [PATCH v10 16/18] net: " David Marchand
2020-10-19 13:48 ` [dpdk-dev] [PATCH v10 17/18] node: choose vector path at runtime David Marchand
2020-10-19 13:48 ` [dpdk-dev] [PATCH v10 18/18] acl: check max SIMD bitwidth David Marchand
2020-10-19 14:41 ` [dpdk-dev] [PATCH v10 00/18] add max SIMD bitwidth to EAL David Marchand
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20201019134858.32507-1-david.marchand@redhat.com \
--to=david.marchand@redhat.com \
--cc=bruce.richardson@intel.com \
--cc=ciara.power@intel.com \
--cc=dev@dpdk.org \
--cc=drc@linux.vnet.ibm.com \
--cc=jerinj@marvell.com \
--cc=konstantin.ananyev@intel.com \
--cc=ruifeng.wang@arm.com \
--cc=viktorin@rehivetech.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).