Re: [Phonopy-users] Segmentation fault creating fc3.hdf5
Brought to you by:
atztogo
|
From: Atsushi T. <atz...@gm...> - 2019-01-23 12:25:57
|
Hi Tomas,
Now you can try phono3py in the 'int-to-size_t' branch of phono3py.
Note that you need phonopy (not phono3py) in the 'develop' branch.
Togo
On Tue, Jan 15, 2019 at 12:32 PM Atsushi Togo <atz...@gm...> wrote:
>
> Hi Tomas,
>
> Mind that this is the reply to the mailing list, not directly to you.
>
> I got your data and saw what is the problem. The problem happened
> because some variables in type "int" overflowed. In usual C, (signed)
> int can treat up to ~2^31. Your number of element of fc3 is larger
> than this value. To make your calculation work, those variables have
> to be replaced by other types, i.e., size_t. After working for
> phono3py/c/anharmonic/phonon3/fc3.c, now I could make fc3.hdf5. To run
> phonon-phonon calculation, data type of some other variables should
> have to be also replaced in the same way. For it, I need a bot of time
> to work on it. I will inform you after finishing this job.
>
> Togo
>
> On Mon, Jan 14, 2019 at 5:12 PM Atsushi Togo <atz...@gm...> wrote:
> >
> > Hi Tomas,
> >
> > Thanks for your investigation. Can you send your input files to me to
> > reproduce your problem and to solve this issue?
> >
> > Togo
> >
> > On Mon, Jan 14, 2019 at 5:02 PM Tomas Kamencek
> > <tom...@st...> wrote:
> > >
> > > Dear Prof. Togo or whoever has an idea for a solution,
> > >
> > > I want to calculate the lattice thermal conductivity for a system with 184 atoms in the unit cell. (This is a non-primitive unit cell. The primitive one has only 46 atoms.) I carried out all the calculations for the 2x2x2 supercell of this non-primitive unit cell (i.e. 1472 atoms in total).
> > > However, when I try to calculate the third order force constants from the FORCES_FC3 file, I always end up with a segmentation fault after the same step. I calculated the thermal conductivity of different systems using exactly the same approach without problem in the past, but for the present case I am stuck at this point. For anybody who might provide some ideas, what the I could do to solve my problem, I will describe what I did so far:
> > >
> > > I run phono3py with the following command in order to produce the fc3.hdf5 file.
> > >
> > > phono3py -v --dim="2 2 2" -c POSCAR --sym-fc --pa="0 1/2 1/2 1/2 0 1/2 1/2 1/2 0" --cfc
> > >
> > > During phono3py's attempt to calculate the third order force constants, I monitored the memory usage of the computation nodes and it was still significantly below the upper limit (at least, when I use the --cfc option).
> > >
> > > The following output is produced during the calculation of the 3rd order force constants:
> > >
> > > ...
> > > ----------------------------- Force constants ------------------------------
> > > Imposing translational and index exchange symmetry to fc2: True
> > > Imposing translational and index exchange symmetry to fc3: True
> > > Imposing symmetry of index exchange to fc3 in reciprocal space: False
> > > Displacement dataset for fc3 is read from disp_fc3.yaml.
> > > Sets of supercell forces are read from FORCES_FC3.
> > > Computing fc3[ 1, x, x ] using numpy.linalg.pinv with displacements:
> > > [ 0.0300 0.0000 0.0000]
> > > [-0.0300 0.0000 0.0000]
> > > Computing fc3[ 257, x, x ] using numpy.linalg.pinv with a displacement:
> > > [ 0.0300 0.0000 0.0000]
> > > Computing fc3[ 265, x, x ] using numpy.linalg.pinv with displacements:
> > > [ 0.0300 0.0000 0.0000]
> > > [-0.0300 0.0000 0.0000]
> > > [ 0.0000 0.0000 0.0300]
> > > [ 0.0000 0.0000 -0.0300]
> > > Computing fc3[ 1089, x, x ] using numpy.linalg.pinv with displacements:
> > > [ 0.0300 0.0000 0.0000]
> > > [ 0.0000 0.0000 0.0300]
> > > [ 0.0000 0.0000 -0.0300]
> > > Segmentation fault
> > >
> > >
> > > I tried to track down the source of the error by forcing the code to print more output. I used the print statement of line 134-136 in the file fc3.py:
> > >
> > > if verbose > 2:
> > > print(" [ %d, x, x ] to [ %d, x, x ]" %
> > > (i_done + 1, i_target + 1))
> > >
> > > The last lines that were printed, were the following:
> > >
> > > ...
> > > [ 1089, x, x ] to [ 1177, x, x ]
> > > Segmentation fault
> > >
> > > I was able to find out that the problem seems to happen somewhere inside the phono3c.distribute_fc3(fc3,......) method in line 141-145 in fc3.py For that reason, I tried to deliberately jump to the ordinary double loop (the except ImportError option in lines 146f) instead.
> > >
> > > There I encountered a small bug, that probably does not show up very often, since this exception is very unlikely to be reached.
> > >
> > > I think lines 152-153 should read
> > >
> > > fc3[int(s2compact[i_target]), j, k] = third_rank_tensor_rotation(
> > > rot_cart_inv, fc3[int(s2compact[i_done]), j_rot, k_rot])
> > >
> > > instead of
> > >
> > > fc3[i_target, j, k] = third_rank_tensor_rotation(
> > > rot_cart_inv, fc3[i_done, j_rot, k_rot])
> > >
> > > Nevertheless, the segmentation fault occurs at the same position. Therefore, I wonder if there is some internal limitation anybody is aware of, which prevents the calculation of the third order force constants for large systems.
> > >
> > > I would be very grateful for any help! Thanks in advance for your time!
> > >
> > > Best regards,
> > > Tomas Kamencek
> > >
> > > _______________________________________________
> > > Phonopy-users mailing list
> > > Pho...@li...
> > > https://lists.sourceforge.net/lists/listinfo/phonopy-users
> >
> >
> >
> > --
> > Atsushi Togo
> > Elements Strategy Initiative for Structural Materials, Kyoto university
> > E-mail: atz...@gm...
>
>
>
> --
> Atsushi Togo
> Elements Strategy Initiative for Structural Materials, Kyoto university
> E-mail: atz...@gm...
--
Atsushi Togo
Elements Strategy Initiative for Structural Materials, Kyoto university
E-mail: atz...@gm...
|