[Trilinos-Users] Sending the resulting eigenvector to master node

Mehmet Salih YILDIRIM linux at isadamlari.org
Thu Jun 3 11:07:20 MDT 2010


Hi,

Well, I commented out the Multiply method, however nothing changed.

I was unable to solve the eigenproblem before, so i decided to send a random
vector to master node and go on, so, when i produce a random vector,
everything works ok, but the problem is only when i try to send the
resulting eigenvector, i'm sending the code snippet again, with the
producing random vector part, so maybe it would be more clear:

    int numMyElements;


>     if (Comm.MyPID() == 0)

        numMyElements = segment->pixelIndices.size();

    else

        numMyElements = 0;


>     Epetra_Map targetMap(-1, numMyElements, 0, Comm);


>     Epetra_Vector eigenVector(targetMap); //will be collected on the master
> node.


>     Teuchos::RCP<Epetra_Vector> vectorToSend;


>     const Epetra_BlockMap *sourceMap;

    if (solverReturn == Anasazi::Converged) {

        Anasazi::Eigensolution<ST, MV> solution =
> generalizedProblem->getSolution();


>         int numEigenPairs = solution.numVecs;


>         Teuchos::RCP<MV> evecs = solution.Evecs;

        std::vector<Anasazi::Value<ST> > evals = solution.Evals;


>         int ourEvIdx = 0;

        if (numEigenPairs == 2) //send the second smaller eigenvector

            if (evals[0].realpart < evals[1].realpart)

                ourEvIdx = 1;

            else

                ourEvIdx = 0;


>         //evecs->Multiply(1,*invSqrtD, *evecs, 0.0); commented this one
> out, nothing changed.

        vectorToSend = Teuchos::rcp((*evecs)(ourEvIdx));

        sourceMap = &vectorToSend->Map();

    } else {

        vectorToSend = Teuchos::rcp(new Epetra_Vector(DminusW->RowMap()));

        vectorToSend->Random();

        sourceMap = &vectorToSend->Map();

    Epetra_Import importer(targetMap, *sourceMap);

    eigenVector.Import(*vectorToSend, importer, Add); // send eigenvector to
> processor 1



Well, the error message is, as follows again:

*** glibc detected *** ./opencv_deneme: corrupted double-linked list:
> 0x000000001a254ec0 ***

*** glibc detected *** ./opencv_deneme: corrupted double-linked list:
> 0x000000001d68fa00 ***

======= Backtrace: =========

/lib64/libc.so.6[0x3f7b2723e5]

/lib64/libc.so.6(cfree+0x4b)[0x3f7b27273b]

./opencv_deneme[0x4c930f]

./opencv_deneme[0x481ce5]

./opencv_deneme[0x4358b2]

./opencv_deneme[0x481ce5]

./opencv_deneme[0x40f139]

./opencv_deneme[0x40eacf]

./opencv_deneme[0x40eacf]

./opencv_deneme[0x4102f4]

./opencv_deneme[0x474d86]

/lib64/libc.so.6(__libc_start_main+0xf4)[0x3f7b21d994]

./opencv_deneme(__gxx_personality_v0+0x299)[0x40ba89]

======= Memory map: ========

00400000-0051e000 r-xp 00000000 03:01 9864086
>  /home/proje/trilinos_ile_ilk_deneme/opencv
> deneme/dist/Debug/GNU-Linux-x86/opencv_deneme

0071d000-00724000 rw-p 0011d000 03:01 9864086
>  /home/proje/trilinos_ile_ilk_deneme/opencv
> deneme/dist/Debug/GNU-Linux-x86/opencv_deneme

1d61a000-1d722000 rw-p 1d61a000 00:00 0
>  [heap]

3a68600000-3a689f6000 r-xp 00000000 03:01 6687839
>  /usr/lib64/atlas/liblapack.so.3.0

3a689f6000-3a68bf6000 ---p 003f6000 03:01 6687839
>  /usr/lib64/atlas/liblapack.so.3.0

3a68bf6000-3a68bf9000 rw-p 003f6000 03:01 6687839
>  /usr/lib64/atlas/liblapack.so.3.0

3a68bf9000-3a68cfd000 rw-p 3a68bf9000 00:00 0

3a69600000-3a69cec000 r-xp 00000000 03:01 6687846
>  /usr/lib64/atlas/libatlas.so.3.0

3a69cec000-3a69eeb000 ---p 006ec000 03:01 6687846
>  /usr/lib64/atlas/libatlas.so.3.0

3a69eeb000-3a69ef5000 rw-p 006eb000 03:01 6687846
>  /usr/lib64/atlas/libatlas.so.3.0

3a6c200000-3a6c254000 r-xp 00000000 03:01 5380294
>  /usr/lib64/libblas.so.3.0.3

3a6c254000-3a6c453000 ---p 00054000 03:01 5380294
>  /usr/lib64/libblas.so.3.0.3

3a6c453000-3a6c454000 rw-p 00053000 03:01 5380294
>  /usr/lib64/libblas.so.3.0.3

3a6ca00000-3a6ca1e000 r-xp 00000000 03:01 6687833
>  /usr/lib64/atlas/libcblas.so.3.0

3a6ca1e000-3a6cc1e000 ---p 0001e000 03:01 6687833
>  /usr/lib64/atlas/libcblas.so.3.0

3a6cc1e000-3a6cc1f000 rw-p 0001e000 03:01 6687833
>  /usr/lib64/atlas/libcblas.so.3.0

3a6ce00000-3a6ce1c000 r-xp 00000000 03:01 6687835
>  /usr/lib64/atlas/libf77blas.so.3.0

3a6ce1c000-3a6d01c000 ---p 0001c000 03:01 6687835
>  /usr/lib64/atlas/libf77blas.so.3.0


Any help still would be appreciated :)

