OptiStruct支持的操作系统平台如表1-3所示。
表1-3 OptiStruct支持的操作系统平台
在32位的操作系统中,大多数情况下,OptiStruct可以使用不超过2.0 GB的内存(取决于操作系统和系统中安装的其他软件,这个数值通常会更小)。对于32位Windows操作系统,一般可使用1.9 GB内存。注意,使用64位的硬件(扩展64位内存EM64T或64位CPU-AMD64)不会改变这个限定值。
在32位操作系统中,通过以下方法,OptiStruct可以从2GB以上的物理内存中获得有限的性能提升。
➢操作系统和其他与OptiStruct同时运行的程序(如HyperMesh)可以使用额外的内存。
➢OptiStruct要求它所申请的内存是连续的物理内存块。只是当它启动带宽最小化进程时,会额外请求少量内存。在Windows平台中,带宽最小化进程所需的额外内存可以在2GB的内存限制外申请,这就使得一些规模稍大的作业也可以求解。要利用这一特性,必须在Windows启动文件boot.ini中插入语句“/3GB”。这个选项在大多数版本的Windows 2000、Windows XP(需SP2)中有效,但并未出现在微软的官方文档中,因为在某些硬件配置下可能会造成不可预料的崩溃。总之,选项“/3GB”并没有增加可申请到的连续内存的数量,因此对于求解大规模问题帮助有限。
➢32位的Linux系统是唯一支持2GB以上内存的32位系统。在目前大多数版本的Linux系统中,OptiStruct最多可以申请到4GB的内存(如果可用)。一般来说,如果系统内核是2.4或更早版本,它们不允许使用全部的4GB内存,所以应该升级到更高版本。查阅Linux系统文档,可能有某些选项支持大内存。命令“unamea”用来显示Linux内核的版本号。
在64位计算机上,当使用64位版本的OptiStruct和64位操作系统时,OptiStruct可以使用系统中的全部可用内存(物理内存和虚拟内存)。但是,可用内存的大小仍然受到系统内标准整数变量大小的限制,当然这只在很少的情况下发生。目前,OptiStruct的线性求解器有两种版本:一种使用32位整数,另一种使用64位整数。默认使用32位的求解器(需要更少的内存和硬盘并且运行较快)。但当问题达到一定规模时,会自动启用64位求解器。
OptiStruct会自动考量系统内存限制,并在需要的情况下申请尽可能多的内存。当它显示预估的需要的内存时,并不会指出是否超出系统限制(即忽略实际可用的内存大小。因此,当它没有给出核内求解所需要的内存时,说明OptiStruct不能用核内求解来解决这一问题,即使系统没有内存限制)。(www.xing528.com)
➢虚拟内存和物理内存。
OptiStruct能够使用的内存数量多于系统物理内存(即系统安装的物理内存),这就是虚拟内存(交换空间)的作用。但是,如果OptiStruct仅使用物理内存,其效率将会更高(要为操作系统和同时运行的软件保留一部分内存)。当所需的内存超出实际可用物理内存时,因为交换数据,OptiStruct会运行得较慢。此时硬盘持续运行而只占用很少的CPU,并且求解总时间和CPU运行时间之间将会有较大的差别。
通过命令选项“-len”设置OptiStruct使用的内存数量,实际上仅仅是给OptiStruct一个系统可用物理内存数量的提示(也就是说,应该设置为操作系统和其他软件没有使用的那一部分物理内存。从上面的分析可知,这个数量通常低于系统总的物理内存)。基于这些信息,OptiStruct将会决定是否使用核内求解或者在需要的时候使用核外求解或最小核心求解。如果最小核心求解所需内存大于“-len”所给定的内存,OptiStruct将会忽略这个限制而请求它所需要的尽可能多的内存。换句话说,不应高估“-len”选项的作用,它对大型任务没有帮助,相反,它可能会因为过多的使用交换文件而降低数据处理速度。
在大多数机器上,OptiStruct会向系统请求可用的内存信息。这些信息会输出在.out文件的起始部分,根据这一信息,在求解所需要的内存不足时,它会给出求解可能失败的警告。由于可用内存是动态变化的(取决于该机器上同时运行的其他程序),所以OptiStruct内部并不使用它们,而是使用用户提供的数据(例如,“-len”参数或配置文件中的信息)。
➢自动申请内存和固定内存运行。
在标准模式下,OptiStruct会估算需要的内存数量,然后逐步向操作系统申请内存。如果内存是一次申请到的而不是逐渐增加的(特别是对32位的操作系统),内存将会更加高效。用户可以通过命令选项“-fixlen”来设置为一次申请全部所需内存(参考运行参数(RunOptions))。当使用“-fixlen”选项时,OptiStruct可能会由于内存请求错误而在启动后某一时间结束。这种情况发生在“-fixlen”选项非常接近所有系统可用内存时,因为除了OptiStruct求解器需要的内存外,OptiStruct还会启动带宽最小化进程,这个进程需要少量额外的内存。在设置“-fixlen”选项时,设置稍小一些的值或许可以解决这个问题。这又一次说明了不应给OptiStruct指定过多的内存。
➢内存使用的其他设定。
在自动模式下,OptiStruct有一个新的命令选项:“-maxlen”。这个选项可用于设置某些批处理任务,它只允许OptiStruct使用不超过设定值的内存。注意:对于那些需求内存大于这一选项的模型,OptiStruct可能会在计算运行一段时间后终止。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。