QEF / SternheimerGW

many-body perturbation theory without empty states
http://www.sternheimergw.org/
GNU General Public License v3.0
11 stars 5 forks source link

Error in routine davcio (28) #3

Open mohammadidinani opened 5 years ago

mohammadidinani commented 5 years ago

I am getting the following error when running GW compiled with Intel compiler. However, the same setup works fine with GCC!

     Error in routine davcio (28):
     error while reading from file "tmp/_gw0/__prefix__.coul1"

This is the input file.


! config of the scf run
  prefix         = '__prefix__'
  outdir         = 'tmp'

 ! the grid used for the linear response
  kpt_grid       = 2, 2, 2
  qpt_grid       = 2, 2, 2

  ! number of bands for which the GW correction is calculated
  num_band       = 8

  ! configuration of W in the convolution
  max_freq_coul  = 200
  num_freq_coul  = 51

  ! configuration for the correlation self energy
  ecut_corr      = 6.0

  ! configuration for the exchange self energy
  ecut_exch      = 15.0
/

&gw_output
/

FREQUENCIES
2
  0.0    0.0
  0.0    10.0
/

K_points
11
   0.000000000   0.000000000   0.000000000
   0.000000000   0.000000000   0.074999996
   0.000000000   0.000000000   0.149999992
   0.000000000   0.000000000   0.224999988
   0.000000000   0.000000000   0.299999984
   0.000000000   0.000000000   0.374999980
   0.000000000   0.000000000   0.449999976
   0.000000000   0.000000000   0.524999972
   0.000000000   0.000000000   0.599999968
   0.000000000   0.000000000   0.674999964
   0.000000000   0.000000000   0.749999960

/
martin-schlipf commented 5 years ago

I would need to see the output file and/or the make.inc file to understand what is happening.

mohammadidinani commented 5 years ago

I could fix the issue by setting -assume byterecl compiler option and run the Silicon example. However, if I try to use different pseudopotentials as below I get segmentation fault error:

FCFLAGS: -O3 -xAVX -fno-alias -ansi-alias -g -mkl

PW_SCF input

&CONTROL
    calculation = 'scf'
    title = ''
    verbosity = 'low'
    restart_mode = 'from_scratch'
    wf_collect = .true.
    tstress = .true.
    tprnfor = .true.
    outdir = 'tmp'
    wfcdir = 'tmp'
    prefix = '__prefix__'
    pseudo_dir = 'pseudo'
/
&SYSTEM
    ibrav = 0
    nat = 2
    ntyp = 1
    ecutwfc = 40
    ecutrho = 200
    occupations = 'smearing'
    degauss = 0.005
/
&ELECTRONS
    diagonalization = 'david'
    diago_david_ndim = 4
    diago_full_acc = .true.
    mixing_beta = 0.3
    startingwfc = 'atomic+random'
/
&IONS
/
&CELL
/
ATOMIC_SPECIES
Si 28.0855 si_pbe_gbrv_1.0.upf
ATOMIC_POSITIONS crystal
Si 0.000000000 0.000000000 0.000000000
Si 0.250000000 0.250000000 0.250000000
CELL_PARAMETERS angstrom
3.348920000 0.000000000 1.933500000
1.116307000 3.157392000 1.933500000
0.000000000 0.000000000 3.867000000
K_POINTS automatic
8 8 8 0 0 0 

GW input:

&gw_input

  ! config of the scf run
  prefix         = '__prefix__'
  outdir         = 'tmp'

  ! the grid used for the linear response
  kpt_grid       = 4, 4, 4
  qpt_grid       = 4, 4, 4

  ! number of bands for which the GW correction is calculated
  num_band       = 8

  ! configuration of W in the convolution
  max_freq_coul  = 200
  num_freq_coul  = 51

  ! configuration for the correlation self energy
  ecut_corr      = 6.0

  ! configuration for the exchange self energy
  ecut_exch      = 15.0
/

&gw_output
/

FREQUENCIES
35
  0.0    0.0
  0.0    0.3
  0.0    0.9
  0.0    1.8
  0.0    3.0
  0.0    4.5
  0.0    6.3
  0.0    8.4
  0.0   10.8
  0.0   13.5
  0.0   16.5
  0.0   19.8
  0.0   23.4
  0.0   27.3
  0.0   31.5
  0.0   36.0
  0.0   40.8
  0.0   45.9
  0.0   51.3
  0.0   57.0
  0.0   63.0
  0.0   69.3
  0.0   75.9
  0.0   82.8
  0.0   90.0
  0.0   97.5
  0.0  105.3
  0.0  113.4
  0.0  121.8
  0.0  130.5
  0.0  139.5
  0.0  148.8
  0.0  158.4
  0.0  168.3
  0.0  178.5
/

