From: Konstantin Ananyev <konstantin.ananyev@intel.com> To: dev@dpdk.org Cc: jerinj@marvell.com, ruifeng.wang@arm.com, vladimir.medvedkin@intel.com, Konstantin Ananyev <konstantin.ananyev@intel.com> Subject: [dpdk-dev] [PATCH v3 00/14] acl: introduce AVX512 classify methods Date: Mon, 5 Oct 2020 19:45:12 +0100 Message-ID: <20201005184526.7465-1-konstantin.ananyev@intel.com> (raw) In-Reply-To: <20200915165025.543-1-konstantin.ananyev@intel.com> These patch series introduce support of AVX512 specific classify implementation for ACL library. It adds two new algorithms: - RTE_ACL_CLASSIFY_AVX512X16 - can process up to 16 flows in parallel. It uses 256-bit width instructions/registers only (to avoid frequency level change). On my SKX box test-acl shows ~15-30% improvement (depending on rule-set and input burst size) when switching from AVX2 to AVX512X16 classify algorithms. - RTE_ACL_CLASSIFY_AVX512X32 - can process up to 32 flows in parallel. It uses 512-bit width instructions/registers and provides higher performance then AVX512X16, but can cause frequency level change. On my SKX box test-acl shows ~50-70% improvement (depending on rule-set and input burst size) when switching from AVX2 to AVX512X32 classify algorithms. ICX and CLX testing showed similar level of speedup. Current AVX512 classify implementation is only supported on x86_64. Note that this series introduce a formal ABI incompatibility with previous versions of ACL library. v2 -> v3: Fix checkpatch warnings Split AVX512 algorithm into two and deduplicate common code v1 -> v2: Deduplicated 8/16 code paths as much as possible Updated default algorithm selection Removed library constructor to make it easier integrate with https://patches.dpdk.org/project/dpdk/list/?series=11831 Updated docs These patch series depends on: https://patches.dpdk.org/patch/79310/ to be applied first. Konstantin Ananyev (14): acl: fix x86 build when compiler doesn't support AVX2 doc: fix missing classify methods in ACL guide acl: remove of unused enum value acl: remove library constructor app/acl: few small improvements test/acl: expand classify test coverage acl: add infrastructure to support AVX512 classify acl: introduce 256-bit width AVX512 classify implementation acl: update default classify algorithm selection acl: introduce 512-bit width AVX512 classify implementation acl: for AVX512 classify use 4B load whenever possible acl: deduplicate AVX512 code paths test/acl: add AVX512 classify support app/acl: add AVX512 classify support app/test-acl/main.c | 23 +- app/test/test_acl.c | 105 ++-- config/x86/meson.build | 3 +- .../prog_guide/packet_classif_access_ctrl.rst | 20 + doc/guides/rel_notes/deprecation.rst | 4 - doc/guides/rel_notes/release_20_11.rst | 12 + lib/librte_acl/acl.h | 16 + lib/librte_acl/acl_bld.c | 34 ++ lib/librte_acl/acl_gen.c | 2 +- lib/librte_acl/acl_run_avx512.c | 164 ++++++ lib/librte_acl/acl_run_avx512_common.h | 477 ++++++++++++++++++ lib/librte_acl/acl_run_avx512x16.h | 341 +++++++++++++ lib/librte_acl/acl_run_avx512x8.h | 253 ++++++++++ lib/librte_acl/meson.build | 39 ++ lib/librte_acl/rte_acl.c | 212 ++++++-- lib/librte_acl/rte_acl.h | 4 +- 16 files changed, 1609 insertions(+), 100 deletions(-) create mode 100644 lib/librte_acl/acl_run_avx512.c create mode 100644 lib/librte_acl/acl_run_avx512_common.h create mode 100644 lib/librte_acl/acl_run_avx512x16.h create mode 100644 lib/librte_acl/acl_run_avx512x8.h -- 2.17.1
next prev parent reply other threads:[~2020-10-05 19:43 UTC|newest] Thread overview: 70+ messages / expand[flat|nested] mbox.gz Atom feed top 2020-08-07 16:28 [dpdk-dev] [PATCH 20.11 0/7] acl: introduce AVX512 classify method Konstantin Ananyev 2020-08-07 16:28 ` [dpdk-dev] [PATCH 20.11 1/7] acl: fix x86 build when compiler doesn't support AVX2 Konstantin Ananyev 2020-08-07 16:28 ` [dpdk-dev] [PATCH 20.11 2/7] app/acl: few small improvements Konstantin Ananyev 2020-08-07 16:28 ` [dpdk-dev] [PATCH 20.11 3/7] acl: remove of unused enum value Konstantin Ananyev 2020-08-07 16:28 ` [dpdk-dev] [PATCH 20.11 4/7] acl: add infrastructure to support AVX512 classify Konstantin Ananyev 2020-08-07 16:28 ` [dpdk-dev] [PATCH 20.11 5/7] app/acl: add AVX512 classify support Konstantin Ananyev 2020-08-07 16:28 ` [dpdk-dev] [PATCH 20.11 6/7] acl: introduce AVX512 classify implementation Konstantin Ananyev 2020-08-07 16:28 ` [dpdk-dev] [PATCH 20.11 7/7] acl: enhance " Konstantin Ananyev 2020-09-15 16:50 ` [dpdk-dev] [PATCH v2 00/12] acl: introduce AVX512 classify method Konstantin Ananyev 2020-09-15 16:50 ` [dpdk-dev] [PATCH v2 01/12] acl: fix x86 build when compiler doesn't support AVX2 Konstantin Ananyev 2020-09-15 16:50 ` [dpdk-dev] [PATCH v2 02/12] doc: fix mixing classify methods in ACL guide Konstantin Ananyev 2020-09-15 16:50 ` [dpdk-dev] [PATCH v2 03/12] acl: remove of unused enum value Konstantin Ananyev 2020-09-27 3:27 ` Ruifeng Wang 2020-09-15 16:50 ` [dpdk-dev] [PATCH v2 04/12] acl: remove library constructor Konstantin Ananyev 2020-09-15 16:50 ` [dpdk-dev] [PATCH v2 05/12] app/acl: few small improvements Konstantin Ananyev 2020-09-15 16:50 ` [dpdk-dev] [PATCH v2 06/12] test/acl: expand classify test coverage Konstantin Ananyev 2020-09-15 16:50 ` [dpdk-dev] [PATCH v2 07/12] acl: add infrastructure to support AVX512 classify Konstantin Ananyev 2020-09-16 9:11 ` Bruce Richardson 2020-09-16 9:36 ` Medvedkin, Vladimir 2020-09-16 9:49 ` Bruce Richardson 2020-09-16 10:06 ` Ananyev, Konstantin 2020-09-15 16:50 ` [dpdk-dev] [PATCH v2 08/12] acl: introduce AVX512 classify implementation Konstantin Ananyev 2020-09-15 16:50 ` [dpdk-dev] [PATCH v2 09/12] acl: enhance " Konstantin Ananyev 2020-09-15 16:50 ` [dpdk-dev] [PATCH v2 10/12] acl: for AVX512 classify use 4B load whenever possible Konstantin Ananyev 2020-09-15 16:50 ` [dpdk-dev] [PATCH v2 11/12] test/acl: add AVX512 classify support Konstantin Ananyev 2020-09-15 16:50 ` [dpdk-dev] [PATCH v2 12/12] app/acl: " Konstantin Ananyev 2020-10-05 18:45 ` Konstantin Ananyev [this message] 2020-10-05 18:45 ` [dpdk-dev] [PATCH v3 01/14] acl: fix x86 build when compiler doesn't support AVX2 Konstantin Ananyev 2020-10-05 18:45 ` [dpdk-dev] [PATCH v3 02/14] doc: fix missing classify methods in ACL guide Konstantin Ananyev 2020-10-05 18:45 ` [dpdk-dev] [PATCH v3 03/14] acl: remove of unused enum value Konstantin Ananyev 2020-10-05 18:45 ` [dpdk-dev] [PATCH v3 04/14] acl: remove library constructor Konstantin Ananyev 2020-10-05 18:45 ` [dpdk-dev] [PATCH v3 05/14] app/acl: few small improvements Konstantin Ananyev 2020-10-05 18:45 ` [dpdk-dev] [PATCH v3 06/14] test/acl: expand classify test coverage Konstantin Ananyev 2020-10-05 18:45 ` [dpdk-dev] [PATCH v3 07/14] acl: add infrastructure to support AVX512 classify Konstantin Ananyev 2020-10-05 18:45 ` [dpdk-dev] [PATCH v3 08/14] acl: introduce 256-bit width AVX512 classify implementation Konstantin Ananyev 2020-10-05 18:45 ` [dpdk-dev] [PATCH v3 09/14] acl: update default classify algorithm selection Konstantin Ananyev 2020-10-05 18:45 ` [dpdk-dev] [PATCH v3 10/14] acl: introduce 512-bit width AVX512 classify implementation Konstantin Ananyev 2020-10-05 18:45 ` [dpdk-dev] [PATCH v3 11/14] acl: for AVX512 classify use 4B load whenever possible Konstantin Ananyev 2020-10-05 18:45 ` [dpdk-dev] [PATCH v3 12/14] acl: deduplicate AVX512 code paths Konstantin Ananyev 2020-10-05 18:45 ` [dpdk-dev] [PATCH v3 13/14] test/acl: add AVX512 classify support Konstantin Ananyev 2020-10-05 18:45 ` [dpdk-dev] [PATCH v3 14/14] app/acl: " Konstantin Ananyev 2020-10-06 15:03 ` [dpdk-dev] [PATCH v4 00/14] acl: introduce AVX512 classify methods Konstantin Ananyev 2020-10-06 15:03 ` [dpdk-dev] [PATCH v4 01/14] acl: fix x86 build when compiler doesn't support AVX2 Konstantin Ananyev 2020-10-08 13:42 ` [dpdk-dev] [dpdk-stable] " David Marchand 2020-10-06 15:03 ` [dpdk-dev] [PATCH v4 02/14] doc: fix missing classify methods in ACL guide Konstantin Ananyev 2020-10-08 13:42 ` David Marchand 2020-10-06 15:03 ` [dpdk-dev] [PATCH v4 03/14] acl: remove of unused enum value Konstantin Ananyev 2020-10-06 15:03 ` [dpdk-dev] [PATCH v4 04/14] acl: remove library constructor Konstantin Ananyev 2020-10-06 15:03 ` [dpdk-dev] [PATCH v4 05/14] app/acl: few small improvements Konstantin Ananyev 2020-10-06 15:03 ` [dpdk-dev] [PATCH v4 06/14] test/acl: expand classify test coverage Konstantin Ananyev 2020-10-06 15:03 ` [dpdk-dev] [PATCH v4 07/14] acl: add infrastructure to support AVX512 classify Konstantin Ananyev 2020-10-13 19:17 ` David Marchand 2020-10-13 22:26 ` Ananyev, Konstantin 2020-10-06 15:03 ` [dpdk-dev] [PATCH v4 08/14] acl: introduce 256-bit width AVX512 classify implementation Konstantin Ananyev 2020-10-06 15:03 ` [dpdk-dev] [PATCH v4 09/14] acl: update default classify algorithm selection Konstantin Ananyev 2020-10-06 15:03 ` [dpdk-dev] [PATCH v4 10/14] acl: introduce 512-bit width AVX512 classify implementation Konstantin Ananyev 2020-10-06 15:03 ` [dpdk-dev] [PATCH v4 11/14] acl: for AVX512 classify use 4B load whenever possible Konstantin Ananyev 2020-10-06 15:03 ` [dpdk-dev] [PATCH v4 12/14] acl: deduplicate AVX512 code paths Konstantin Ananyev 2020-10-16 15:56 ` Ferruh Yigit 2020-10-16 16:20 ` Thomas Monjalon 2020-10-06 15:03 ` [dpdk-dev] [PATCH v4 13/14] test/acl: add AVX512 classify support Konstantin Ananyev 2020-10-14 10:26 ` David Marchand 2020-10-14 10:32 ` Ananyev, Konstantin 2020-10-14 10:35 ` David Marchand 2020-10-06 15:03 ` [dpdk-dev] [PATCH v4 14/14] app/acl: " Konstantin Ananyev 2020-10-14 12:40 ` [dpdk-dev] [PATCH v4 00/14] acl: introduce AVX512 classify methods David Marchand 2020-10-06 15:05 ` [dpdk-dev] [PATCH v3 " David Marchand 2020-10-06 16:07 ` Ananyev, Konstantin 2020-10-08 10:49 ` David Marchand 2020-10-14 9:23 ` Kinsella, Ray
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=20201005184526.7465-1-konstantin.ananyev@intel.com \ --to=konstantin.ananyev@intel.com \ --cc=dev@dpdk.org \ --cc=jerinj@marvell.com \ --cc=ruifeng.wang@arm.com \ --cc=vladimir.medvedkin@intel.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
DPDK patches and discussions This inbox may be cloned and mirrored by anyone: git clone --mirror http://inbox.dpdk.org/dev/0 dev/git/0.git # If you have public-inbox 1.1+ installed, you may # initialize and index your mirror using the following commands: public-inbox-init -V2 dev dev/ http://inbox.dpdk.org/dev \ dev@dpdk.org public-inbox-index dev Example config snippet for mirrors. Newsgroup available over NNTP: nntp://inbox.dpdk.org/inbox.dpdk.dev AGPL code for this site: git clone https://public-inbox.org/public-inbox.git