I am having issues with using dsyevr to diagonalize matrices with a size beyond 16400^2
(anything smaller works). For such matrices I get errors of the form (generated
from within dsyevr)
flapack_renorm_b(5776) malloc: *** mmap(size=18446744071998529536) failed (error code=12)
*** error: can't allocate region
*** set a breakpoint in malloc_error_break to debug
The matrix size where things start to go badly is about 2GB. If this was a 32bit machine it would make
sense but I'm on a 64bit mac pro with 16GB of memory. I see that the mmap error corresponds to
a size 18446744071998529536 ~ 2^64 which I guess would be at the edge of the ability of malloc to
map addresses, but I am unsure of what dsyevr could be doing to generate such errors. Assuming the
problem is not hidden or at least set up to be brought out by dsyevr by my own code, it looks like dsyevr
is causing severe memory fragmentation.
When such an error occurs, the program does not at first crash but instead continues
to generate such errors for a while. It however does eventually throw out a segmentation fault.
Has anyone reported similar issues with large matrices? I've tried a variety of lapack libraries (the ones
that come with atlas through fink (which was set for 64bit) as well as the ones apple includes with its Developer toolkit.
Any thoughts would be appreciated.