View Issue Details

IDProjectCategoryView StatusLast Update
0001823OpenFOAMBugpublic2015-08-28 10:20
Reporteruser1212Assigned Tohenry  
PrioritynormalSeveritycrashReproducibilityalways
Status closedResolutionno change required 
PlatformCentOS release 6.5 (Final)OSLinuxOS Version2.6
Summary0001823: Simulation crashes at start while gathering viewFactors
DescriptionI simulate a Testcase with radiation. The viewFactor model is choosen and i vary the number of Agglomerates. Until the number of 35000 Agglomerates everthing works fine. When i increase the number to 70000 i get the following error:
 addr2line failed
[8] #1 Foam::sigSegv::sigHandler(int) addr2line failed
[8] #2 ? addr2line failed
[8] #3 Foam::UOPstream::write(char) addr2line failed
[8] #4 Foam::UOPstream::write(int) addr2line failed
[8] #5 Foam::operator<<(Foam::Ostream&, int) addr2line failed
[8] #6 Foam::Ostream& Foam::operator<< <double>(Foam::Ostream&, Foam::UList<double> const&)
[8] #7 Foam::Ostream& Foam::operator<< <Foam::List<double> >(Foam::Ostream&, Foam::UList<Foam::List<double> > const&) addr2line failed
[8] #8 void Foam::Pstream::gatherList<Foam::List<Foam::List<double> > >(Foam::List<Foam::UPstream::commsStruct> const&, Foam::List<Foam::List<Foam::List<double> > >&, int, int) addr2line failed
[8] #9 Foam::radiation::viewFactor::initialise() addr2line failed
[8] #10 Foam::radiation::viewFactor::viewFactor(Foam::GeometricField<double, Foam::fvPatchField, Foam::volMesh> const&) addr2line failed
[8] #11 Foam::radiation::radiationModel::addTConstructorToTable<Foam::radiation::viewFactor>::New(Foam::GeometricField<double, Foam::fvPatchField, Foam::volMesh> const&) addr2line failed
[8] #12 Foam::radiation::radiationModel::New(Foam::GeometricField<double, Foam::fvPatchField, Foam::volMesh> const&) addr2line failed
[8] #13 ?
[8] #14 __libc_start_main addr2line failed
[8] #15 ?



I searched in the code and it crashes in the viewFactor.C file in line 165 in the function " Pstream::gatherList(F); "

Perhaps, the error occures because the F files are to big for the gathering.
Mesh is splitted in 16 processors all F files together are about 10GB. I use the chtMultiRegionSimpleFoam.

1. In my opinion the error is not describing the problem for the crash.

2. Where does the error really come from? Looking at my memory usage, it looks not like a problem of the hardware.

best regards

Robin
Steps To Reproduce- generate blockMesh with enough boundary faces
- faceAgglomerate to over 70000 Agglomerates
- viewFactorsGen to generate the F files
- start calculation with viewFactor model for Radiation
TagsNo tags attached.

Activities

henry

2015-08-12 13:24

manager   ~0005224

Which version of OpenFOAM are you running?

user1212

2015-08-12 13:28

  ~0005225

I use the version 2.4.x

user1212

2015-08-13 14:32

  ~0005227

I searched a bit around and i think the problem could be, that my labels are only int and not long. I tried an other Case with more boundary faces and 60000 agglomerates. Now viewFactorsGen is crashing with out of memory error, which is interesting, because in the other case 70000 agglomerates where no problem and watching my memory, there are 80% free.
The crash here is while :
"
forAll(compactMap, procI)
    {
        const Map<label>& localToCompactMap = compactMap[procI];
        forAllConstIter(Map<label>, localToCompactMap, iter)
        {
            compactToGlobal[iter()] = globalNumbering.toGlobal
            (
                procI,
                iter.key()
            );
        }
    }
"
in the viewFactorsGen.C

It looks like the HashTable have not enough entries. But i have an 64bit system, so i wonder why...
I read about a foam_label64 entry, is that necessary?
Where can i check if i have 64bit labels?
best regards

wyldckat

2015-08-13 14:58

updater   ~0005229

@RobinZ: label64 is only available in the repository OpenFOAM-dev. You will have to set the new environment variable: WM_LABEL_SIZE=64

user1212

2015-08-14 08:34

  ~0005240

Thank you very much!
But are you sure with the variables?
I looked up labe.C and label.H from OF dev and OF 2.4.x in github.
There is a if look up for FOAM_LABEL64 in OF 2.4.x and in the dev is chek if WM_LABEL_SIZE=64.

user1212

2015-08-14 09:24

  ~0005241

Changing the labelSize ended in compiler errors for some applications.
I will try to check if this option will help me.
Thinking on other errors while working with the viewFactor model i believe the problem are the hashTables, which are defined by labels and with int32 the hashTables are not big enough for the number of rays between the agglomerates.
Is it possible to make bigger hashTables without changing the labelSize?

wyldckat

2015-08-16 23:33

updater   ~0005244

@RobinZ: I haven't taken a look at the source code to double-check, but I'm expecting that creating a hacked version just for handling hashTables with 64-bit integers will also require you to change the "forAll" loops that are hard-coded to rely on 32-bit integers for parsing these hashTables.

As for 2.4.x: it's not properly prepared for handling 64-bit integers, as the implementation was only finished in OpenFOAM-dev. See https://github.com/OpenFOAM/OpenFOAM-dev/commit/2a614865fff303855db7403e145452f909e23ffa for more details on most of the changes that were needed for finishing the support for 64-bit labels (integers). There you'll also find in the comment the reason why "WM_LABEL_SIZE" is the environment variable that is configurable for this.

user1212

2015-08-25 14:55

  ~0005294

I have done some simulations with the OpenFOAM dev version in 64bit for integers. I was able to compute my case without the error. But i think it is not efficient to run OpenFOAM with 64bit integers, when i only need the hashTables and labelLists for my radiation files in 64bit. The RAM usage is higher and it is more difficult to compile OF and all the things around it.
Can you please change the list and hashTable length from label to long, for the list and hashtables used for radiation files like F.
I know temporary the hashTable keys are only initialized by labels, but for radiation are long variables more useful.

best regards

Robin

henry

2015-08-25 15:14

manager   ~0005295

Your suggested change would require the container classes to be templated on the index type so that the view-factor code can specifically use int64_t for cases which would require it. Additionally this has not been needed by other users so additional control would need to be added to the build process to select what parts of the code should be built with int64_t addressing and which with int32_t and the addition of code to interface between these parts.

All this would be a VERY large undertaking and only needed by a small number of users. If you are in a position to sponsor this development we can discuss the requirements in more detail and estimate the cost otherwise you can continue with the WM_LABEL_SIZE=64 build.

user1212

2015-08-28 09:47

  ~0005308

Ok, i expected this kind of answer.

The initial error of my simulation is solved.

So you can close this bugreport.

Thanks for your time and assessment

Issue History

Date Modified Username Field Change
2015-08-12 12:46 user1212 New Issue
2015-08-12 13:24 henry Note Added: 0005224
2015-08-12 13:28 user1212 Note Added: 0005225
2015-08-13 14:32 user1212 Note Added: 0005227
2015-08-13 14:55 wyldckat Product Version => 2.4.x
2015-08-13 14:58 wyldckat Note Added: 0005229
2015-08-14 08:34 user1212 Note Added: 0005240
2015-08-14 09:24 user1212 Note Added: 0005241
2015-08-16 23:33 wyldckat Note Added: 0005244
2015-08-25 14:55 user1212 Note Added: 0005294
2015-08-25 15:14 henry Note Added: 0005295
2015-08-28 09:47 user1212 Note Added: 0005308
2015-08-28 10:19 henry Status new => closed
2015-08-28 10:20 henry Assigned To => henry
2015-08-28 10:20 henry Resolution open => no change required