Sunday, April 15, 2012

[Discuss-gnuradio] Volk library invalid opcode exception

-----BEGIN PGP SIGNATURE-----

iQEcBAEBAgAGBQJPiqwMAAoJEDaIqHeRBUM0kv0IAMGzRtIl8sqHly3mOp1ifpyY
MZ9lSjHbne3Or+7ApO7/RYjji33ljYDIqcCNk0dxCZyLb3KnHgvxzrCs/6l38BI7
jydVQaPQ4LIeICuEifvanZGADmr7fFq1MwWMnu+Dg3Ng/byAuv88EYpejt5pLiRf
CEAgoWmFpp3NGkDu+g9xPyQjpmMyerZ9lc2+U/UPZlJGuzpPOpjHn1NmuNxyj90T
Bw+2m6uEGHSO+RTxaUJW7wEb0F1oiHnsFx+8RKLVZ/lbY2Skd8+XKM09GCrwEqMM
VVqWlNe+4YYdHFxZxYUzQNVwAD/g5Rw8+DJVjS8NcYFqZ1WwEbZIbRPwhEmPrys=
=4ymZ
-----END PGP SIGNATURE-----
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(TM) 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.

No comments:

Post a Comment