- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
I have case where the order of the USE statements have a huge effect on the compiler's memory usage.
The attached archive contains two folders, one called memory_usage and another called build_memory_usage. To build the example it should be as simple as:
[bash]$ cd build_memory_usage
$ cmake ../memory_usage
$ make[/bash]
Hence, it is necessary to have cmake installed to build the test examples.
As the code is now, it should build without any problem until it reaches the test_body (its source is located memory_usage/src/tests). I can not build it with 4GB ram. But there are several ways to make the program compile, but I do not think they should be relevant:
1) Commenting out USE HS2String ensures that the program compiles, and as the comments in that program explain: It is also possible to use the same statement at the beginning of the list of USE statements without any issue.
2) Remove "USE HS2Orbit, ONLY: HSJPLOrbit" in each of the appos funtions within "memory_usage/src/libs/hsspace/hsbody/hsbody.f90" and adding one at the beginning of the module (and leaving test_body.f90 in its original state)
3) Remove all code relevant to the private object HSNumOrbit in "memory_usage/src/libs/hsspace/hsorbit/hsorbit.f90" and the code compiles with reasonable memory usage again (that is a few percent of the available ram)
This is with intel fortran 2013.0.079 on openSUSE 12.2 x86_64
Link Copied
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
I have just come across an internal compiler error that might be relevant to the one reported above. That problem can be worked around by either moving a USE statement from a subroutine to the beginning of the module or by switching the order of two USE statements at the beginning of the module. (The last work-around results again in significant memory usage) The full error message is:
/home/oyo/tmp/Heliosat2/src/ephemeris/access.f90(43): error #6404: This name does not have a type, and must have an explicit type. [COMPUTEACCESSPOLYGON%HSNUMORBIT] CONTAINS ^ /home/oyo/tmp/Heliosat2/src/ephemeris/access.f90(374): catastrophic error: Internal Compiler Error: possible out of order or missing USE compilation aborted for /home/oyo/tmp/Heliosat2/src/ephemeris/access.f90 (code 1)
Do you want me to upload an example here or open a new thread?
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi,
Does the 13.0 update 2 version solve the huge memory use during compilation?
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi,
13.0 update 2 does not solve the huge memory use during compilation. It is still an order of magnitude slower than 12.1 update 6, which I am still using.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
The latest release 13.1.1 does not solve this memory problem. I have tested the complete software on a machine with 16 GB of RAM. That was not sufficient.
I have done a rewrite of the software. That version does not have a significant memory problem, but now I get extremely long compile times, i.e. 12+ hours. I do not know why the memory problem has gone away.
Would it be useful if I uploaded the full version of my old code and the current one?
- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Printer Friendly Page