comp.lang.ada
 help / color / mirror / Atom feed
From: Jim Paloander <dhmos.altiotis@gmail.com>
Subject: Re: Real_Arrays on heap with overloaded operators and clean syntax
Date: Sun, 22 Jan 2023 22:56:38 -0800 (PST)	[thread overview]
Message-ID: <8a053ff6-ce49-454e-8304-9c2a25a665e8n@googlegroups.com> (raw)
In-Reply-To: <tql9oc$3gtgn$1@dont-email.me>


> >>>> Dear ADA lovers, 
> >>>> with stack allocation of Real_Vector ( 1 .. N ) when N >= 100,000 I 
> >>>> get STACK_OVERFLOW ERROR while trying to check how fast operator 
> >>>> overloading is working for an expression 
> >>>> 
> >>>> X := A + B + C + C + A + B, where 
> >>>> A,B,C,X are all Real_Vector ( 1 .. N ). 
> >>>> 
> >>>> So my only option was to allocate on the heap using new. But then I 
> >>>> lost the clean syntax 
> >>>> 
> >>>> X := A + B + C + C + A + B 
> >>>> 
> >>>> and I had to write instead: 
> >>>> 
> >>>> X.all := A.all + B.all + C.all + C.all + A.all + B.all. 
> >>>> 
> >>>> This is really ugly and annoying because when you are using 
> >>>> Real_Arrays for implementing some linear algebra method who relies 
> >>>> heavilly on matrix vector products and vector updates, you do need 
> >>>> to allocate on the heap (sizes are determined in runtime) and you do 
> >>>> need a clean syntax. So, is there any way to simplify my life 
> >>>> without using the .all or even without declaring A,B,C,X as access 
> >>>> Real_Vector? 
> >>>> Thanks for your time! 
> >>> If you are on linux, then you could set the stack size with 
> >>> 
> >>> $ ulimit -s unlimited 
> >>> $ launch_my_app 
> >>> 
> >>> 
> >>> 
> >>> Regards. 
> >> On Windows 10 with mingw64? 
> > 
> >    Not sure. I don't have a windows machine. 
> > 
> >    What happens when try ? 
> > 
> >       $ ulimit -a
> ulimit is available on cygwin. 
> 
> It is not available on mingw64 then ?
It is, but I am not sure if it works since -D400m -d400m together with ulimit were not able to solve the problem. So I thought that under windows 10 and mingw things related to stack size settings are not equivalent to Linux. I checked your repository. Looks good. We need some elegant solution, because sometimes it is not easy to predict the stack size that will be needed. Imagine you write a commercial application that is running from a GUI and the user loads a particular case from a file. The memory that will be needed may even exceed the available memory installed on the computer. There must be some elegant way to set the stack size globally. On the other hand storage pool seem that does not need deallocation. Isnt there any storage pool for stack based allocation so that you enjoy best of both worlds?

  reply	other threads:[~2023-01-23  6:56 UTC|newest]

Thread overview: 34+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-01-22 21:34 Real_Arrays on heap with overloaded operators and clean syntax Jim Paloander
2023-01-22 21:56 ` Joakim Strandberg
2023-01-22 22:07   ` Jim Paloander
2023-01-22 22:42     ` Joakim Strandberg
2023-01-22 22:49       ` Jim Paloander
2023-01-22 23:11         ` Joakim Strandberg
2023-01-22 23:14         ` Gautier write-only address
2023-01-23  1:14           ` Leo Brewin
2023-01-23  6:01             ` Jim Paloander
2023-01-23  8:39     ` G.B.
2023-01-22 22:13 ` Dmitry A. Kazakov
2023-01-22 22:36   ` Jim Paloander
2023-01-23  8:28     ` Dmitry A. Kazakov
2023-01-24  1:04       ` Jim Paloander
2023-01-24 10:42         ` J-P. Rosen
2023-01-25  9:52           ` Jim Paloander
2023-01-25 12:21             ` J-P. Rosen
2023-01-25 22:41               ` Gautier write-only address
2023-01-26 19:08                 ` Jim Paloander
2023-01-22 23:18 ` Rod Kay
2023-01-22 23:20   ` Jim Paloander
2023-01-22 23:34     ` Rod Kay
2023-01-22 23:53       ` Joakim Strandberg
2023-01-23  7:50         ` Egil H H
2023-01-23  8:51           ` J-P. Rosen
2023-01-23  6:34       ` Rod Kay
2023-01-23  6:56         ` Jim Paloander [this message]
2023-01-23  7:31           ` Rod Kay
2023-01-24 19:47 ` Gautier write-only address
2023-01-24 23:02   ` Gautier write-only address
2023-01-25  9:50     ` Jim Paloander
2023-01-26 20:39 ` Jerry
2023-01-26 21:52   ` Jim Paloander
2023-02-02 21:59     ` Jerry
replies disabled

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox