Skip to content

Memory Usage and Possible Leak #43

@wlruys

Description

@wlruys

Hi,

We've noticed that when performing repeated calls to evaluate that memory usage continues to grow. This is limiting our ability to use GOFMM with an eigensolver & clustering, after ~50-100 iterations it uses 20+ GB. (Sometimes over 60, depending on the dataset size)
Not sure if this is related to issue #37

In https://github.com/dialecticDolt/hmlp/tree/pythondevel we tried adding deconstructors to Data (In case they didn't inherit properly from vector and ReadWrite) but this didn't change the behavior that we were seeing.

This can be seen with a simple test with example/distributed_fast_matvec_solver.cpp

\\DistData on Stack
for(int rep=0; rep<50; rep++){
    DistData<RIDS, STAR, T> u1 = mpigofmm::Evaluate( tree1, w1 );
}
\\With explicit deallocation
DistData<RIDS, STAR, T>* u2;
for(int rep=0; rep<50; rep++){
    u2 = mpigofmm::Evaluate_Pointer(tree1, w1);
    delete(u2);
}

Where mpigofmm::Evaluate_Pointer(tree, w1) is a version of Evaluate that allocated potentials by calling new and returns a pointer to it.

Running valgrind over this type of example shows lost memory, but not to this magnitude. The largest 'definitely lost' blocks are near the xgemm tasks and S2S Tasks.

Could you take a look at what the cause might be?

Metadata

Metadata

Assignees

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions