CFD Online Discussion Forums

CFD Online Discussion Forums (http://www.cfd-online.com/Forums/)
-   CFX (http://www.cfd-online.com/Forums/cfx/)
-   -   Available memory VS physical memory (http://www.cfd-online.com/Forums/cfx/63052-available-memory-vs-physical-memory.html)

Jasmine March 26, 2009 18:09

Available memory VS physical memory
 
Hey,

My PC has 4GB memory, WinXP OS, 2.13GHz, Intel(R) Core(TM)2CPU. But when CFX-solver is running, the task manager shows the folloing informatin for Physical memory: Total - 3405568K, Available -913378K, System Cache-734628K. The CPU usage is around 50%, PF usage 2.37GB.

I try to change the memory allocation factor to 1.1 or so, but error message, like out of memory appears. :(

Siva_aero March 27, 2009 06:16

Hi Jasmine

wat is ur mesh size? and ur RAM is it 4GB? u can go up to memory allocation factor of 1.5, but to be honest based on our experinece windows workstations with 4 processors can handle only a mesh size up to 1.5 Million max

Timon March 27, 2009 06:50

32bit or 64bit XP? 32bit only supports 3GB of ram, the extra GB is not functional in that case.

CycLone March 27, 2009 14:06

Actually, 32 bit only supports 2 GB per process (2^31, with 1 bit for the sign). The 3 GB limit you mention is the addressable space for the OS.

Physical RAM has nothing to do with addressable space. The operating system allows processes to address virtual memory, which it then moves between the disk and RAM depending on how recently it has been used and the available RAM.

On 32 bit machine, the call to memory, malloc(), can accept a 32 bit signed integer, meaning that one bit is the sign (+/-) and the other 31 bits the size, hence the 2 GB limit. The signed integer par is actually a hardware limitiation, so a 32 bit OS running on 64 bit hardware can allocate 2^32 or 64 bytes of RAM.

In practice, because CFX manages its own memory, the solver will allocate all the required memory in a single malloc() call. When this call is made, the OS must return a single contiguous chunk of RAM, so the practical limit may be less than 2 GB if there is a lot of other stuff in memory and the OS cannot find a large contiguous chunk. Windows is notorious for this because of DLL's it preloads into memory. Typically the maximum available memory is about 1.6 to 1.9 GB, but I have seen it as low as 900 MB!

All that said, did your job run without changing the memory allocation parameters? If not, what did the message in the OUT file say?

-CycLone

Jasmine March 27, 2009 14:39

Thanks for you guys'r replies. Yes, I am using Window XP32.
Finally I run the code without change the allocation factor (the default setting is 1). in the out file, I found this info. is this what your mean by out file,CycLone?
+--------------------------------------------------------------------+
| Memory Allocated for Run (Actual usage may be less) |
+--------------------------------------------------------------------+
Data Type Kwords Words/Node Words/Elem Kbytes Bytes/Node

Real 19998.3 24.24 9.25 78118.2 96.94
Integer 27448.3 33.26 12.70 107220.1 133.06
Character 200.0 0.24 0.09 195.3 0.24
Logical 10.0 0.01 0.00 39.1 0.05
Double 300.0 0.36 0.14 2343.8 2.91

CycLone March 29, 2009 22:48

Hi Jasmine,

This is the normal output of the solver. Did you get an error message? If it failed, there will also be an error message indicating whether the solver:

i) could not allocate the required memory, or
ii) did not allocate enough memory.

If it is i), you need to reduce the memory allocation factor (try .9, then .8 and so on). If it is ii), then you need to increase the allocation factor (1.1, 1.2, etc.). There is no guarantee you'll still be able to run, but if you are close to having enough memory then this should work.

-CycLone


All times are GMT -4. The time now is 22:52.