Skip to content

Commit

Permalink
make real transpose
Browse files Browse the repository at this point in the history
  • Loading branch information
Jeff Hammond committed Jun 1, 2020
1 parent 0df0e5c commit 617973d
Showing 1 changed file with 4 additions and 6 deletions.
10 changes: 4 additions & 6 deletions C1z/transpose-petsc.c
Expand Up @@ -124,13 +124,14 @@ int main(int argc, char * argv[])
PetscReal three = 3;

Mat A;
Mat AT;
Mat B;

ierr = MatCreateDense(PETSC_COMM_WORLD, PETSC_DECIDE, PETSC_DECIDE, order, order, NULL, &A); CHKERRQ(ierr);
//ierr = MatSetFromOptions(A); CHKERRQ(ierr);
//ierr = MatSetSizes(A,PETSC_DECIDE,PETSC_DECIDE,order,order); CHKERRQ(ierr);

ierr = MatDuplicate(A,MAT_DO_NOT_COPY_VALUES,&B); CHKERRQ(ierr);
ierr = MatDuplicate(A,MAT_DO_NOT_COPY_VALUES,&AT); CHKERRQ(ierr);

// A[i,j] = (i*order+j);
ierr = MatAssemblyBegin(A, MAT_FINAL_ASSEMBLY); CHKERRQ(ierr);
Expand All @@ -152,8 +153,6 @@ int main(int argc, char * argv[])
}
ierr = MatAssemblyEnd(B, MAT_FINAL_ASSEMBLY); CHKERRQ(ierr);

ierr = MatDuplicate(A,MAT_DO_NOT_COPY_VALUES,&B); CHKERRQ(ierr);

PetscLogEvent prk_event;
PetscLogEventRegister("PRK transpose",0,&prk_event);

Expand All @@ -165,11 +164,9 @@ int main(int argc, char * argv[])
ierr = PetscLogEventBegin(prk_event,0,0,0,0); CHKERRQ(ierr);
}

Mat AT;
// create transpose view of A
ierr = MatDuplicate(A,MAT_DO_NOT_COPY_VALUES,&AT); CHKERRQ(ierr);
ierr = MatAssemblyBegin(AT, MAT_FINAL_ASSEMBLY); CHKERRQ(ierr);

This comment has been minimized.

Copy link
@stefanozampini

stefanozampini Jun 2, 2020

Move MatAssemblyBegin after MatTranspose

This comment has been minimized.

Copy link
@jeffhammond

jeffhammond Jun 2, 2020

Owner

78dcb9a does this, but doesn't work, so maybe I don't understand you properly.

ierr = MatCreateTranspose(A, &AT); CHKERRQ(ierr);
ierr = MatTranspose(A, MAT_REUSE_MATRIX, &AT); CHKERRQ(ierr);
ierr = MatAssemblyEnd(AT, MAT_FINAL_ASSEMBLY); CHKERRQ(ierr);
// Y+=a*X
ierr = MatAXPY(B, one, AT, SAME_NONZERO_PATTERN); CHKERRQ(ierr);
Expand Down Expand Up @@ -214,6 +211,7 @@ int main(int argc, char * argv[])
return 1;
}

ierr = MatDestroy(&AT); CHKERRQ(ierr);
ierr = MatDestroy(&A); CHKERRQ(ierr);
ierr = MatDestroy(&B); CHKERRQ(ierr);

Expand Down

0 comments on commit 617973d

Please sign in to comment.