Memory problems using mathlink (Sparse Matrix)
- To: mathgroup at smc.vnet.net
- Subject: [mg24252] Memory problems using mathlink (Sparse Matrix)
- From: Martin Zacho <zac at mip.sdu.dk>
- Date: Tue, 4 Jul 2000 15:22:13 -0400 (EDT)
- Organization: UNI-C
- Sender: owner-wri-mathgroup at wolfram.com
Hi,
I'm doing some rather big matrixcomputations in C and would like to
solve the problem using mathematica. The (sparse) matrix is about 4
millions doubles and I'm using the following form:
{{...},{{i,j}->A[i][j],...},{...}}
The relevant MathLink part of the program is as follows:
....do some rather long and booring calculations...
MLPutFunction(stdlink, "List", 2);
MLPutFunction(stdlink, "List", M);
for (j=0; j<M; j++) {
MLPutFunction(stdlink, "List", no[j]);
for (k=0; k<M; k++) {
MLPutFunction(stdlink, "Rule", 2);
MLPutFunction(stdlink, "List", 2);
MLPutInteger(stdlink, j+1);
MLPutInteger(stdlink, k+1);
MLPutReal(stdlink, BigMatrix[i][j]);
}
}
MLPutRealList(stdlink, y, M);
....clean up memory...
I'm also transfeering a small list of length M (approx. 8000 doubles).
The matrix is a MxM matrix with numbers in approx 7% of the cells.
The data structures occupies approx. 90MB in C but when they are
transfered to mathematica, MathKernel uses a _lot_ of memory (>500MB).
This causes 'my' machine to crash for some odd reason even though it has
8GB of RAM and 6GB of swap. The machine is a SUN running Solaris. The
kernel is version 4.0 release 2.
My problem:
How can I reduce memory req. ?
Am I doing anything wrong ?
Sincerely,
Martin Zacho