Issue798

Title CEGAR: make extra memory padding configurable
Priority wish Status resolved
Superseder Nosy List jendrik, malte
Assigned To jendrik Keywords
Optional summary

Created on 2018-06-07.13:00:02 by jendrik, last changed by jendrik.

Messages
msg10190 (view) Author: jendrik Date: 2021-03-18.14:24:57
I currently don't plan to pursue this, so I'm closing the issue.
msg7255 (view) Author: jendrik Date: 2018-06-08.17:43:23
Let's do that :-)
msg7253 (view) Author: malte Date: 2018-06-08.17:12:46
I see. It still seems fragile though, and will behave weirdly if other parts of
the code start using the extra padding. For example, if some code requests
padding before the CEGAR heuristics are constructed and the CEGAR heuristic is
configured to use no padding, it will still release the padding requested by
someone else, which I don't think it should interfere with. I think the feature
should be redesigned.

I realize your suggestion was to take the feature out altogether, so you might
not be all that interested in working on making it more featureful. :-) Perhaps
we can discuss offline how to proceed.
msg7252 (view) Author: jendrik Date: 2018-06-08.17:03:52
No, because the abstractions are built one after the other (just checked this 
:-)).
msg7251 (view) Author: malte Date: 2018-06-08.16:55:44
I had a brief look. Would having two CEGAR heuristics with default settings
crash the planner (in debug mode) because it would attempt to allocate extra
memory twice, which is asserted against?
msg7241 (view) Author: jendrik Date: 2018-06-08.10:01:20
I made a pull request at
https://bitbucket.org/jendrikseipp/downward/pull-requests/93 .
msg7238 (view) Author: jendrik Date: 2018-06-07.13:12:31
OK. The feature is currently always used. I'll make it configurable.
msg7237 (view) Author: malte Date: 2018-06-07.13:06:44
Internal memory limits, just like internal time limits, are often important for
performance. Is there a fundamental difference between this feature and, for
example, the time limit within iPDB?

I think we should not be too much focused on the specific time and memory limits
we typically use in experiments. Other people might want to set a higher/lower
time/memory limit, and then limiting time/memory for specific computations might
become more relevant.

To make experiments more reproducible, it's sufficient not to use this
functionality. It doesn't have to be removed from the code.
msg7236 (view) Author: jendrik Date: 2018-06-07.13:00:02
We currently reserve some extra memory before building Cartesian abstractions. 
If we run out of memory, we release the extra memory and continue with the 
search. This makes planner runs non-deterministic since they depend on the 
memory layout. Also, this feature is becoming less relevant now that we're 
starting to use a 3.5 GiB instead of a 2 GiB memory limit. Therefore, I'd like 
to remove this functionality and abort when running out of memory.

The CEGAR code is currently the only user of this memory-padding functionality 
(in utils/memory.h). The question is whether we should remove the corresponding 
functions. I'd be in favor of doing so, because of YAGNI and to advocate for 
reproducible experiments. If you need the functionality in an unmerged branch, 
please speak up.
History
Date User Action Args
2021-03-18 14:24:57jendriksetstatus: chatting -> resolved
messages: + msg10190
2020-01-13 12:28:20jendriksetstatus: reviewing -> chatting
2018-06-08 17:43:23jendriksetmessages: + msg7255
2018-06-08 17:12:46maltesetmessages: + msg7253
2018-06-08 17:03:52jendriksetmessages: + msg7252
2018-06-08 16:55:44maltesetmessages: + msg7251
2018-06-08 10:01:20jendriksetstatus: chatting -> reviewing
messages: + msg7241
2018-06-07 13:12:31jendriksetmessages: + msg7238
title: CEGAR: don't reserve extra memory padding and possibly remove the extra-memory-reservation functions -> CEGAR: make extra memory padding configurable
2018-06-07 13:06:44maltesetstatus: unread -> chatting
messages: + msg7237
2018-06-07 13:00:02jendrikcreate