[petsc-users] How much memory does TS use (in terms of # of matrices)
Jed Brown
jedbrown at mcs.anl.gov
Wed May 16 09:20:44 CDT 2012
On Wed, May 16, 2012 at 8:17 AM, Andrew Spott <andrew.spott at gmail.com>wrote:
> Ok, so now I'm leaking memory without even creating the extra matrix:
>
Send -malloc_dump output
>
> PetscErrorCode HamiltonianJ(TS timeStepContext, PetscReal t, Vec u, Mat
> *A, Mat *B, MatStructure *flag, void* context)
> {
> PetscErrorCode err;
> Context *cntx = (Context*)context;
> PetscScalar ef = eField(t, cntx->params);
> //if (cntx->rank == 0) std::cout << "ef: " << ef;
>
> err = MatDuplicate(cntx->energy_eigenstates,MAT_COPY_VALUES,A);
> err = MatAXPY(*A, ef, cntx->dipole_matrix, DIFFERENT_NONZERO_PATTERN);
>
> err = MatAssemblyBegin(*A, MAT_FINAL_ASSEMBLY);
> err = MatAssemblyEnd(*A, MAT_FINAL_ASSEMBLY);
>
> *flag = DIFFERENT_NONZERO_PATTERN;
>
> // absorb!
>
> return err;
> }
>
> I'm honestly stumped now…
>
> -Andrew
>
>
> On May 16, 2012, at 7:17 AM, Jed Brown wrote:
>
> On Wed, May 16, 2012 at 7:08 AM, Andrew Spott <andrew.spott at gmail.com>wrote:
>
>> Not until you pointed it out… :). Though it probably should have been.
>> It was late.
>>
>> Though I'm not sure how to fix that… should I do a MatDestroy(A) at the
>> beginning of that function every time?.
>>
>> Is *A a pointer to the last used matrix, should I just do the mat
>> duplicate into A?
>>
>
> Do you really mean to only change A (the operator), but not B (the
> preconditioning matrix)?
>
> Why do you want to create a new matrix instead of reusing those?
>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mcs.anl.gov/pipermail/petsc-users/attachments/20120516/901e425c/attachment-0001.htm>
More information about the petsc-users
mailing list