On 20210916@11:53, Paul Gevers wrote:
> Hi,
> 
> On 16-09-2021 09:20, Michele Martone wrote:
> >> root@autopkgtest-lxc-bexxro:/tmp/autopkgtest-lxc.ghhdpc6_/downtmp/build.J9f/src#
> >> rsbench -CERROR 0xfffffc00 : The requested feature (e.g.:blocking) is
> >> not available because it was opted out or not configured at built time.
> > You have up to 160 threads.
> > The hardcoded default (overridable ./configure --with-max-threads N) is 
> > likely 128.>
> > Can you export
> >  OMP_NUM_THREADS=3 # or anything below the hardcoded limit of 128
> > and rerun rsbench -C
> 
> root@autopkgtest-lxc-huzjhy:/tmp/autopkgtest-lxc.ohtynpml/downtmp/build.Ray/src#
> OMP_NUM_THREADS=3 rsbench -C
> rsbench version: 1.2.0
> ...
> RSB_CONST_MAX_SUPPORTED_CORES:64
  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Ok, indeed 128>64 and that one cause of error.
I just uploaded a new tarball (release ongoing)
 https://sourceforge.net/projects/librsb/files/librsb-1.2.0.10.tar.gz/download
which in such cases shall emit an error on `rsbench -C` and still print
all the relevant info, instead of failing almost-silently, as you
experienced.

> ...
> 
> > and/or redo the octave-sparsersb experiments ?
> 
> I ran autopkgtest with the --env option, it seems to do what I intended
> as this run doesn't hang *and* reports some test ran. It still reports
> the segfault.
> root@ci-worker-armel-01:~# autopkgtest octave-sparsersb
> --env=OMP_NUM_THREADS=3 --shell --shell-fail -- lxc
> autopkgtest-unstable-armhf
> 
> [...]
> 
> ***** demo
>  disp("'sparsersb' can render sparse matrices into Encapsulated
> Postscript files showing the RSB blocks layout.")
>  rm = sparsersb(sprand(100000,100000,.0001));
>  sparsersb(rm,'render','sptest.eps')
>  disp("You can open sptest.eps now.")
> 994 tests, 994 passed, 0 known failure, 0 skipped
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
These 994 tests are actual proof the librsb plugin for Octave
is working as it should -- at least here.

> Run tests in debian/check.m
> make: Entering directory
> '/tmp/autopkgtest-lxc.o84pxsbs/downtmp/build.OTf/src/src'
> LFLAGS=" " LDFLAGS=" " CXXFLAGS="  "  -D'RSB_SPARSERSB_LABEL=sparsersb'
> -o sparsersb.oct sparsersb.cc
> make: -p: No such file or directory
> make: -p: No such file or directory
> /bin/sh: 1: -DRSB_SPARSERSB_LABEL=sparsersb: not found
The above seems like like that line from sparsersb's Makefile where MKOCTFILE
should be set, but it isn't.

> make: *** [Makefile:38: sparsersb.oct] Error 127
> make: Leaving directory
> '/tmp/autopkgtest-lxc.o84pxsbs/downtmp/build.OTf/src/src'
> fatal: caught signal Segmentation fault
> Summary: 995 tests, 995 passed, 0 known failures, 0 skipped
Seems like.. the segfault is a consequence of the missing MKOCTFILE!?

> > If that was the problem, 
> >  $ rsbench -B
> > shall run fine (a few s will suffice); and
> 
> root@autopkgtest-lxc-vorfrc:/tmp/autopkgtest-lxc.x7kgxv0e/downtmp/build.6k2/src#
> OMP_NUM_THREADS=3 rsbench -B
> 
> [...]
> 
> % rendering time ~ 0.000200033 s
> PRINT TEST: END (SUCCESS)
> BASIC SPARSE BLAS TEST: END (SUCCESS)
> STRESS SPARSE BLAS TEST: BEGIN
> STRESS SPARSE BLAS TEST: END (SUCCESS)
> SPARSE BLAS TESTS: END (SUCCESS)
> BASIC PRIMITIVES TEST: BEGIN
> BASIC PRIMITIVES TEST: END (SUCCESS)
> ADVANCED SPARSE BLAS TEST: BEGIN
>       0: type:S sym:LT incX:1 incB:1 dim:         1 transT:N alpha:-2
> beta:+1 diag:E subms:    1 nz:1 is ok
> Terminating testing earlier due to interactive user request: test took
> 0.000000 s, max allowed was 0.000000.
>         PASSED:1
>         FAILED:0
> ADVANCED SPARSE BLAS TEST: END (SUCCESS)
> 
> >  $ ./rsbench  -oa -Ob --dense 100 --verbose --verbose 
> > --write-performance-record foo | grep ^pr.*1
> > shall lead to something similar to
> >  pr:    1:r_r  dense-100x100-10000nz 100 100 10000 1 D G N  4  0  0 4.1664 
> > 4.1664 16 16 1525.20 1.311e-05 0.000e+00 1.311e-05 0.000e+00 2.420e-02 
> > 9.46e+00 6.16e+00 0 2.00e-02
> 
> root@autopkgtest-lxc-vorfrc:/tmp/autopkgtest-lxc.x7kgxv0e/downtmp/build.6k2/src#
> OMP_NUM_THREADS=3 rsbench  -oa -Ob --dense 100 --verbose --verbose
> --write-performance-record foo | grep ^pr.*1
> pr:    1:r_r  dense-100x100-10000nz 100 100 10000 1 D G N  3  0  0
> 4.1664 4.1664 16 16 2.28 8.768e-03 0.000e+00 8.768e-03 0.000e+00
> 2.452e+00 1.41e-02 6.16e+00 0 2.00e-02

The above output is sane.
I suggest to set OMP_NUM_THREADS to something small before tests -- say,
min(nproc,4) -- for all purposes of testing librsb and octave-sparsersb.
For architectural reasons, using all the cores (e.g.160) is nonsense here.
Is that okay?

> > If that's the problem, maybe I can devise a fix to make the error easier
> > to spot.
> 
> What about the negative free memory that's reported?
Those lines print output of sysconf() call, and AFAIK that's long.
Now, from your 20210916@08:54 output of `rsbench -I` I see long is 4 bytes
(which is strange, given the machine).
That's causing negative printouts.

Would be great if you could try the tarball I linked at the beginning of
the email -- I'm using some 'unsigned' prints -- that shall help a bit
(one bit ;-) .

Please let me know!

Cheers,
Michele

Attachment: signature.asc
Description: PGP signature

Reply via email to