static char help[] = "Creates MatSeqBAIJ matrix of given BS for timing tests of MatMult().\n"; #include int main(int argc,char **args) { Mat A; Vec x,y; PetscErrorCode ierr; PetscInt m=50000,bs=12,i,j,k,l,row,col,M, its = 25; PetscScalar rval,*vals; PetscRandom rdm; ierr = PetscInitialize(&argc,&args,(char*)0,help);if (ierr) return ierr; CHKERRQ(PetscOptionsGetInt(NULL,NULL,"-mat_block_size",&bs,NULL)); CHKERRQ(PetscOptionsGetInt(NULL,NULL,"-its",&its,NULL)); CHKERRQ(PetscOptionsGetInt(NULL,NULL,"-mat_size",&m,NULL)); M = m*bs; CHKERRQ(MatCreateSeqBAIJ(PETSC_COMM_SELF,bs,M,M,27,NULL,&A)); CHKERRQ(MatSetOption(A,MAT_NEW_NONZERO_ALLOCATION_ERR,PETSC_TRUE)); CHKERRQ(PetscRandomCreate(PETSC_COMM_SELF,&rdm)); CHKERRQ(PetscRandomSetFromOptions(rdm)); CHKERRQ(VecCreateSeq(PETSC_COMM_SELF,M,&x)); CHKERRQ(VecDuplicate(x,&y)); /* For each block row insert at most 27 blocks */ CHKERRQ(PetscMalloc1(bs*bs,&vals)); for (i=0; i