K_points
11
   0.000000000   0.000000000   0.000000000
   0.000000000   0.000000000   0.074999996
   0.000000000   0.000000000   0.149999992
   0.000000000   0.000000000   0.224999988
   0.000000000   0.000000000   0.299999984
   0.000000000   0.000000000   0.374999980
   0.000000000   0.000000000   0.449999976
   0.000000000   0.000000000   0.524999972
   0.000000000   0.000000000   0.599999968
   0.000000000   0.000000000   0.674999964
   0.000000000   0.000000000   0.749999960

/

Error:


    -1.7720  -1.7720   3.1804   3.1804   6.7332   6.7332  15.9054  15.9054

     the Fermi energy is     6.4091 ev

     Writing output data file __prefix__.save/
WARNING: You have given a kpoint not in original BZ.This could mean full symmetry is not exploited.

     evaluate self energy for k = (  0.0000  0.0000  0.0000 )
     k + q = (  0.0000  0.0000  0.0000 )  G:     15.14s  G*W:     8.19s
     k + q = (  0.1443  0.1021 -0.2500 )  G:     18.98s  G*W:     7.73s
     k + q = (  0.1443  0.1021  0.2500 )  G:     18.46s  G*W:     7.44s
     k + q = ( -0.1443 -0.1021  0.2500 )  G:     18.59s  G*W:     7.61s
     k + q = ( -0.1443 -0.1021 -0.2500 )  G:     19.72s  G*W:     7.96s
     k + q = ( -0.2887 -0.2041  0.5000 )  G:     17.95s  G*W:     7.43s
     k + q = ( -0.2887 -0.2041 -0.5000 )  G:     16.84s  G*W:     7.69s
     k + q = (  0.0000 -0.3062  0.0000 )  G:     17.70s  G*W:     7.85s

    k0(  1 ) = (  0.000  0.000  0.000 )

    k0(  1 ) = (  0.000  0.000  0.000 )
forrtl: severe (174): SIGSEGV, segmentation fault occurred
Image              PC                Routine            Line        Source             

Stack trace terminated abnormally.

I tried to use heap instead of stack (--heap-arrays) but gw does not start:

FCFLAGS: -O3 -heap-arrays -xAVX -fno-alias -ansi-alias -g -mkl


     End of band structure calculation

     Number of k-points >= 100: set verbosity='high' to print the bands.

     the Fermi energy is     6.4091 ev

     Writing output data file __prefix__.save/
*** Error in `gw.x': free(): invalid pointer: 0x00007ffe1b70bd30 ***
======= Backtrace: =========
/lib64/libc.so.6(+0x81499)[0x2b8cff2fc499]
gw.x[0xe44cdc]
gw.x[0x468109]
gw.x[0x45c169]
gw.x[0x43fd07]
gw.x[0x43612e]
gw.x[0x41bc8e]
gw.x[0x406a34]
gw.x[0x4068d6]
/lib64/libc.so.6(__libc_start_main+0xf5)[0x2b8cff29d445]
gw.x[0x4067c9]
======= Memory map: ========
00400000-0122e000 r-xp 00000000 00:2a 2159856474                         gw.x
0142e000-01432000 r--p 00e2e000 00:2a 2159856474                         gw.x
01432000-01494000 rw-p 00e32000 00:2a 2159856474                         gw.x
01494000-027f0000 rw-p 00000000 00:00 0 
03041000-04529000 rw-p 00000000 00:00 0                                  [heap]
2b8cfa0a3000-2b8cfa0c5000 r-xp 00000000 08:01 100749243                  /usr/lib64/ld-2.17.so
2b8cfa0c5000-2b8cfa0c9000 rw-p 00000000 00:00 0 
2b8cfa0d8000-2b8cfa0ff000 rw-p 00000000 00:00 0 
2b8cfa0ff000-2b8cfa140000 rw-s 00000000 00:13 34030                      /dev/shm/Intel_MPI_TD9mrX (deleted)
2b8cfa140000-2b8cfa181000 rw-s 00000000 00:13 31169                      /dev/shm/Intel_MPI_TcdzsX (deleted)
2b8cfa181000-2b8cfa27f000 rw-p 00000000 00:00 0 
2b8cfa2c4000-2b8cfa2c5000 r--p 00021000 08:01 100749243                  /usr/lib64/ld-2.17.so
2b8cfa2c5000-2b8cfa2c6000 rw-p 00022000 08:01 100749243                  /usr/lib64/ld-2.17.so
martin-schlipf commented 5 years ago

A few questions

mohammadidinani commented 5 years ago

Thanks for the points, Martin.

  1. We try to use a general workflow for different materials that is why the smearing is set.

  2. It would be great to show a warning/error message when non-supported pseudopotentials are used.

    1. The calculation does not seem to need large memory

     Memory Usage:

     G(G, G'; w):            0.7 MB
     G(r, r'; w):            2.5 MB
     W(G, G'; w):            0.5 MB
     W(r, r'):               0.0 MB
     Sigma(G, G'; w):        0.1 MB
     Sigma(r, r'; w):        0.3 MB
     V(G, G'):               0.1 MB
     V(r, r'):               0.9 MB