All, I seem to have hit a barrier when it comes to using chapel (at least 1.11.0, which we have installed at CSU). The app I'm currently working on is very matrix heavy, which is backed by arrays and regular domains. There are many millions (maybe even billions, it is a ray tracer after all) of matrix and matrix like object being created, and destroyed.
However, I seem to be encountering a massive memory leak.
The problem seems to be two fold:
1. When deleted, only an incredibly small portion of memory is actually
free'd.
Im seeing about 15% of the used memory being recovered in a small
benchmark where the classes only contain a single int field.
2. The domains never get freed.
When classes are deleted, I set my domains to an empty domain (eg {1..0}
) which clears out the array, however the domains for those arrays still
remain, since they cannot be deleted ("delete not allowed on records").
Here I see about 5% of the used memory being recovered.
(I observed this both with and without --fast)
This leads to instances where the program can leak memory on the order of
95% of machines with 30+GB of RAM, where its performance is then
obliterated by having to swap memory.
Im not really sure how to remedy this.
Is it something that is on the compilers end?
Attached are two benchmarks that I used to see this.
To observe memory usage I used top.
-Ian J. Bertolacci
classes.chpl
Description: Binary data
domains.chpl
Description: Binary data
------------------------------------------------------------------------------
_______________________________________________ Chapel-users mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/chapel-users
