:orphan: # MatCreateSeqAIJPERM Creates a sparse matrix of type `MATSEQAIJPERM`. This type inherits from `MATSEQAIJ`, but calculates some additional permutation information that is used to allow better vectorization of some operations. At the cost of increased storage, the `MATSEQAIJ` formatted matrix can be copied to a format in which pieces of the matrix are stored in ELLPACK format, allowing the vectorized matrix multiply routine to use stride-1 memory accesses. ## Synopsis ``` PetscErrorCode MatCreateSeqAIJPERM(MPI_Comm comm, PetscInt m, PetscInt n, PetscInt nz, const PetscInt nnz[], Mat *A) ``` Collective ## Input Parameters - ***comm -*** MPI communicator, set to `PETSC_COMM_SELF` - ***m -*** number of rows - ***n -*** number of columns - ***nz -*** number of nonzeros per row (same for all rows), ignored if `nnz` is given - ***nnz -*** array containing the number of nonzeros in the various rows (possibly different for each row) or `NULL` ## Output Parameter - ***A -*** the matrix ## See Also [](ch_matrices), `Mat`, `MatCreate()`, `MatCreateMPIAIJPERM()`, `MatSetValues()` ## Level intermediate ## Location src/mat/impls/aij/seq/aijperm/aijperm.c --- [Edit on GitLab](https://gitlab.com/petsc/petsc/-/edit/release/src/mat/impls/aij/seq/aijperm/aijperm.c) [Index of all Mat routines](index.md) [Table of Contents for all manual pages](/manualpages/index.md) [Index of all manual pages](/manualpages/singleindex.md)