brown170 / CorAL

Correlation Algorithm Library, for analysis of femptoscopy data
Other
2 stars 1 forks source link

CorAL segfaulting #5

Open brown170 opened 3 years ago

brown170 commented 3 years ago

Please find the input file of crab that I used to generate the hbt_only correlations. After doing

> $crab -3dsphr test_crab_input.dat

the code got stuck while unimaging the 4_1 im term.

test_crab_input.txt

brown170 commented 3 years ago

More information about the bug:

The code was stuck for a long time while unimaging the 4_1 im term. To find out what is happening I used the "top" command in Linux and it seemed that it was taking too much memory. (Memory % is increasing with time.) May be the matrix calculation was too much hectic.

brown170 commented 3 years ago

Yet more from Subhadip:

The unimaging gets stuck at 4_1_im term when I used the "HBT_only Kernel" for l_max > 2. I have used a different kernel with "Coulomb interaction on" previously, which worked fine. I am attaching the command prompts for that kernel. You can notice that the order of unimaging goes like this: First, it tries to unimage all the imaginary parts then goes for the real ones. And also the order follows the trend l_1, l+2_1, l+4_1......, l_2, l+2_2, l+4_2,..... When I set lmax = 4 for the HBT_only kernel, it unimages the 2_1_im term perfectly and tries to unimage 4_1_im term where it gets stuck. So, the only terms I can get from this are the 2_1_im terms. When lmax = 2 is set, then I get all the terms corresponding to l = 2, 0. I am guessing CorAL is experiencing some sort of difficulty in generating the matrix while unimaging the terms corresponding to l = 4.

palsgit commented 3 years ago

3dsphr.log The terminal prompts while generating all the correlation terms (lmax = 6) successfully using the Coulomb kernel is shown here. When the hbt_only kernel is used, the code was stuck while unimaging the 4_1 im term.

Afrid165 commented 3 years ago

To integrate vectors, a Fortran code dcuhre (developed in the 1960's at Sandia National Lab) is used in CorAL. For use in CorAL, the code was translated to C/C++ using a code named f2C. f2C is currently not in use now. The array indexing of Fortran starts from 1, while for C/C++ it starts from 0. f2C handles this problem using the bitshift << operator. The precedence of this bitshift operator << ,has changed since the code was written. So, dcuhre is probably accessing the array elements incorrectly leading to memory leaks and segmentation fault.

brown170 commented 3 years ago

dchure is called by CIntegrateVector in integratevec.cc

CIntegrateVector is used in src/coral/Expanders/expander.h in functions buildCart2SphrMtx and buildSphr2CartMtx