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; PetscInt m=50000,bs=12,i,j,k,l,row,col,M, its = 25; PetscScalar rval,*vals; PetscRandom rdm; PetscCall(PetscInitialize(&argc,&args,(char*)0,help)); PetscCall(PetscOptionsGetInt(NULL,NULL,"-mat_block_size",&bs,NULL)); PetscCall(PetscOptionsGetInt(NULL,NULL,"-its",&its,NULL)); PetscCall(PetscOptionsGetInt(NULL,NULL,"-mat_size",&m,NULL)); M = m*bs; PetscCall(MatCreateSeqBAIJ(PETSC_COMM_SELF,bs,M,M,27,NULL,&A)); PetscCall(MatSetOption(A,MAT_NEW_NONZERO_ALLOCATION_ERR,PETSC_TRUE)); PetscCall(PetscRandomCreate(PETSC_COMM_SELF,&rdm)); PetscCall(PetscRandomSetFromOptions(rdm)); PetscCall(VecCreateSeq(PETSC_COMM_SELF,M,&x)); PetscCall(VecDuplicate(x,&y)); /* For each block row insert at most 27 blocks */ PetscCall(PetscMalloc1(bs*bs,&vals)); for (i=0; i