Volk work - please test

Hey list,

Nick F. and I have done a lot of work to simplify and generalize the
VOLK build system.

  • Removed old autotools related generalization
  • Fixes for stand-alone building of VOLK
  • AVX enabled detection support on MSVC
  • Building and generation now share common code
  • The architecture specifications:
    ** feature availability checks are fully specified
    ** required compiler flags listed with compiler association
  • Generated c/h files have corresponding templates
    ** generator code is drastically more readable/editable

The branch is here:
https://github.com/guruofquality/gnuradio/tree/volk_work

I would appreciate anyone testing the branch, especially on weird
machines:

  • does it build?
  • do the unit tests pass?
  • does volk detect correctly?

My opteron says:
$volk/lib/test_all
Running 88 test cases…
Using Volk machine: sse4_a_64_orc

This branch will pave the way for for future work for generalizing
alignment, and head and tail cases for VOLK kernels.

Thanks!
-Josh

On Tue, Apr 17, 2012 at 8:53 PM, Josh B. [email protected] wrote:

** feature availability checks are fully specified

  • does volk detect correctly?

My opteron says:
$volk/lib/test_all
Running 88 test cases…
Using Volk machine: sse4_a_64_orc

Hi Josh,

I checked out your code few hours ago and tested it on two machines,
both running 32 bit linux.
Compiles fine on both but the same test fails, see attached files.

Alex

Hi Josh,

I checked out your code few hours ago and tested it on two machines,
both running 32 bit linux.
Compiles fine on both but the same test fails, see attached files.

Thanks, glad to know it works.

Did this volk_32fc_32f_multiply_32fc_a test also fail on the gnuradio
master branch? I didnt change any of the kernel implementations, so I
would expect to see the same failure.

RUN_VOLK_TESTS: volk_32fc_32f_multiply_32fc_a
sse completed in 0s
generic completed in 0s
offset 3 in1: 0.0447125 in2: 0.0372651
offset 4 in1: 0.230681 in2: -0.503066
offset 8 in1: 0.342602 in2: -0.188829
offset 9 in1: 0.331294 in2: -0.182597
offset 13 in1: 0.190811 in2: 0.741232
offset 14 in1: 0.75324 in2: -0.439439
offset 15 in1: 0.656683 in2: -0.383108
offset 17 in1: 0.0195342 in2: 0.0634905
offset 19 in1: 0.0358897 in2: 0.105976
offset 20 in1: 0.00909121 in2: 0.137302
volk_32fc_32f_multiply_32fc_a: fail on arch sse
Best arch: sse
/home/alexc/gnuradio/jblum-volk/gnuradio.git/volk/lib/testqa.cc(26):
error in “volk_32fc_32f_multiply_32fc_a_test”: check
run_volk_tests(volk_32fc_32f_multiply_32fc_a_get_func_desc(), (void
(*)())volk_32fc_32f_multiply_32fc_a_manual,
std::string(“volk_32fc_32f_multiply_32fc_a”), 1e-4, 0, 20460, 1, 0) == 0
failed [true != 0]

-josh

On Wed, Apr 18, 2012 at 10:21 PM, Josh B. [email protected] wrote:

Did this volk_32fc_32f_multiply_32fc_a test also fail on the gnuradio
master branch? I didnt change any of the kernel implementations, so I
would expect to see the same failure.

Yes, the same test fails in the master branch too (pulled yesterday).

Alex

On Wed, Apr 18, 2012 at 1:00 PM, Alexandru C. [email protected]
wrote:

  • The architecture specifications:
  • does it build?
    I checked out your code few hours ago and tested it on two machines,
    both running 32 bit linux.
    Compiles fine on both but the same test fails, see attached files.

#$%^&

This is entirely inexplicable. We’ve seen both the Orc and SSE versions
fail (identically, differing from the generic result) on processors from
both Intel and AMD.

http://gnuradio.org/redmine/issues/468

Josh, I’m going to implement the FPU environment settings stuff and see
if
that helps. Shouldn’t be hard, it’s something we’ve been meaning to do
anyway.