From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id 9CC77A0563; Wed, 15 Apr 2020 20:17:33 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 7D9E51D9BB; Wed, 15 Apr 2020 20:17:33 +0200 (CEST) Received: from mga12.intel.com (mga12.intel.com [192.55.52.136]) by dpdk.org (Postfix) with ESMTP id A9F811C1B1 for ; Wed, 15 Apr 2020 20:17:31 +0200 (CEST) IronPort-SDR: +iUK0lMY5ZYqjyyByTIN24tW5EL9cPochcvspmpolVSXC3vXRBrR2DjgJlHNMyAMKUPuUn2JZd 5nUJS7uOlHpg== X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga004.fm.intel.com ([10.253.24.48]) by fmsmga106.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 15 Apr 2020 11:17:30 -0700 IronPort-SDR: cZcF9m14HeWAQ8CLPjNlTjYUyqi6im0NzAiptyBZd76OPTKmYkuBCoCI6Ih/N4pZNONAtl6+0S Je3ePLxoQV0w== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.72,388,1580803200"; d="scan'208";a="277702347" Received: from silpixa00400072.ir.intel.com ([10.237.222.213]) by fmsmga004.fm.intel.com with ESMTP; 15 Apr 2020 11:17:29 -0700 From: Vladimir Medvedkin To: dev@dpdk.org Cc: konstantin.ananyev@intel.com, yipeng1.wang@intel.com, sameh.gobriel@intel.com, bruce.richardson@intel.com Date: Wed, 15 Apr 2020 19:17:23 +0100 Message-Id: X-Mailer: git-send-email 2.7.4 In-Reply-To: References: Subject: [dpdk-dev] [PATCH v3 0/4] add new k32v64 hash table X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" Currently DPDK has a special implementation of a hash table for 4 byte keys which is called FBK hash. Unfortunately its main drawback is that it only supports 2 byte values. The new implementation called K32V64 hash supports 4 byte keys and 8 byte associated values, which is enough to store a pointer. It would also be nice to get feedback on whether to leave the old FBK and new k32v64 implementations or deprecate the old one? v3: - added bulk lookup - avx512 key comparizon is removed from .h v2: - renamed from rte_dwk to rte_k32v64 as was suggested - reworked lookup function, added inlined subroutines - added avx512 key comparizon routine - added documentation - added statistic counters for total entries and extended entries(linked list) Vladimir Medvedkin (4): hash: add k32v64 hash library hash: add documentation for k32v64 hash library test: add k32v64 hash autotests test: add k32v64 perf tests app/test/Makefile | 1 + app/test/autotest_data.py | 12 ++ app/test/meson.build | 3 + app/test/test_hash_perf.c | 130 ++++++++++++ app/test/test_k32v64_hash.c | 229 ++++++++++++++++++++++ doc/api/doxy-api-index.md | 1 + doc/guides/prog_guide/index.rst | 1 + doc/guides/prog_guide/k32v64_hash_lib.rst | 66 +++++++ lib/Makefile | 2 +- lib/librte_hash/Makefile | 13 +- lib/librte_hash/k32v64_hash_avx512vl.c | 56 ++++++ lib/librte_hash/meson.build | 17 +- lib/librte_hash/rte_hash_version.map | 6 +- lib/librte_hash/rte_k32v64_hash.c | 315 ++++++++++++++++++++++++++++++ lib/librte_hash/rte_k32v64_hash.h | 211 ++++++++++++++++++++ 15 files changed, 1058 insertions(+), 5 deletions(-) create mode 100644 app/test/test_k32v64_hash.c create mode 100644 doc/guides/prog_guide/k32v64_hash_lib.rst create mode 100644 lib/librte_hash/k32v64_hash_avx512vl.c create mode 100644 lib/librte_hash/rte_k32v64_hash.c create mode 100644 lib/librte_hash/rte_k32v64_hash.h -- 2.7.4