[dpdk-dev] Building without AVX2 support, with Clang 11, on Ubuntu 20.04.1

Ivan Serdyuk local.tourist.kiev at gmail.com
Tue Oct 20 17:49:10 CEST 2020


It was compiled - but I can't make it run:

~/dpdk-20.08/build-clang/app$ ./dpdk-pdump
> Illegal instruction (core dumped)
> ~/dpdk-20.08/build-clang/app$ ./dpdk-proc-info
> Illegal instruction (core dumped)
> ~/dpdk-20.08/build-clang/app$ ./dpdk-test-acl
> Illegal instruction (core dumped)
> ~/dpdk-20.08/build-clang/app$ ./dpdk-test-bbdev
> Illegal instruction (core dumped)
> ~/dpdk-20.08/build-clang/app$ ./dpdk-test-cmdline
> Illegal instruction (core dumped)
> ~/dpdk-20.08/build-clang/app$ ./dpdk-test-compress-perf
> Illegal instruction (core dumped)
> ~/dpdk-20.08/build-clang/app$ ./dpdk-test-crypto-perf
> Illegal instruction (core dumped)
> ~/dpdk-20.08/build-clang/app$ ./dpdk-test-eventdev
> Illegal instruction (core dumped)
> ~/dpdk-20.08/build-clang/app$ ./dpdk-test-fib
> Illegal instruction (core dumped)
> ~/dpdk-20.08/build-clang/app$ ./dpdk-test-flow-perf
> Illegal instruction (core dumped)
> ~/dpdk-20.08/build-clang/app$ ./dpdk-test-pipeline
> Illegal instruction (core dumped)
> ~/dpdk-20.08/build-clang/app$ ./dpdk-test-regex
> Illegal instruction (core dumped)
> ~/dpdk-20.08/build-clang/app$ ./dpdk-test-sad
> Illegal instruction (core dumped)
> ~/dpdk-20.08/build-clang/app$ ./dpdk-testpmd
> Illegal instruction (core dumped)


Ivan


On Tue, Oct 20, 2020 at 5:44 PM Ivan Serdyuk <local.tourist.kiev at gmail.com>
wrote:

