[dpdk-dev] [PATCH v6 0/8] fib: implement AVX512 vector lookup
Stephen Hemminger
stephen at networkplumber.org
Tue Jul 14 16:38:28 CEST 2020
On Tue, 14 Jul 2020 08:31:32 +0100
"Kinsella, Ray" <mdr at ashroe.eu> wrote:
> On 13/07/2020 23:19, Stephen Hemminger wrote:
> > On Mon, 13 Jul 2020 12:11:19 +0100
> > Vladimir Medvedkin <vladimir.medvedkin at 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.
> >>
> >> 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 +++++-
> >> lib/librte_eal/x86/include/rte_vect.h | 19 ++
> >> lib/librte_fib/Makefile | 24 +++
> >> 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 | 24 +++
> >> lib/librte_fib/rte_fib6.c | 20 +-
> >> lib/librte_fib/rte_fib6.h | 22 ++
> >> 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, 1114 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
> >>
> >
> > Did anyone else see the recent AVX512 discussion from Linus:
> > "I hope AVX512 dies a painful death, and that Intel starts fixing real problems
> > instead of trying to create magic instructions to then create benchmarks that they can look good on.
>
> Yup - I saw this one.
> Sweeping statements like these are good to provoke debate, the truth is generally more nuanced.
> If you continue to read the post, Linus appears to be mostly questioning microprocessor design decisions.
>
> That is an interesting discussion, however the reality is that the technology does exists and may be beneficial for Packet Processing.
>
> I would suggest, we continue to apply the same logic governing adoption of any technology by DPDK.
> When the technology is present and a clear benefit is shown, we use it with caution.
>
> In the case of Vladimir's patch,
> the user has to explicitly switch on the AVX512 lookup with RTE_FIB_DIR24_8_VECTOR_AVX512.
>
Using what is available makes sense in DPDK.
More information about the dev
mailing list