在Linux中的程序启动之前预先分配内存

在Linux中的程序启动之前预先分配内存,linux,memory,scientific-computing,Linux,Memory,Scientific Computing,我有一个程序,使用cholesky分解反复求解大型线性方程组。其特点是,我有时需要存储完整的因式分解,它可以超过大约20GB的内存。分解发生在我称之为的库中。此外,该矩阵和由此产生的因式分解变化相当频繁,因此内存需求也会发生变化 我不是唯一使用此计算节点的人。因此,是否有办法在Linux下启动程序并为进程预先分配可用内存 类似于:$:prealloc-m 25G./program我会不顾一切地说,我认为Linux下没有这种方法。我认为Linux(以及我使用过或听说过的所有其他多任务o/s)的理念

我有一个程序,使用cholesky分解反复求解大型线性方程组。其特点是,我有时需要存储完整的因式分解,它可以超过大约20GB的内存。分解发生在我称之为的库中。此外,该矩阵和由此产生的因式分解变化相当频繁,因此内存需求也会发生变化

我不是唯一使用此计算节点的人。因此,是否有办法在Linux下启动程序并为进程预先分配可用内存


类似于:
$:prealloc-m 25G./program

我会不顾一切地说,我认为Linux下没有这种方法。我认为Linux(以及我使用过或听说过的所有其他多任务o/s)的理念是给程序员(和程序)一种错觉,认为他们拥有计算机的全部内存可供使用,并使程序员很难干扰o/s


相反,我认为您应该计划修改您的程序,以获取它启动时将(或可能)需要的内存,也就是说,无论您选择的语言是什么,您都应该自己进行内存管理。考虑到对库的调用,这对您来说有多容易,我不知道。

我会不顾一切地说,我认为在Linux下没有这样的方法。我认为Linux(以及我使用过或听说过的所有其他多任务o/s)的理念是给程序员(和程序)一种错觉,认为他们拥有计算机的全部内存可供使用,并使程序员很难干扰o/s


相反,我认为您应该计划修改您的程序,以获取它启动时将(或可能)需要的内存,也就是说,无论您选择的语言是什么,您都应该自己进行内存管理。考虑到打电话到图书馆,这对你来说有多容易,我不知道。

我从来没有听说过这样的方法。通常情况下,如果一个程序继续运行并占用了所有可用内存,那么对节点上的其他用户来说是不好的。这不是个好习惯

但撇开观点不谈,我可能会以这样一种方式编写我的程序,它就像一个小环境,能够多次运行所讨论的例程而不会结束。它将在启动时分配大量内存,然后等待用户命令(通过一个最小的shell),并使用分配的内存池请求运行。它将保留池,直到用户请求终止


当然,这需要您在节点上有一个交互式会话,而您可能没有。

我从来没有听说过这种方式。通常情况下,如果一个程序继续运行并占用了所有可用内存,那么对节点上的其他用户来说是不好的。这不是个好习惯

但撇开观点不谈,我可能会以这样一种方式编写我的程序,它就像一个小环境,能够多次运行所讨论的例程而不会结束。它将在启动时分配大量内存,然后等待用户命令(通过一个最小的shell),并使用分配的内存池请求运行。它将保留池,直到用户请求终止


当然,这需要您在节点上有一个交互式会话,而您可能没有。

否,不幸的是,这不是一个选项。无论如何,谢谢你的努力。不,不幸的是这不是一个选择。无论如何,谢谢你的努力。