> > On 2/2/22 13:57, Stokes, Ian wrote: > > >>> -----Original Message----- > > >>> From: Ferriter, Cian > > >>> Sent: Friday 28 January 2022 16:32 > > >>> To: William Tu <u9012...@gmail.com>; d...@openvswitch.org > > >>> Subject: RE: [ovs-dev] [PATCH] acinclude: Detect avx512 vpopcntdq > compiler > > >> support. > > >>> > > >>> > > >>>> -----Original Message----- > > >>>> From: dev <ovs-dev-boun...@openvswitch.org> On Behalf Of William > Tu > > >>>> Sent: Thursday 27 January 2022 03:45 > > >>>> To: d...@openvswitch.org > > >>>> Subject: [ovs-dev] [PATCH] acinclude: Detect avx512 vpopcntdq compiler > > >> support. > > >>>> > > >>>> Ubuntu Xenial 16.04 is using GCC 5.4 and it does not support > > >>>> target "-mavx512vpopcntdq" and cuases error > > >>>> lib/dpif-netdev-lookup-avx512-gather.c:356:47: > > >>>> error: attribute(target("avx512vpopcntdq")) is unknown > > >>>> GCC 7+ supports vpopcntdq: > > >>>> https://gcc.gnu.org/gcc-7/changes.html > > >>>> The patch detects vpopcntdq and disables AVX512 when not found. > > >>>> > > >>>> Reported-by: Greg Rose <gvrose8...@gmail.com> > > >>>> Signed-off-by: William Tu <u9012...@gmail.com> > > >>>> --- > > >>>> acinclude.m4 | 2 +- > > >>>> 1 file changed, 1 insertion(+), 1 deletion(-) > > >>>> > > >>>> diff --git a/acinclude.m4 b/acinclude.m4 > > >>>> index 5c971e98ce91..0c360fd1ef73 100644 > > >>>> --- a/acinclude.m4 > > >>>> +++ b/acinclude.m4 > > >>>> @@ -77,7 +77,7 @@ dnl Checks if compiler and binutils supports > AVX512. > > >>>> AC_DEFUN([OVS_CHECK_AVX512], [ > > >>>> OVS_CHECK_BINUTILS_AVX512 > > >>>> OVS_CHECK_CC_OPTION( > > >>>> - [-mavx512f], [ovs_have_cc_mavx512f=yes], > > >> [ovs_have_cc_mavx512f=no]) > > >>>> + [-mavx512f -mavx512vpopcntdq], [ovs_have_cc_mavx512f=yes], > > >> [ovs_have_cc_mavx512f=no]) > > >>>> AM_CONDITIONAL([HAVE_AVX512F], [test $ovs_have_cc_mavx512f = > > >> yes]) > > >>>> if test "$ovs_have_cc_mavx512f" = yes; then > > >>>> AC_DEFINE([HAVE_AVX512F], [1], > > >>>> -- > > >>> > > >>> Hi William, > > >>> > > >>> Thanks for this fix, I can verify that this fixes the below error for > > >>> GCC 5 (it > will > > >> work for GCC 4.9 > > >>> - GCC 6): > > >>> make[3]: Entering directory '/root/cian/ovs/datapath' > > >>> lib/dpif-netdev-lookup-avx512-gather.c:90:1: error: > > >> attribute(target("avx512vpopcntdq")) is unknown > > >>> > > >>> We would like to re-spin a new version of this patch that fixes the > > >>> compile > > >> error for the relevant GCC > > >>> versions (GCC 4.9 - GCC 6) but allows some AVX512 code to be build. > > >>> For setups with GCC 6 for example, we still have support for most of the > > >> AVX512 ISA used in OVS, so we > > >>> can still enable building of this ISA, while still correctly avoiding > > >>> the > > >> avx512vpopcntdq error that > > >>> your patch does. > > >>> > > >>> Please allow us a few days to test and re-spin a new version of this > > >>> patch. > > >>> Thanks, > > >>> Cian > > >> > > >> Hi again William, > > >> > > >> I have been looking into a new version of this patch to add partial > > >> support > to > > >> GCC versions that don't have full support for all the AVX512 ISA we use > > >> in > OVS. > > >> This is still a work in progress. > > >> > > >> While I'm looking into this more, I think it doesn't make sense to hold > > >> back > this > > >> patch from being merged. It fixes build issues. > > >> > > >> I think the patch should be applied as is. We can add further > > >> improvements > later. > > >> > > >> Acked-by: Cian Ferriter <cian.ferri...@intel.com> > > >> > > >> More details about what I tested: > > >> I switched to GCC 5 on my system and can see the compile issue below > before > > >> applying the patch. > > >> After applying the patch, the build is successful. > > >> Before patch > > >> Configure message: > > >> checking whether gcc accepts -mavx512f... yes > > >> > > >> Build error: > > >> make[3]: Entering directory '/root/cian/ovs/datapath' > > >> lib/dpif-netdev-lookup-avx512-gather.c:90:1: error: > > >> attribute(target("avx512vpopcntdq")) is unknown > > >> > > >> After patch > > >> Configure message: > > >> checking whether gcc accepts -mavx512f -mavx512vpopcntdq... no > > >> > > >> On GCC 4.8 before the patch is applied, the build is actually > > >> successful, since > the > > >> "avx512f" only check fails, so the AVX512 build is disabled. > > >> On GCC 4.8 after the patch is applied, the build still works as expected. > > >> Before patch > > >> Configure message: > > >> checking whether gcc -std=gnu99 accepts -mavx512f... no > > >> > > >> After patch > > >> Configure message: > > >> checking whether gcc -std=gnu99 accepts -mavx512f - > mavx512vpopcntdq... no > > >> > > >> I also checked that all was working as expected with the compile time > AVX512 > > >> flags: > > >> --enable-dpif-default-avx512 --enable-autovalidator > > >> --enable-mfex-default- > > >> autovalidator > > >> > > >> I can confirm that these compile time flags don't cause issues. > > >> > > >> Finally, I tested and confirmed that OVS was still building and running > > >> with > > >> AVX512 support when built with GCC 9. > > > > > > Thanks for the patch William and thanks for testing Cian. > > > > > > Just looking and it seems this should be backported as far as 2.16 if I'm > correct? At least from > > code inspection I see reference to vpopcntdq mainly around dpif (If memory > serves me correctly it was > > 2.16 when AVX512 was introduced to dpif). > > > > > > Thoughts? > > > > Yes, the backport is needed. I believe we had this issue reported > > for 2.16 on IRC in September, but we didn't have enough details, > > and no real actions followed: > > https://mail.openvswitch.org/pipermail/ovs-dev/2021- > September/387675.html > > > > Agreed, it is enough to backport this as far as 2.16. The commit that > introduced > the use of this ISA is below. The first release this commit made was 2.16. > > commit 1e314891340d9b964f2da975936974b09912c225 > Author: Harry van Haaren <harry.van.haa...@intel.com> > AuthorDate: Fri Jul 9 15:58:24 2021 +0000 > Commit: Ian Stokes <ian.sto...@intel.com> > CommitDate: Fri Jul 9 17:15:08 2021 +0100 > > dpcls-avx512: Enable avx512 vector popcount instruction. > > Thanks, > Cian
Thanks Ilya & Cian, added a fixes tag to reference that commit and pushed to master, 2.17 and 2.16. Regards Ian > > > > > > > Thanks > > > Ian > _______________________________________________ dev mailing list d...@openvswitch.org https://mail.openvswitch.org/mailman/listinfo/ovs-dev