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 D586AA04DC; Mon, 19 Oct 2020 15:49:22 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 2E7EDBE4F; Mon, 19 Oct 2020 15:49:20 +0200 (CEST) Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [63.128.21.124]) by dpdk.org (Postfix) with ESMTP id 4D710BE19 for ; Mon, 19 Oct 2020 15:49:18 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1603115356; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=0ErhteJ/KHKAciDXJOQEzNGytq65LfiVAIjsFJZ8kcQ=; b=Rv78Cu0d2oYLKOEhepZKHexEVPuBPM/vkeGVdY6lIIVlJYYtxdjX1ItDAj9nDYJ+8IgwB2 n3gCMzv4Xwn/EuEQ8kgrjFiXWXMeKRQrLl1xCNN6392so7oVX15baGXQUN3fKylfS1SD5Q EMNeNIu/MpxeJobJixEnEFsfEGYcUJI= Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-564-YM5Z6WOZNOySX_1-LZe-zg-1; Mon, 19 Oct 2020 09:49:13 -0400 X-MC-Unique: YM5Z6WOZNOySX_1-LZe-zg-1 Received: from smtp.corp.redhat.com (int-mx05.intmail.prod.int.phx2.redhat.com [10.5.11.15]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id EB3861019626; Mon, 19 Oct 2020 13:49:11 +0000 (UTC) Received: from dmarchan.remote.csb (unknown [10.40.195.116]) by smtp.corp.redhat.com (Postfix) with ESMTP id B246A55775; Mon, 19 Oct 2020 13:49:09 +0000 (UTC) From: David Marchand To: dev@dpdk.org Cc: viktorin@rehivetech.com, ruifeng.wang@arm.com, jerinj@marvell.com, drc@linux.vnet.ibm.com, bruce.richardson@intel.com, konstantin.ananyev@intel.com, ciara.power@intel.com Date: Mon, 19 Oct 2020 15:48:40 +0200 Message-Id: <20201019134858.32507-1-david.marchand@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.15 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=david.marchand@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: 8bit Content-Type: text/plain; charset="US-ASCII" Subject: [dpdk-dev] [PATCH v10 00/18] add max SIMD bitwidth to EAL 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" From: Ciara Power A number of components in DPDK have optional AVX-512 or other vector code paths which can be selected at runtime. Rather than having each component provide its own mechanism to select a code path, this patchset adds support for a single setting to control what code paths are used. This can be used to enable some non-default code paths e.g. ones using AVX-512, but also to limit the code paths to certain vector widths, or to scalar code only, which is useful for testing. The max SIMD bitwidth setting can be set by the app itself through use of the available API, or can be overriden by a commandline argument passed by the user. v10: - Updated API namespace and moved it to rte_vect.h, - Split patch 2 and merged relevant parts in patch 1, v9: - Rebased onto main. - Added release note. v8: - Rebased onto main. - Fixed ACL patch to include AVX512X32 as a default option, and modified docs to reflect that change. v7: Fixed comments on v6. v6: - Rebased on main. - Added ACL patch based on recent changes to the library. - Modified net library patch based on recent rework. - Fixed comments on the v5. v5: Fixed cc list. v4: - Dropped LPM patch as the lookupx4 function is called from SSE/NEON headers, so is already on a vectorised path. Given the performance impact for an unnecessary change, it was decided the check is not needed. - Renamed enum values for readability. - Added patch to add check for node library. - Reworked net patch to choose default handlers rather than scalar by default. - Updated some Doxygen comments. - Fixed some other small comments on v3. v3: - Added patch to add check for LPM lib - Modified default max bitwidth for Arm to disable max SIMD bitwidth, which will allow for SVE. - Added "0" as an acceptable value for command-line flag, which internally is used as UINT16_MAX to essentially disable max SIMD bitwidth limits. - Made suggested changes to net lib patch. - Rebased onto main. v2: - Added some documentation. - Modified default max bitwidth for Arm. - Moved mlx5 condition check into existing check vec support function. - Added max SIMD bitwidth checks to some libraries. Ciara Power (18): eal: control max SIMD bitwidth doc: describe how to enable AVX512 net/i40e: check max SIMD bitwidth net/axgbe: check max SIMD bitwidth net/bnxt: check max SIMD bitwidth net/enic: check max SIMD bitwidth net/fm10k: check max SIMD bitwidth net/iavf: check max SIMD bitwidth net/ice: check max SIMD bitwidth net/ixgbe: check max SIMD bitwidth net/mlx5: check max SIMD bitwidth net/virtio: check max SIMD bitwidth distributor: check max SIMD bitwidth member: check max SIMD bitwidth efd: check max SIMD bitwidth net: check max SIMD bitwidth node: choose vector path at runtime acl: check max SIMD bitwidth doc/guides/howto/avx512.rst | 36 ++++++ doc/guides/howto/index.rst | 1 + doc/guides/linux_gsg/eal_args.include.rst | 16 +++ .../prog_guide/env_abstraction_layer.rst | 34 +++++ .../prog_guide/packet_classif_access_ctrl.rst | 16 +-- doc/guides/rel_notes/release_20_11.rst | 6 + drivers/net/axgbe/axgbe_rxtx.c | 4 +- drivers/net/bnxt/bnxt_ethdev.c | 7 +- drivers/net/enic/enic_rxtx_vec_avx2.c | 4 +- drivers/net/fm10k/fm10k_ethdev.c | 10 +- drivers/net/i40e/i40e_rxtx.c | 19 ++- drivers/net/iavf/iavf_rxtx.c | 17 ++- drivers/net/ice/ice_rxtx.c | 17 ++- drivers/net/ixgbe/ixgbe_rxtx.c | 6 +- drivers/net/mlx5/mlx5_rxtx_vec.c | 3 + drivers/net/virtio/virtio_ethdev.c | 10 +- lib/librte_acl/rte_acl.c | 53 +++++--- lib/librte_acl/rte_acl.h | 1 + lib/librte_distributor/rte_distributor.c | 4 +- lib/librte_eal/arm/include/rte_vect.h | 2 + lib/librte_eal/common/eal_common_options.c | 66 ++++++++++ lib/librte_eal/common/eal_internal_cfg.h | 8 ++ lib/librte_eal/common/eal_options.h | 2 + lib/librte_eal/include/generic/rte_vect.h | 53 +++++++- lib/librte_eal/ppc/include/rte_vect.h | 2 + lib/librte_eal/rte_eal_exports.def | 3 + lib/librte_eal/rte_eal_version.map | 2 + lib/librte_eal/x86/include/rte_vect.h | 2 + lib/librte_efd/rte_efd.c | 8 +- lib/librte_member/rte_member_ht.c | 4 +- lib/librte_net/rte_net_crc.c | 117 +++++++++++++----- lib/librte_node/ip4_lookup.c | 15 ++- lib/librte_node/ip4_lookup_neon.h | 2 +- lib/librte_node/ip4_lookup_sse.h | 2 +- 34 files changed, 458 insertions(+), 94 deletions(-) create mode 100644 doc/guides/howto/avx512.rst -- 2.23.0