Message ID | cover.1601461541.git.vladimir.medvedkin@intel.com (mailing list archive) |
---|---|
Headers |
Return-Path: <dev-bounces@dpdk.org> X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id 281D3A04B5; Wed, 30 Sep 2020 12:35:54 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 02BCC1DAD2; Wed, 30 Sep 2020 12:35:52 +0200 (CEST) Received: from mga18.intel.com (mga18.intel.com [134.134.136.126]) by dpdk.org (Postfix) with ESMTP id 61C261C222 for <dev@dpdk.org>; Wed, 30 Sep 2020 12:35:51 +0200 (CEST) IronPort-SDR: nN8K+dKTVtyDicVVLUzAghot95eBosSFRZbJcXoAQAkcqL8Jap7G4RWlzLF6pA60P0qQ26pTeH isdayZVERPsA== X-IronPort-AV: E=McAfee;i="6000,8403,9759"; a="150198775" X-IronPort-AV: E=Sophos;i="5.77,322,1596524400"; d="scan'208";a="150198775" X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga003.jf.intel.com ([10.7.209.27]) by orsmga106.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 30 Sep 2020 03:35:50 -0700 IronPort-SDR: SOGVUpKm98/wMPJ89YKYOQ7bnBoUSHimRiFWW2ahZ/RwUJGMD9F/tpV/PYoXKdLG2aINNeXOQM ea7JvYI07VSg== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.77,322,1596524400"; d="scan'208";a="308111149" Received: from silpixa00400072.ir.intel.com ([10.237.222.213]) by orsmga003.jf.intel.com with ESMTP; 30 Sep 2020 03:35:48 -0700 From: Vladimir Medvedkin <vladimir.medvedkin@intel.com> To: dev@dpdk.org Cc: david.marchand@redhat.com, jerinj@marvell.com, mdr@ashroe.eu, thomas@monjalon.net, konstantin.ananyev@intel.com, bruce.richardson@intel.com Date: Wed, 30 Sep 2020 11:35:38 +0100 Message-Id: <cover.1601461541.git.vladimir.medvedkin@intel.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <cover.1594640822.git.vladimir.medvedkin@intel.com> References: <cover.1594640822.git.vladimir.medvedkin@intel.com> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Subject: [dpdk-dev] [PATCH v8 0/8] fib: implement AVX512 vector lookup X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions <dev.dpdk.org> List-Unsubscribe: <https://mails.dpdk.org/options/dev>, <mailto:dev-request@dpdk.org?subject=unsubscribe> List-Archive: <http://mails.dpdk.org/archives/dev/> List-Post: <mailto:dev@dpdk.org> List-Help: <mailto:dev-request@dpdk.org?subject=help> List-Subscribe: <https://mails.dpdk.org/listinfo/dev>, <mailto:dev-request@dpdk.org?subject=subscribe> Errors-To: dev-bounces@dpdk.org Sender: "dev" <dev-bounces@dpdk.org> |
Series |
fib: implement AVX512 vector lookup
|
|
Message
Vladimir Medvedkin
Sept. 30, 2020, 10:35 a.m. UTC
This patch series implements vectorized lookup using AVX512 for ipv4 dir24_8 and ipv6 trie algorithms. Also introduced rte_fib_set_lookup_fn() to change lookup function type. Added option to select lookup function type in testfib application. v8: - remove Makefile related changes - fix missing doxygen for lookup_type - add release notes v7: - fix RTE_X86_ZMM_MASK macro v6: - style fixes v5: - prefix zmm macro in rte_vect.h with RTE_X86 - remove unnecessary typedef for _x86_zmm_t - reword commit title - fix typos v4: - use __rte_aligned() instead of using compiler attribute directly - rework and add comments to meson.build v3: - separate out the AVX-512 code into a separate file v2: - rename rte_zmm to __rte_x86_zmm to reflect its internal usage - make runtime decision to use avx512 lookup Vladimir Medvedkin (8): eal/x86: introduce AVX 512-bit type fib: make lookup function type configurable fib: move lookup definition into the header file fib: introduce AVX512 lookup fib6: make lookup function type configurable fib6: move lookup definition into the header file fib6: introduce AVX512 lookup app/testfib: add support for different lookup functions app/test-fib/main.c | 58 ++++++- doc/guides/rel_notes/release_20_11.rst | 3 + lib/librte_eal/x86/include/rte_vect.h | 19 +++ lib/librte_fib/dir24_8.c | 281 ++++++--------------------------- lib/librte_fib/dir24_8.h | 226 +++++++++++++++++++++++++- lib/librte_fib/dir24_8_avx512.c | 165 +++++++++++++++++++ lib/librte_fib/dir24_8_avx512.h | 24 +++ lib/librte_fib/meson.build | 31 ++++ lib/librte_fib/rte_fib.c | 21 ++- lib/librte_fib/rte_fib.h | 25 +++ lib/librte_fib/rte_fib6.c | 20 ++- lib/librte_fib/rte_fib6.h | 24 +++ lib/librte_fib/rte_fib_version.map | 2 + lib/librte_fib/trie.c | 161 ++++--------------- lib/librte_fib/trie.h | 119 +++++++++++++- lib/librte_fib/trie_avx512.c | 269 +++++++++++++++++++++++++++++++ lib/librte_fib/trie_avx512.h | 20 +++ 17 files changed, 1096 insertions(+), 372 deletions(-) create mode 100644 lib/librte_fib/dir24_8_avx512.c create mode 100644 lib/librte_fib/dir24_8_avx512.h create mode 100644 lib/librte_fib/trie_avx512.c create mode 100644 lib/librte_fib/trie_avx512.h
Comments
Hello, On Wed, Sep 30, 2020 at 12:35 PM Vladimir Medvedkin <vladimir.medvedkin@intel.com> wrote: > > This patch series implements vectorized lookup using AVX512 for > ipv4 dir24_8 and ipv6 trie algorithms. > Also introduced rte_fib_set_lookup_fn() to change lookup function type. > Added option to select lookup function type in testfib application. > > v8: > - remove Makefile related changes > - fix missing doxygen for lookup_type > - add release notes Now that https://git.dpdk.org/dpdk/commit/?id=84fb33fec179ea96f814aed9f658d5a2df20745d is merged, some bits in this series need rework (patch 4 and 7). I see we are adding an API to control which vector implementation of the lookup is used. Is this required? My previous understanding was that the SIMD bitwidth work would supersede this.
Hi David, On 06/10/2020 15:31, David Marchand wrote: > Hello, > > On Wed, Sep 30, 2020 at 12:35 PM Vladimir Medvedkin > <vladimir.medvedkin@intel.com> wrote: >> >> This patch series implements vectorized lookup using AVX512 for >> ipv4 dir24_8 and ipv6 trie algorithms. >> Also introduced rte_fib_set_lookup_fn() to change lookup function type. >> Added option to select lookup function type in testfib application. >> >> v8: >> - remove Makefile related changes >> - fix missing doxygen for lookup_type >> - add release notes > > Now that https://git.dpdk.org/dpdk/commit/?id=84fb33fec179ea96f814aed9f658d5a2df20745d > is merged, some bits in this series need rework (patch 4 and 7). > > I see we are adding an API to control which vector implementation of > the lookup is used. > Is this required? > My previous understanding was that the SIMD bitwidth work would supersede this. > I will resend v9 reflecting the latest SIMD bitwidth patches >