>
>
> On Mon, Oct 19, 2020 at 4:34 PM Bruce Richardson <
> bruce.richardson at intel.com> wrote:
>
>> On Mon, Oct 19, 2020 at 04:17:36PM +0300, Ivan Serdyuk wrote:
>> Hi Ivan
>>
>
> Hello, Bruce.
>
>
>> Why are you exporting these CPP and CXX flags? The CXX flags will have no
>> effect on the DPDK build as it does not use c++ code.
>>
>
> Probably my mistake.
>
>>
>> > and got such issues:
>> >
>> >
>> > > [213/2379] Compiling C object 'lib/76b5a35@@rte_bitratestats at sta
>> > > /librte_bitratestats_rte_bitrate.c.o'.
>> > > clang-11: warning: argument unused during compilation:
>> '-stdlib=libc++'
>> > > [-Wunused-command-line-argument]
>> > > [219/2379] Compiling C object 'lib/76b5a35@@rte_cfgfile at sta
>> > > /librte_cfgfile_rte_cfgfile.c.o'.
>> > > clang-11: warning: argument unused during compilation:
>> '-stdlib=libc++'
>> > > [-Wunused-command-line-argument]
>> > > [222/2379] Linking target lib/librte_acl.so.20.0.3.
>> > > FAILED: lib/librte_acl.so.20.0.3
>> > > clang  -o lib/librte_acl.so.20.0.3 'lib/76b5a35@@rte_acl at sta
>> /librte_acl_acl_bld.c.o'
>> > > 'lib/76b5a35@@rte_acl at sta/librte_acl_acl_gen.c.o' 'lib/76b5a35@
>> > > @rte_acl at sta/librte_acl_acl_run_scalar.c.o' 'lib/76b5a35@@rte_acl at sta
>> /librte_acl_rte_acl.c.o'
>> > > 'lib/76b5a35@@rte_acl at sta/librte_acl_tb_mem.c.o' 'lib/76b5a35@
>> @rte_acl at sta/librte_acl_acl_run_sse.c.o'
>> > > -Wl,--as-needed -Wl,--no-undefined -Wl,-O1 -shared -fPIC
>> -Wl,--start-group
>> > > -Wl,-soname,librte_acl.so.20.0 -Wl,--no-as-needed -pthread -lm -ldl
>> > > lib/librte_eal.so.20.0.3 lib/librte_kvargs.so.20.0.3
>> > > lib/librte_telemetry.so.20.0.3 -Wl,--end-group
>> > >
>> -Wl,--version-script=/home/oceanfish81/dpdk-20.08/lib/librte_acl/rte_acl_version.map
>> > > '-Wl,-rpath,$ORIGIN/'
>> > > -Wl,-rpath-link,/home/oceanfish81/dpdk-20.08/build-clang/lib
>> > > /usr/bin/ld: lib/76b5a35@@rte_acl at sta/librte_acl_rte_acl.c.o:(.
>> data.rel.ro+0x18):
>> > > undefined reference to `rte_acl_classify_avx2'
>> > > clang-11: error: linker command failed with exit code 1 (use -v to see
>> > > invocation)
>> > > [225/2379] Generating bbdev.sym_chk with a meson_exe.py custom
>> command.
>> > > ninja: build stopped: subcommand failed.
>> >
>> >
>> > I am using
>> >
>> > > $ clang --version
>> > > clang version 11.0.0 (https://github.com/llvm/llvm-project.git
>> > > 0160ad802e899c2922bc9b29564080c22eb0908c)
>> > > Target: x86_64-unknown-linux-gnu
>> >
>> >
>> > I am working under Virtualbox, currently. My host CPU doesn't have any
>> AVX
>> > support - and there is no guest emulation support for them. Could I
>> bypass
>> > this somehow, while building librte, as a dependency?
>> >
>>
>> I'm not sure exactly what the problem is here, because DPDK should build
>> fine on any system that has SSE4.2 support - no AVX2 support is required.
>> To test, I've done a build of DPDK on an old Core i7 machine with AVX, but
>> not AVX2, and it built fine with clang 8 (this was using FreeBSD 12),
>> including the ACL library.
>>
>
> Here is what I have here:
>
> $ cat /proc/cpuinfo
>> processor : 0
>> vendor_id : GenuineIntel
>> cpu family : 6
>> model : 23
>> model name : Intel(R) Core(TM)2 Quad CPU    Q9400  @ 2.66GHz
>> stepping : 10
>> microcode : 0x60b
>> cpu MHz : 2666.620
>> cache size : 3072 KB
>> physical id : 0
>> siblings : 2
>> core id : 0
>> cpu cores : 2
>> apicid : 0
>> initial apicid : 0
>> fpu : yes
>> fpu_exception : yes
>> cpuid level : 13
>> wp : yes
>> flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat
>> pse36 clflush mmx fxsr sse sse2 ht syscall nx lm constant_tsc rep_good nopl
>> cpuid tsc_known_freq pni ssse3 sse4_1 x2apic hypervisor lahf_lm pti
>> bugs : cpu_meltdown spectre_v1 spectre_v2 spec_store_bypass l1tf mds
>> swapgs itlb_multihit
>> bogomips : 5333.24
>> clflush size : 64
>> cache_alignment : 64
>> address sizes : 36 bits physical, 48 bits virtual
>> power management:
>> processor : 1
>> vendor_id : GenuineIntel
>> cpu family : 6
>> model : 23
>> model name : Intel(R) Core(TM)2 Quad CPU    Q9400  @ 2.66GHz
>> stepping : 10
>> microcode : 0x60b
>> cpu MHz : 2666.620
>> cache size : 3072 KB
>> physical id : 0
>> siblings : 2
>> core id : 1
>> cpu cores : 2
>> apicid : 1
>> initial apicid : 1
>> fpu : yes
>> fpu_exception : yes
>> cpuid level : 13
>> wp : yes
>> flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat
>> pse36 clflush mmx fxsr sse sse2 ht syscall nx lm constant_tsc rep_good nopl
>> cpuid tsc_known_freq pni ssse3 sse4_1 x2apic hypervisor lahf_lm pti
>> bugs : cpu_meltdown spectre_v1 spectre_v2 spec_store_bypass l1tf mds
>> swapgs itlb_multihit
>> bogomips : 5333.24
>> clflush size : 64
>> cache_alignment : 64
>> address sizes : 36 bits physical, 48 bits virtual
>> power management:
>
>
>
>
>
>>
>> Can you try deleting your build folder and configure it again without
>> overriding the environmental vars? If it still fails, please paste the
>> errors here, and also try configuring the build with "-Dmachine=default"
>> to
>> turn off detecting the present instruction sets and assume an SSE4
>> baseline.
>>
>
> I just did as you prosed.
> Here is
> <https://gist.github.com/advancedwebdeveloper/437c2d81316f830f37e3381933f95ab6>
> my output.
> Something is missing, btw.
>
> I am curious why you haven't tried to use http://compiler-rt.llvm.org/,
> if there is a reason, instead of GCC's libraries.
> I would ask the similar question against
> https://llvm.org/docs/Proposals/LLVMLibC.html
> Hence https://llvm.org/docs/Proposals/LLVMLibC.html
> .
>
> I am compiling with Ninja, currently - so I shall report whether
> everything was compiled.
> Ivan
>


More information about the dev mailing list