[petsc-users] Incorrect local row ranges allocated to the processes i.e. rstart and rend are not what I expected
Klaus Burkart
k_burkart at yahoo.com
Fri Nov 23 08:44:19 CST 2018
Hello,
I am trying to compute the local row ranges allocated to the processes i.e. rstart and rend of each process, needed as a prerequisite for MatMPIAIJSetPreallocation using d_nnz and o_nnz.
I tried the following:
...
PetscInitialize(0,0,PETSC_NULL,PETSC_NULL);
MPI_Comm_size(PETSC_COMM_WORLD,&size);
MPI_Comm_rank(PETSC_COMM_WORLD,&rank);
MatCreate(PETSC_COMM_WORLD,&A);
MatSetType(A,MATMPIAIJ);
PetscInt local_size = PETSC_DECIDE;
PetscSplitOwnership(PETSC_COMM_WORLD, &local_size, &N);
MPI_Scan(&local_size, &rend, 1, MPIU_INT, MPI_SUM, PETSC_COMM_WORLD);
rstart = rend - local_size;
PetscInt d_nnz[local_size], o_nnz[local_size];
/*
compute d_nnz and o_nnz here
MatMPIAIJSetPreallocation(A,0,d_nnz,0,o_nnz);
*/
for (rank = 0; rank < size; rank++) {
PetscPrintf(PETSC_COMM_WORLD,"local_size = %d, on process %d\n", local_size, rank);
PetscPrintf(PETSC_COMM_WORLD,"rstart = %d, on process %d\n", rstart, rank);
PetscPrintf(PETSC_COMM_WORLD,"rend = %d, on process %d\n", rend, rank);
}
PetscFinalize();
The local size is 25 rows on each process but rstart and rend are 0 and 25 on all processes, I expected 0 and 25, 25 and 50, 50 and 75 and 75 and 101. N = 100
I can't spot the error. Any ideas, what's the problem?
Klaus
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mcs.anl.gov/pipermail/petsc-users/attachments/20181123/0d7bc570/attachment.html>
More information about the petsc-users
mailing list