[petsc-users] Get wrong answer when use multi-process

张国熙 altriaex86 at gmail.com
Tue May 13 02:28:08 CDT 2014


Hi, all

I am confused about my code, for it could return right answer when I use 1
process, but return totally wrong answer when more than 1 process.

This is how I feed data to it.

I have a CSR matrix, represented by Ap(pointer),Ai(index),and temp(data).

First determine local matrix for each process. Then feed data to them.

  int temprank,localsize,line_pos;
    line_pos = 0;
    if(rank == 0)
    {
        localsize   = size/pro + ((size % pro) > rank);
    }
    else
    {
        for (temprank = 0;temprank <rank;temprank++)
        {
            localsize   = size/pro + ((size % pro) > temprank);
            line_pos += localsize;
        }
    }

    Lin_index = new int [localsize+1];
    for(i=0;i<localsize+1;i++)
    {
        Lin_index [i] = Ap[line_pos+i]-Ap[line_pos];
    }
    std::cerr<<"line_pos    "<<line_pos<<"\n";
    MatMPIAIJSetPreallocationCSR(A,Lin_index,Ai+line_pos,temp+line_pos);

I use spectral transform with MATSOLVERMUMPS to calculate eigenvalue.


The strange thing is, when I run it with one process, the eigenvalue is
what I want, typically,
 (8.39485e+13,5.3263)  (3.93842e+13,-82.6948) first two.
But for 2 process:
eigenvalue    (2.76523e+13,7.62222e+12)
eigenvalue    (2.76523e+13,-7.62222e+12)

3 process:
eigenvalue    (6.81292e+13,-3071.82)
eigenvalue    (3.49533e+13,2.48858e+13)

4
eigenvalue    (9.7562e+13,5012.4)
eigenvalue    (7.2019e+13,8.28561e+13)

However, it could pass simple test like
    int n = 12;
    int nz = 12;
    int Ap[13] = {0,1,2,3,4,5,6,7,8,9,10,11,12};
    int Ai[12] = { 0,1,2,3,4,5,6,7,8,9,10,11};
    double Ax[12] = {-1,-2,-3,-4,-5,6,7,8,9,10,11};
    double Az[12] = {0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0,0,0,0};


Do you have any idea about it?

Thanks a lot!!
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mcs.anl.gov/pipermail/petsc-users/attachments/20140513/63fa406a/attachment-0001.html>


More information about the petsc-users mailing list