Talk About Network

Google


Register and Login
Nick
Password
Register create new account Sign up is FREE and you can post replies, new topics, bookmark posts and more!
Recover lost password


Programming > Ada > Re: Memory leak...
Latest [ Topics | Posts ] Archive Post A New Topic Post a Reply
<< Topic < Post Post 2 of 6 Topic 5657 of 5800
Post > Topic >>

Re: Memory leak in BLAS/LINPACK - GNAT on OS X

by Jerry <lanceboyle@[EMAIL PROTECTED] > Apr 18, 2008 at 02:43 PM

On Apr 16, 4:06 pm, tkrauss <thomas.kra...@[EMAIL PROTECTED]
> wrote:
> There have been a few messages on the GNAT-OSX mailing list about an
> apparent memory leak in the Ada.Numerics.Long_Real_Arrays
> implementation.   The setup is an OS X box (10.4) with the GNAT 4.3
> compiler from the macada.org site.  The Ada.Numerics.Long_Real_Arrays
> is using the Apple-supplied BLAS and LINPACK libraries under the
> hood.  The code snippet below (plagiarized from Jerry's post on the
> mailing list) leaks memory (as re****ted by top).  Note that the same
> code but with Long_Complex types does not appear to have this problem.
>
> Has anyone seen this problem on other platforms?  Do other languages
> on OS X behave this way?  I'm not sure how to track down the guilty
> party here.  Is it Apple's BLAS or LINPACK libraries or something in
> the GNAT Long_Real_Arrays multiply method?
>
> with Ada.Numerics.Long_Real_Arrays;
> use Ada.Numerics.Long_Real_Arrays;
>
> procedure tst_simple is
>   v        : Real_Vector(1 .. 100_000) := (others => 1.23);
>   res      : Real_Vector(1 .. 100_000);
> begin
>   for i in 1..1000 loop
>     res := 123.456 * v;
>   end loop;
> end tst_simple;

I'm really interested to see what comments people have about this
problem. The sample program given by the original poster hits 1 GB of
RAM use in only a few seconds. (I kill it then.)

As he says, the complex-number version of the same program does not
leak. Also, the following program which implements a local version of
scalar-vector multiplication does not leak.

It looks like either the * operator is hosed in GNAT or there is
something wrong with Apple's BLAS. Clearly programs that do this
operation are not practical at this time.

Here's the program with a local override of "*" for scalar-vector
multiplication that behaves well.


with Ada.Numerics.Long_Real_Arrays;     use
Ada.Numerics.Long_Real_Arrays;
procedure tst_mult_2 is
  v        : Real_Vector(1 .. 100_000) := (others => 1.23);
  res      : Real_Vector(1 .. 100_000);

  function "*" (a : Long_Float; x : Real_Vector) return Real_Vector is
    Result : Real_Vector (x'range);
  begin
    for index in x'range loop
      Result(index) := a * x(index);
    end loop;
    return Result;
  end "*";

begin
  for i in 1..100 loop
    res := 123.456 * v;
  end loop;
end tst_mult_2;


Jerry
 




 6 Posts in Topic:
Memory leak in BLAS/LINPACK - GNAT on OS X
tkrauss <thomas.krauss  2008-04-16 16:06:52 
Re: Memory leak in BLAS/LINPACK - GNAT on OS X
Jerry <lanceboyle@[EMA  2008-04-18 14:43:19 
Re: Memory leak in BLAS/LINPACK - GNAT on OS X
Jerry <lanceboyle@[EMA  2008-04-18 14:43:35 
Re: Memory leak in BLAS/LINPACK - GNAT on OS X
Per Sandberg <per.sand  2008-04-19 08:57:10 
Re: Memory leak in BLAS/LINPACK - GNAT on OS X
Jerry <lanceboyle@[EMA  2008-04-19 15:08:55 
Re: Memory leak in BLAS/LINPACK - GNAT on OS X
Jerry <lanceboyle@[EMA  2008-04-19 15:12:06 

Post A Reply:
  Go here to Signup

AddThis Feed Button


About - Advertising - Contact - Frequently Asked Questions - Privacy Policy - Terms of Use - Signup

Contact
tan12V112 Sun Jul 6 19:45:32 CDT 2008.