Hi Serdar, I asked Nathan West, and he pointed me to the commit that fixed that [1]. I hope it works now; could you drop us a quick mail whether it's working for you?
Best regards, Marcus [1] https://github.com/gnuradio/gnuradio/commit/6baa4c86c5e1f5889e44a4e8e38750b0de3bf061 On 05.04.2016 10:53, Marcus Müller wrote: > Hi Serdar, > > that is peculiar; if you update GNU Radio and VOLK, does it still happen? > > Best regards, > Marcus > > PS: your English is excellent, don't worry. > > On 26.03.2016 16:03, Serdar KOYLU wrote: >> I recently get two USRP-N210 device, two desktop computer etc., build >> GNURadio and others... >> >> Finally many samples runs finely, such as UHD_FTT etc. But both >> benchmark_rx.py for OFDM and narrowband, get an SIGSEGV and halted. >> >> My CPU conf: I7 4790K, 4GHz, 16 GB RAM, H97 Chipset, on two machines. >> >> from cpuinfo: >> flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge >> mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe >> syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon pebs bts >> rep_good nopl xtopology nonstop_tsc aperfmperf eagerfpu pni pclmulqdq >> dtes64 monitor ds_cpl vmx est tm2 ssse3 fma cx16 xtpr pdcm pcid >> sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx >> f16c rdrand lahf_lm abm ida arat pln pts dtherm tpr_shadow vnmi >> flexpriority ept vpid fsgsbase tsc_adjust bmi1 avx2 smep bmi2 erms >> invpcid xsaveopt >> >> My software versions: >> >> [root@localhost centos]# gnuradio-config-info -v >> 3.7.9.1 >> >> [root@localhost centos]# uhd_config_info >> linux; GNU C++ version 4.8.5 20150623 (Red Hat 4.8.5-4); >> Boost_105300; UHD_003.010.git-119-g42a3eeb6 >> >> [root@localhost centos]# uname -a >> Linux localhost.localdomain 3.10.0-327.4.5.el7.x86_64 #1 SMP Mon Jan >> 25 22:07:14 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux >> >> For a basic debug test, ofdm/benchmark_py in gdb (only "bt" cmd >> responses): >> >> run ./benchmark_rx.py -f 1299250000 -a addr=192.168.10.2 >> >> Using Volk machine: avx2_64_mmx >> [New Thread 0x7fffdd0d6700 (LWP 30663)] >> [New Thread 0x7fffcffff700 (LWP 30664)] >> [New Thread 0x7fffcf7fe700 (LWP 30665)] >> [New Thread 0x7fffceffd700 (LWP 30666)] >> [New Thread 0x7fffce7fc700 (LWP 30667)] >> [New Thread 0x7fffcdffb700 (LWP 30668)] >> [New Thread 0x7fffcd7fa700 (LWP 30669)] >> >> Program received signal SIGSEGV, Segmentation fault. >> [Switching to Thread 0x7fffcf7fe700 (LWP 30665)] >> volk_32fc_x2_multiply_32fc_a_avx2_fma (cVector=0x31a5f70, >> aVector=0x318bf40, bVector=0x31aa4e0, num_points=512) at >> /home/serdar/gnuradio/volk/kernels/volk/volk_32fc_x2_multiply_32fc.h:254 >> 254 _mm256_store_ps((float*)c,z); // Store the results back >> into the C container >> (gdb) >> (gdb) bt >> #0 volk_32fc_x2_multiply_32fc_a_avx2_fma (cVector=0x31a5f70, >> aVector=0x318bf40, bVector=0x31aa4e0, num_points=512) at >> /home/serdar/gnuradio/volk/kernels/volk/volk_32fc_x2_multiply_32fc.h:254 >> #1 0x00007fffe6065200 in gr::filter::kernel::fft_filter_ccc::filter >> (this=0x318a600, nitems=nitems@entry=358, input=0x7ffff7fd0000, >> output=0x7ffff7f22000) >> at /home/serdar/gnuradio/gr-filter/lib/fft_filter.cc:323 >> #2 0x00007fffe6092f46 in gr::filter::fft_filter_ccc_impl::work >> (this=0x3189270, noutput_items=358, input_items=..., >> output_items=...) at >> /home/serdar/gnuradio/gr-filter/lib/fft_filter_ccc_impl.cc:112 >> #3 0x00007fffeff6cd67 in gr::sync_decimator::general_work >> (this=0x31892a0, noutput_items=<optimized out>, ninput_items=..., >> input_items=..., output_items=...) >> at /home/serdar/gnuradio/gnuradio-runtime/lib/sync_decimator.cc:66 >> #4 0x00007fffeff3a467 in gr::block_executor::run_one_iteration >> (this=this@entry=0x7fffcf7fddb0) at >> /home/serdar/gnuradio/gnuradio-runtime/lib/block_executor.cc:451 >> #5 0x00007fffeff75116 in gr::tpb_thread_body::tpb_thread_body >> (this=0x7fffcf7fddb0, block=..., max_noutput_items=<optimized out>) >> at /home/serdar/gnuradio/gnuradio-runtime/lib/tpb_thread_body.cc:122 >> #6 0x00007fffeff6a7e1 in operator() (this=0x31f5030) at >> /home/serdar/gnuradio/gnuradio-runtime/lib/scheduler_tpb.cc:44 >> #7 operator() (this=0x31f5030) at >> /home/serdar/gnuradio/gnuradio-runtime/include/gnuradio/thread/thread_body_wrapper.h:51 >> #8 >> boost::detail::function::void_function_obj_invoker0<gr::thread::thread_body_wrapper<gr::tpb_container>, >> void>::invoke (function_obj_ptr=...) at >> /usr/include/boost/function/function_template.hpp:153 >> #9 0x00007fffeff22240 in operator() (this=<optimized out>) at >> /usr/include/boost/function/function_template.hpp:767 >> #10 boost::detail::thread_data<boost::function0<void> >::run >> (this=<optimized out>) at /usr/include/boost/thread/detail/thread.hpp:117 >> #11 0x00007fffef43b24a in thread_proxy () from >> /lib64/libboost_thread-mt.so.1.53.0 >> #12 0x00007ffff7800dc5 in start_thread () from /lib64/libpthread.so.0 >> #13 0x00007ffff6e2521d in clone () from /lib64/libc.so.6 >> (gdb) >> >> At this point, gdb cannot show "z" value, (<optimized out>). >> Belongated code this, i think: >> >> static inline void volk_32fc_x2_multiply_32fc_a_avx2_fma(lv_32fc_t* >> cVector, const lv_32fc_t* aVector, const lv_32fc_t* bVector, unsigned >> int num_points){ >> unsigned int number = 0; >> const unsigned int quarterPoints = num_points / 4; >> >> lv_32fc_t* c = cVector; >> const lv_32fc_t* a = aVector; >> const lv_32fc_t* b = bVector; >> >> for(;number < quarterPoints; number++){ >> const __m256 x = _mm256_load_ps((float*)a); // Load the ar + ai, >> br + bi as ar,ai,br,bi >> const __m256 y = _mm256_load_ps((float*)b); // Load the cr + ci, >> dr + di as cr,ci,dr,di >> const __m256 yl = _mm256_moveldup_ps(y); // Load yl with cr,cr,dr,dr >> const __m256 yh = _mm256_movehdup_ps(y); // Load yh with ci,ci,di,di >> const __m256 tmp2x = _mm256_permute_ps(x,0xB1); // Re-arrange x >> to be ai,ar,bi,br >> const __m256 tmp2 = _mm256_mul_ps(tmp2x, yh); // tmp2 = >> ai*ci,ar*ci,bi*di,br*di >> const __m256 z = _mm256_fmaddsub_ps(x, yl, tmp2); // ar*cr-ai*ci, >> ai*cr+ar*ci, br*dr-bi*di, bi*dr+br*di >> >> // ------------------------------------------------------------------ >> // At this point, SIGSEGV Occurred and gdb reports: >> // c = cVector = 0x31a5f70 >> // number = 0 >> // z = Unknown, optimized out :( >> >> _mm256_store_ps((float*)c,z); // Store the results back into the >> C container >> >> a += 4; >> b += 4; >> c += 4; >> } >> >> ---------------------------------------------------------------------------------------------------------------- >> >> I'm very novice for DSP or SIMD coding, i can't help more :( >> >> Excuse me for bad english.. >> >> Best regards.. >> >> >> >> >> >> >> >> >> >> >> >> >> _______________________________________________ >> Discuss-gnuradio mailing list >> [email protected] >> https://lists.gnu.org/mailman/listinfo/discuss-gnuradio >
_______________________________________________ Discuss-gnuradio mailing list [email protected] https://lists.gnu.org/mailman/listinfo/discuss-gnuradio
