Hi,
https://polyml.inf.ed.ac.narkive.com/c53BJE4q/run-out-of-store-interrupting- threads
says that setting --maxheap with polyml can fix this problem.
Does this memory allocation necessarily mean _physical_ memory allocation or the operating system can use swap space to have the necessary memory?
I have set maxheap as twice the physical memory size in a CakeML compilation and I still got this error message (8G/16G).
- Gergely
On 04/12/2018 13:00, Gergely Buday wrote:
Hi,
https://polyml.inf.ed.ac.narkive.com/c53BJE4q/run-out-of-store-interrupting- threads
says that setting --maxheap with polyml can fix this problem.
Does this memory allocation necessarily mean _physical_ memory allocation or the operating system can use swap space to have the necessary memory?
I have set maxheap as twice the physical memory size in a CakeML compilation and I still got this error message (8G/16G).
- Gergely
The --maxheap setting sets the maximum virtual memory that can be used for the heap. There may be other settings, such as the available swap space or "ulimit" settings that mean that the heap can't grow to this size. It's generally a bad idea to allow the heap to grow much above the size of the physical memory because garbage-collection will cause the whole of the heap to be swapped in and out of memory. However, the control is on virtual memory not physical memory.
David
Thanks, David.
Digging into the issue it might be that the polyml in question uses 32 bit addressing an that is the problem.
How can I check whether a polyml is 32 or 64 bit?
- Gergely
Az Android Outlook let?lt?se
On Tue, Dec 4, 2018 at 2:21 PM +0100, "David Matthews" <David.Matthews at prolingua.co.uk> wrote:
On 04/12/2018 13:00, Gergely Buday wrote:
Hi,
https://polyml.inf.ed.ac.narkive.com/c53BJE4q/run-out-of-store-interrupting- threads
says that setting --maxheap with polyml can fix this problem.
Does this memory allocation necessarily mean _physical_ memory allocation or the operating system can use swap space to have the necessary memory?
I have set maxheap as twice the physical memory size in a CakeML compilation and I still got this error message (8G/16G).
- Gergely
The --maxheap setting sets the maximum virtual memory that can be used for the heap. There may be other settings, such as the available swap space or "ulimit" settings that mean that the heap can't grow to this size. It's generally a bad idea to allow the heap to grow much above the size of the physical memory because garbage-collection will cause the whole of the heap to be swapped in and out of memory. However, the control is on virtual memory not physical memory.
David
On 4 Dec 2018, at 15:59, <buday.gergely at uni-eszterhazy.hu> <buday.gergely at uni-eszterhazy.hu> wrote:
On Tue, Dec 4, 2018 at 2:21 PM +0100, "David Matthews" <David.Matthews at prolingua.co.uk> wrote:
On 04/12/2018 13:00, Gergely Buday wrote:
Hi,
https://polyml.inf.ed.ac.narkive.com/c53BJE4q/run-out-of-store-interrupting- threads
says that setting --maxheap with polyml can fix this problem.
Does this memory allocation necessarily mean _physical_ memory allocation or the operating system can use swap space to have the necessary memory?
I have set maxheap as twice the physical memory size in a CakeML compilation and I still got this error message (8G/16G).
- Gergely
The --maxheap setting sets the maximum virtual memory that can be used for the heap. There may be other settings, such as the available swap space or "ulimit" settings that mean that the heap can't grow to this size. It's generally a bad idea to allow the heap to grow much above the size of the physical memory because garbage-collection will cause the whole of the heap to be swapped in and out of memory. However, the control is on virtual memory not physical memory.
David
Thanks, David.
Digging into the issue it might be that the polyml in question uses 32 bit addressing an that is the problem.
How can I check whether a polyml is 32 or 64 bit?
Run `file /usr/bin/poly` (or equivalent).
James
On 04/12/2018 15:59, buday.gergely at uni-eszterhazy.hu wrote:> Digging into the issue it might be that the polyml in question uses 32 bit addressing an that is the problem.
How can I check whether a polyml is 32 or 64 bit?
PolyML.architecture() or Word.wordSize . The value of Word.wordSize will be 31 in 32 bit mode or 63 in 64 bit mode.
If you are using the 32-bit version you will be limited to less than 4Gbytes whatever you do.
David
On 4 Dec 2018, at 13:00, Gergely Buday <buday.gergely at uni-eszterhazy.hu> wrote:
Hi,
https://polyml.inf.ed.ac.narkive.com/c53BJE4q/run-out-of-store-interrupting- threads
says that setting --maxheap with polyml can fix this problem.
Does this memory allocation necessarily mean _physical_ memory allocation or the operating system can use swap space to have the necessary memory?
Crudely, you can think of this as the maximum amount Poly/ML will malloc, so no, this is not physical memory allocation, this is just plain old virtual memory allocation that can be paged in/out by the operating system.
James