I'm still unable to get a basic matrix transpose working. I may be stupid, but I cannot figure out why the object is in the wrong state, no matter what I do.
This is the full code: https://github.com/jeffhammond/PRK/commit/617973dfbe07d64cc2c0418a1702c418d51802c5 jrhammon@jrhammon-nuc:~/PRK/C1z$ make petsc && ./transpose-petsc -i 10 -n 100 make: Nothing to be done for 'petsc'. Parallel Research Kernels version 2020 C11/PETSc Transpose: B += A^T Number of processes = 1 Number of iterations = 10 Matrix order = 100 [0]PETSC ERROR: --------------------- Error Message -------------------------------------------------------------- [0]PETSC ERROR: Object is in wrong state [0]PETSC ERROR: Not for unassembled matrix [0]PETSC ERROR: See https://www.mcs.anl.gov/petsc/documentation/faq.html for trouble shooting. [0]PETSC ERROR: Petsc Release Version 3.13.1, unknown [0]PETSC ERROR: ./transpose-petsc on a named jrhammon-nuc by jrhammon Mon Jun 1 17:01:05 2020 [0]PETSC ERROR: Configure options --prefix=/home/jrhammon/PRK/deps/petsc --with-blaslapack-dir=/opt/intel/inteloneapi/mkl/2021.1-beta06 --with-mpi-dir=/opt/intel/inteloneapi/mpi/2021.1-beta06 --with-cxx=0 --with-fc=0 [0]PETSC ERROR: #1 MatTranspose() line 4878 in /home/jrhammon/PRK/deps/petsc-src/src/mat/interface/matrix.c [0]PETSC ERROR: #2 main() line 169 in transpose-petsc.c [0]PETSC ERROR: PETSc Option Table entries: [0]PETSC ERROR: -i 10 [0]PETSC ERROR: -n 100 [0]PETSC ERROR: ----------------End of Error Message -------send entire error message to [email protected] Abort(169073) on node 0 (rank 0 in comm 16): application called MPI_Abort(MPI_COMM_SELF, 169073) - process 0 Jeff On Mon, Jun 1, 2020 at 4:11 PM Jed Brown <[email protected]> wrote: > I would just use MatTranspose here. We've had limited demand for more > sophisticated operations on objects of type MATTRANSPOSE and there > probably isn't much benefit in fusing the parallel version here anyway. > > Jeff Hammond <[email protected]> writes: > > > I am trying to understand how to use a transposed matrix view along the > > lines of Numpy ( > > > https://github.com/ParRes/Kernels/blob/master/PYTHON/transpose-numpy.py#L99 > > ). > > > > > https://www.mcs.anl.gov/petsc/petsc-current/docs/manualpages/Mat/MatCreateTranspose.html > > says > > > > "Creates a new matrix object that behaves like A'" > > > > But later it seems to suggest that this is only true when performance a > > matrix-vector product: > > > > "Rather the new matrix object performs the matrix-vector product by using > > the MatMultTranspose() on the original matrix" > > > > I got the idea to use this view concept from > > > https://www.mcs.anl.gov/petsc/petsc-current/docs/manualpages/Mat/MatTranspose.html > , > > which says: > > > > "Consider using MatCreateTranspose() instead if you only need a matrix > that > > behaves like the transpose, but don't need the storage to be changed." > > > > When I try to use the transpose view in MatAXPY using this code: > > Mat AT; > > ierr = MatCreateTranspose(A, &AT); // create transpose view of A > > ierr = MatAXPY(B, one, AT, SAME_NONZERO_PATTERN); > > > > I get an error suggesting that I am doing something bad: > > > > [0]PETSC ERROR: --------------------- Error Message > > -------------------------------------------------------------- > > [0]PETSC ERROR: Object is in wrong state > > [0]PETSC ERROR: Not for unassembled matrix (Y) > > [0]PETSC ERROR: See https://www.mcs.anl.gov/petsc/documentation/faq.html > > for trouble shooting. > > [0]PETSC ERROR: Petsc Release Version 3.13.1, unknown > > [0]PETSC ERROR: ./transpose-petsc on a named jrhammon-nuc by jrhammon > Mon > > Jun 1 15:38:20 2020 > > [0]PETSC ERROR: Configure options --prefix=/home/jrhammon/PRK/deps/petsc > > --with-blaslapack-dir=/opt/intel/inteloneapi/mkl/2021.1-beta06 > > --with-mpi-dir=/opt/intel/inteloneapi/mpi/2021.1-beta06 --with-cxx=0 > > --with-fc=0 > > [0]PETSC ERROR: #1 MatAXPY() line 74 in > > /home/jrhammon/PRK/deps/petsc-src/src/mat/utils/axpy.c > > [0]PETSC ERROR: #2 main() line 170 in transpose-petsc.c > > [0]PETSC ERROR: PETSc Option Table entries: > > [0]PETSC ERROR: -i 10 > > [0]PETSC ERROR: -n 100 > > [0]PETSC ERROR: ----------------End of Error Message -------send entire > > error message to [email protected] > > > > What do I need to do to use a transpose view properly outside of M*V? > > > > Thanks, > > > > Jeff > > > > -- > > Jeff Hammond > > [email protected] > > http://jeffhammond.github.io/ > -- Jeff Hammond [email protected] http://jeffhammond.github.io/
