Hello, I’m getting the invalid opcode exception whenever the volk
library is used from gr/grc. It is also easy to reproduce by executing
volk_profile:
[user@rflab gnuradio]$ volk_profile
Using Volk machine: avx_64
RUN_VOLK_TESTS: volk_16ic_s32f_deinterleave_real_32f_a
Illegal instruction
[user@rflab gnuradio]$ dmesg
[ 6920.211094] volk_profile[25627] trap invalid opcode ip:7f8145b74d40
sp:7fff41dfac78 error:0 in libvolk.so.0.0.0[7f8145ad7000+cf000]
I tried v3.5.2 and v3.5.2 build directly from git, using the building
script from here:
http://gnuradio.org/redmine/repositories/changes/gnuradio/README
Here’s my cpuinfo:
[user@rflab gnuradio]$ cat /proc/cpuinfo
processor : 0
vendor_id : GenuineIntel
cpu family : 6
model : 42
model name : Intel(R) Core™ i5-2540M CPU @ 2.60GHz
stepping : 7
cpu MHz : 2591.660
cache size : 3072 KB
physical id : 0
siblings : 4
core id : 1
cpu cores : 1
apicid : 3
initial apicid : 3
fpu : yes
fpu_exception : yes
cpuid level : 13
wp : yes
flags : fpu de tsc msr pae cx8 sep cmov pat clflush mmx fxsr sse sse2
ss ht syscall nx lm constant_tsc nopl aperfmperf pni pclmulqdq ssse3
cx16 sse4_1 sse4_2 x2apic popcnt aes hypervisor lahf_lm ida arat epb pln
pts dts
bogomips : 5183.32
clflush size : 64
cache_alignment : 64
address sizes : 36 bits physical, 48 bits virtual
power management:
(and repeated 3x times for the other cores).
And, FWIW, this is the autoconfig snippet:
– Configuring volk support…
– Enabling volk support.
– Override with -DENABLE_VOLK=ON/OFF
– Boost version: 1.46.0
– Found the following Boost libraries:
– unit_test_framework
– checking for module ‘orc-0.4’
– found orc-0.4, version 0.4.16
– Found ORC: /usr/lib64/liborc-0.4.so
– Check size of void*
– Check size of void* - done
– Performing Test have_maltivec
– Performing Test have_maltivec - Failed
– Performing Test have_mfpu=neon
– Performing Test have_mfpu=neon - Failed
– Performing Test have_mfloat-abi=softfp
– Performing Test have_mfloat-abi=softfp - Failed
– Performing Test have_funsafe-math-optimizations
– Performing Test have_funsafe-math-optimizations - Success
– 32 overruled
– Performing Test have_m64
– Performing Test have_m64 - Success
– Performing Test have_m3dnow
– Performing Test have_m3dnow - Success
– Performing Test have_msse4.2
– Performing Test have_msse4.2 - Success
– Performing Test have_mpopcnt
– Performing Test have_mpopcnt - Success
– Performing Test have_mmmx
– Performing Test have_mmmx - Success
– Performing Test have_msse
– Performing Test have_msse - Success
– Performing Test have_msse2
– Performing Test have_msse2 - Success
– Performing Test have_lorc-0.4
– Performing Test have_lorc-0.4 - Success
– Performing Test have_msse3
– Performing Test have_msse3 - Success
– Performing Test have_mssse3
– Performing Test have_mssse3 - Success
– Performing Test have_msse4a
– Performing Test have_msse4a - Success
– Performing Test have_msse4.1
– Performing Test have_msse4.1 - Success
– Performing Test have_mavx
– Performing Test have_mavx - Success
– Available arches:
generic;64;3dnow;abm;popcount;mmx;sse;sse2;orc;sse3;ssse3;sse4_a;sse4_1;sse4_2;avx
– Available machines:
generic;sse2_only;sse2_64;sse3_64;ssse3_64;sse4_a_64;sse4_1_64;sse4_2_64;avx_64;avx_only
– Using install prefix: /usr/local
– Found Doxygen: /usr/bin/doxygen
One more thing to note that I’m running in a Xen PV VM, although this
should not matter, as the usermode instructions execute directly on the
CPU in this mode.
Thanks,
joanna.