MathGroup Archive 2004

[Date Index] [Thread Index] [Author Index]

Search the Archive

Open letter: Who steals memory? :-)

  • To: mathgroup at smc.vnet.net
  • Subject: [mg47311] Open letter: Who steals memory? :-)
  • From: derov at rambler.ru (Derov Alexey)
  • Date: Mon, 5 Apr 2004 05:22:48 -0400 (EDT)
  • Sender: owner-wri-mathgroup at wolfram.com

Who steals memory?  OR  Is it possible to use Mathematica for
Technical Computations YES or NOT?

Dear colleagues, once again I want to consider one aged problem. Who
steals memory? (I am far from idea that the corporation Wolfram Res.
steals memory :- ) on my computer), but some problem in this field
disturbs me. For example we shall consider a problem of linear
equations systems solution

A . x = b, were A - matrix, b - vector, x - required vector

Let's try to solve the given system by method of Gauss elimination
(LU-factorization). Well-known, that this method does not demand too
much additional memory. But that we see

n = 1024;
A = Table[Random[],{n},{n}];
b = Table[Random[],{n}];

MaxMemoryUsed[ ]/(1024*1024.)     - - - > 10.0353
ByteCount[A]/(1024*1024.)      - - - > 8.000

x1 = LinearSolve[A,b,Method->OneStepRowReduction];
MaxMemoryUsed[ ]/(1024*1024.)  - - - > 70.206

But other method gives more well result

x2 = LinearSolve[A,b];
MaxMemoryUsed[]/(1024*1024.) - - -> 18.0844

The "Mathematica" is demanded so many memory, In my modest opinion it
is too much memory.
But there can be I have not understood options:

Method -> OneStepRowReduction 

Then I offer one more way, Let's write the program to solution of
linear equations systems independently. We use the same method of
Gauss elimination. In our notations:

A = g[[All,Range[1,n]]];
b = g[[All,n+1]];

Realization of the given algorithm on any the programming language
FORTRAN or C will not use additional memory. But, "Mathematica"
demands too much again:


n = 1024;
g = Table[Random[],{n},{n+1}];
MaxMemoryUsed[ ]/(1024*1024.)  - - - > 10.03

Do[  g[[i,All]] /= g[[i,i]];
    Do[  g[[j,All]]-=g[[j,i]]*g[[i,All]]
       ,{ j,i+1,n}]; ,{i,1,n}];
x=Table[0,{n}];
Do[
    x[[i]]+=g[[i,n+1]];
    x[[i]]-=g[[i,Range[i+1,n]]]. x[[Range[i+1,n]]]
  ,{i,n,1,-1}];
MaxMemoryUsed[ ]/(1024*1024.)  - - - > 18.1024

WHO STEALS MEMORY? :-) 
My problem has arisen as follows. I solve the system A .x = b, the
matrix - A is located in memory well, but I don't solve this problem
memory does not suffice!

Is it possible to use "Mathematica" for heavy computations YES or
NOT?,
This question to have to consider. 
COLLEAGUES, ARE YOU AGREE WITH ME?

Derov Alex


  • Prev by Date: Re: NDSolve for Newtonian Orbits Question
  • Next by Date: Re: NDSolve for Newtonian Orbits Question
  • Previous by thread: RE: combining two contour plots
  • Next by thread: Re: Open letter: Who steals memory? :-)