Hello,

I have problem with a code i'am working on.

To illustrate my problem, here is an example:


int main(int argc, char *argv[])
{

    PetscErrorCode ierr;

    ierr = PetscInitialize(&argc, &argv, (char *)0, NULL);
    if (ierr)
        return ierr;

    int i = 0;
    for (i = 0; i < 1; i++)
    {
        Mat A;
        ierr = MatCreate(PETSC_COMM_WORLD, &A);
        CHKERRQ(ierr);
        ierr = MatSetSizes(A, 16, 16, PETSC_DECIDE,PETSC_DECIDE);
        CHKERRQ(ierr);
        ierr = MatSetFromOptions(A);
        CHKERRQ(ierr);
        ierr = MatSetUp(A);
        CHKERRQ(ierr);


        ierr = MatAssemblyBegin(A, MAT_FINAL_ASSEMBLY);
        CHKERRQ(ierr);
        ierr = MatAssemblyEnd(A, MAT_FINAL_ASSEMBLY);
        CHKERRQ(ierr);



        /// SOME CODE HERE....

        MatDestroy(&A);


    }


    FILE *fPtr;
    fPtr = fopen("petsc_dump_file.txt", "a");
    PetscMallocDump(fPtr);
    fclose(fPtr);

    ierr = PetscFinalize();
    CHKERRQ(ierr);

    return 0;
}



The problem is , in the loop, the memory consumption keep increasing till the end of the program.

I checked memory leak with PetscMallocDump, and found out that the problem may be due to matrix creation.

I'am new to Petsc and i don't know if i'am doing something wrong. Thanks


Médane

Reply via email to