Best regards,
Mehmet Salih YILDIRIM

On Thu, Jun 3, 2010 at 1:58 AM, Thornquist, Heidi K <hkthorn at sandia.gov>wrote:

>  Hi Mehmet,
>
> If you are getting a seg fault that traces back to LAPACK, then that would
> incriminate the “Multiply” method.  If you comment out
> that line, does that help?  Also, I’m not sure how safe it is to call
> multiply on the same multivector that you are including in the arguments and
> also
> asking to be zeroed out.
>
> Thanks,
> Heidi
>
>
>
>
> On 6/2/10 2:02 PM, "Mehmet Salih YILDIRIM" <linux at isadamlari.org> wrote:
>
> Hey!
>
> I'd been trying to send the resulting eigenvector to the master node (that
> is, with MyPID() =0) and i wrote the following code:
>
>  int numMyElements;
>
>     if (Comm.MyPID() == 0)
>         numMyElements = segment->pixelIndices.size(); //that is, the total
> number of elements of an eigenvector (also the row count of operator of
> eigenproblem)
>     else
>         numMyElements = 0;
>
>     Epetra_Map targetMap(-1, numMyElements, 0, Comm);
>
>     Epetra_Vector eigenVector(targetMap); //will be collected on the master
> node.
>
>     Teuchos::RCP<Epetra_Vector> vectorToSend;
>
>     const Epetra_BlockMap *sourceMap;
>     if (solverReturn == Anasazi::Converged) {
>         Anasazi::Eigensolution<ST, MV> solution =
> generalizedProblem->getSolution();
>
>         int numEigenPairs = solution.numVecs;
>
>         Teuchos::RCP<MV> evecs = solution.Evecs;
>         std::vector<Anasazi::Value<ST> > evals = solution.Evals;
>
>         int ourEvIdx = 0;
>         if (numEigenPairs == 2)
>             if (evals[0].realpart < evals[1].realpart)
>                 ourEvIdx = 1;
>         evecs->Multiply(1,*invSqrtD, *evecs, 0.0);
>         vectorToSend = Teuchos::rcp((*evecs)(ourEvIdx));
>         sourceMap = &vectorToSend->Map();
>     }
>
>     Epetra_Import importer(targetMap, *sourceMap);
>
>     eigenVector.Import(*vectorToSend, importer, Add); // send eigenvector
> to processor 1
>
>
> However i get a fault like : (something like segmentation fault i think)
>
> *** glibc detected *** ./opencv_deneme: corrupted double-linked list:
> 0x000000002006cec0 ***
> ======= Backtrace: =========
> /lib64/libc.so.6[0x3f7b2723e5]
> /lib64/libc.so.6(cfree+0x4b)[0x3f7b27273b]
> ./opencv_deneme[0x4c976f]
> ./opencv_deneme[0x482145]
> ./opencv_deneme[0x42a292]
> ./opencv_deneme[0x482145]
> ./opencv_deneme[0x40f0be]
> ./opencv_deneme[0x40ea52]
> ./opencv_deneme[0x40ea52]
> ./opencv_deneme[0x410294]
> ./opencv_deneme[0x4751e6]
> /lib64/libc.so.6(__libc_start_main+0xf4)[0x3f7b21d994]
> ./opencv_deneme(__gxx_personality_v0+0x299)[0x40b9d9]
> ======= Memory map: ========
> 00400000-0051e000 r-xp 00000000 03:01 9864086
>  /home/proje/trilinos_ile_ilk_deneme/opencv
> deneme/dist/Debug/GNU-Linux-x86/opencv_deneme
> 0071e000-00725000 rw-p 0011e000 03:01 9864086
>  /home/proje/trilinos_ile_ilk_deneme/opencv
> deneme/dist/Debug/GNU-Linux-x86/opencv_deneme
> 1fff8000-20100000 rw-p 1fff8000 00:00 0
>  [heap]
> 3a68600000-3a689f6000 r-xp 00000000 03:01 6687839
>  /usr/lib64/atlas/liblapack.so.3.0
> 3a689f6000-3a68bf6000 ---p 003f6000 03:01 6687839
>  /usr/lib64/atlas/liblapack.so.3.0
> 3a68bf6000-3a68bf9000 rw-p 003f6000 03:01 6687839
>  /usr/lib64/atlas/liblapack.so.3.0
> 3a68bf9000-3a68cfd000 rw-p 3a68bf9000 00:00 0
> 3a69600000-3a69cec000 r-xp 00000000 03:01 6687846
>  /usr/lib64/atlas/libatlas.so.3.0
> 3a69cec000-3a69eeb000 ---p 006ec000 03:01 6687846
>  /usr/lib64/atlas/libatlas.so.3.0
> 3a69eeb000-3a69ef5000 rw-p 006eb000 03:01 6687846
>  /usr/lib64/atlas/libatlas.so.3.0
> 3a6c200000-3a6c254000 r-xp 00000000 03:01 5380294
>  /usr/lib64/libblas.so.3.0.3
> 3a6c254000-3a6c453000 ---p 00054000 03:01 5380294
>  /usr/lib64/libblas.so.3.0.3
> 3a6c453000-3a6c454000 rw-p 00053000 03:01 5380294
>  /usr/lib64/libblas.so.3.0.3
> 3a6ca00000-3a6ca1e000 r-xp 00000000 03:01 6687833
>  /usr/lib64/atlas/libcblas.so.3.0
>
> and so on.
>
>
>
> So how may i solve this problem? I couldn't figure out where I am
> mistaken.
>
> Any help is appreciated,
> Mehmet Salih YILDIRIM
>
>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: https://software.sandia.gov/pipermail/trilinos-users/attachments/20100603/8f907a7f/attachment-0001.html 


More information about the Trilinos-Users mailing list