On Fri, Nov 11, 2011 at 11:48 PM, Michele Martone <michele.mart...@ipp.mpg.de> wrote: > On 20111111@22:29, Alexander Barth wrote: >> > >> > hello, octave-forge :) >> > created main/sparsersb, in order to host files for the "sparsersb" >> > oct-file package; that is, an Octave function to have an additional Octave >> > type for using the sparse matrix implementation given by the "librsb" >> > library. >> > >> > ------------------------------------------------------------------------ >> > >> > I confirm I'm able to commit -- thanks! >> > >> > ------------------------------------------------------------------------------ >> >> Dear Michele, >> >> Thank you for making your work available! I'm very interested in using >> a library able to do sparse matrix operations in parallel! >> >> However, I have some problems when I want to use the sparsersb type to >> solve a linear system: >> >> % C is 900x900 sparse matrix (octave-type) and b a vector 900x1 >> load icovar.mat C b >> x = C \ b; % works >> >> S = sparsersb(full(C)); >> x = S \ b; % fails >> ERROR 0xffffffe0 : The user supplied some corrupt data as argument >> >> Is the backslash operator implemented for sparsersb? >> >> The file icovar.mat is available here: >> http://modb.oce.ulg.ac.be/mediawiki/upload/Alex/icovar.mat >> >> Thanks again and best regards, >> Alex > > Dear Alex, > > First of all, I'm very happy that you tried (that is: built and tested) > the whole thing. > > I was about to write more librsb/sparersb build documentation, so every > bit of of your feedback may be useful for improving it, especially to > allow other Octave devels to try/check the sparsersb package. > > Also error reporting is an important thing: that error message is not > very informative: I'll it to a more reasonable one in the next commits. > The \ operator, for now, performs tringular solution by a vector or > multivector. > > librsb is not a solver library: we (me and Salvatore and Alfredo) plan > another contribution for that in the future (interfacing to the PSBLAS > solver library). > > However, we may discuss anddecide for the most reasonable semantics > for sparsersb's operators. > When it comes to '\', as far as i know (I've read David Bateman's > article about Octave sparse internals and '\'), a "polyalgorithm" is > involved; that is, a number of methods are considered following a tree of > decisions (e.g.: matrix factorizations using UMFPACK, for instance). > > Since "sparsersb" doesn't have the ambition of solving linear systems by > itself, I would say that a good default, in perspective, may be: > > - if the matric is NOT triangular switch to sparse (or dense) in a > temporary copy; then perform Octave's '\' > - if it's triangular perform triangular solution > > So for now, '\' is legal for 'sparsersb' as far as the matrix is > triangular (tril or triu): > > load icovar.mat C b > x = C \ b; > (tril(C)\b)-(sparsersb(tril(C))\b) > > > Cheers, > Michele >
Dear Michele, Thank you for your fast response. The way you propose to implement the \ operator makes sens to me and a possibily interface to PSBLAS sound very promising! I have had some issues/doubts when I compiled librsb et sparsersb. When I configured librsb (version 0.0.1445) with: ./configure CFLAGS="-O3 -fPIC" --prefix /home/abarth/opt/librsb-0.0.1445/ I get the following warning at the end: configure: WARNING: You seem to not have octave or have disabled 'int' type. We will not be able to use it to build a test suite if you'll want to regenerate the library code. Octave is indeed installed (version 3.4.0). Is it safe to ignore this warning? When I compile "sparsersb" (svn version from octave-forge), I get the following error: $ make mkoctfile -Doctave_idx_type=int -DNEED_OCTAVE_QUIT -DHAVE_OCTAVE_34 -v -D''RSB_SPARSERSB_LABEL=sparsersb -I/home/abarth/opt/librsb-0.0.1445/include/ -o sparsersb.oct sparsersb.cc -L/home/abarth/opt/librsb-0.0.1445/lib -lrsb -lgomp g++ -c -fPIC -I/home/abarth/opt/octave-3.4.0/include/octave-3.4.0/octave/.. -I/home/abarth/opt/octave-3.4.0/include/octave-3.4.0/octave -I/home/abarth/opt/octave-3.4.0/include -I/usr/include/freetype2 -g -O2 -I/home/abarth/opt/librsb-0.0.1445/include/ -Doctave_idx_type=int -DNEED_OCTAVE_QUIT -DHAVE_OCTAVE_34 -DRSB_SPARSERSB_LABEL=sparsersb sparsersb.cc -o sparsersb.o In file included from sparsersb.cc:45: /home/abarth/opt/librsb-0.0.1445/include/rsb.h:232:1: warning: "restrict" redefined In file included from /home/abarth/opt/octave-3.4.0/include/octave-3.4.0/octave/../octave/oct.h:31, from sparsersb.cc:39: /home/abarth/opt/octave-3.4.0/include/octave-3.4.0/octave/../octave/config.h:2455:1: warning: this is the location of the previous definition In file included from /home/abarth/opt/octave-3.4.0/include/octave-3.4.0/octave/../octave/oct.h:31, from sparsersb.cc:39: /home/abarth/opt/octave-3.4.0/include/octave-3.4.0/octave/../octave/config.h:2628: error: multiple types in one declaration /home/abarth/opt/octave-3.4.0/include/octave-3.4.0/octave/../octave/config.h:2628: error: declaration does not declare anything make: *** [sparsersb.oct] Error 1 Line 2628 of /home/abarth/opt/octave-3.4.0/include/octave-3.4.0/octave/../octave/config.h contains the following definition: typedef OCTAVE_IDX_TYPE octave_idx_type; When I remove the CPP flag -Doctave_idx_type=int from the mkoctfile command, I can compile sparsersb.cc. Is this CPP flag really nessary? In my config.h, I have also the definition: #define OCTAVE_IDX_TYPE int Cheers, Alex ------------------------------------------------------------------------------ RSA(R) Conference 2012 Save $700 by Nov 18 Register now http://p.sf.net/sfu/rsa-sfdev2dev1 _______________________________________________ Octave-dev mailing list Octave-dev@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/octave-dev