mbox series

[v8,0/8] fib: implement AVX512 vector lookup

Message ID cover.1601461541.git.vladimir.medvedkin@intel.com (mailing list archive)
Headers
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

David Marchand Oct. 6, 2020, 2:31 p.m. UTC | #1
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.
  
Vladimir Medvedkin Oct. 6, 2020, 3:13 p.m. UTC | #2
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

>