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

Reply via email to