sponce wrote:Dear balabi,
Roxana is the expert in the superconducting part of EPW. I will try to answer what I can:
- Yes you need 60x60x60 k and 30x30x30 q and yes its going to be quite expansive.
- for the absolute and relative error. You can have the difference of two very small numbers that is sizeable but their absolute value very small
- T=60K is above the T_c, therefore the code cannot solve the Eliashberg equation. The superconducting gap are 0 at that temperature.
- Note that the Tc depend on the fine grids you are using. With 30x30x30 k-grid it might not be fully converged
- AKeri is the kernel used in Eliashberg. You can try to raise max_memlt to make it fast (everything in memory). On the fly means its reading/writing data instead of having everything in memory. Off course you need to have enough memory on your cluster.
- You should definitely parallelize across nodes using MPI. EPW perform well, see scaling tests:
http://epw.org.uk/Main/Benchmarks- For the restart, I think you need to set elph to true.
Best,
Samuel
Dear Samuel,
Thank you so much for patient explanation.
About restart, I am quite confused. I think EPW could make restart a little easier. At the present time, there is so much switches to care about.
I now have tried several combinations of below parameters
Code: Select all
ep_coupling = .true.
elph = .true.
kmaps = .false.
epbwrite = .true.
epbread = .false.
epwwrite = .true.
epwread = .false.
ephwrite = .true.
wannierize = .true.
The above setting is non-restart setting.
Then I tried to modify the switches. First, I set
Code: Select all
epwwrite = .false. epwread = .true. kmaps=.true.
this is according to the input doc. But this is not enough, I will got "must use same w90 rotation matrix for entire run" until I set
At this stage, the epw.out print out
------------------------------------------------------------------------
RESTART - RESTART - RESTART - RESTART
Restart is done without reading PWSCF save file.
Be aware that some consistency checks are therefore not done.
------------------------------------------------------------------------
it seems that I am on the right track. And yes it works, but with some repeated work.
First, it recalculate epb file. So I tried to set
Code: Select all
epbwrite = .false. epbread = .true.
in order to read epb file instead of recalculate epb file. But surprisingly, it doesn't work. It also brings error below
forrtl: severe (67): input statement requires too much data, unit 105, file /fs10/home/qhw_wang/HPC-nj/quantum_espresso/qe-dev-20170913/q-e/EPW/examples/mgb2-new/coarse_epw_grid_10/./MgB2.epb15
Image PC Routine Line Source
epw.x 0000000000F03356 Unknown Unknown Unknown
epw.x 0000000000F36A1E Unknown Unknown Unknown
epw.x 0000000000447B91 elphon_shuffle_wr 698 elphon_shuffle_wrap.f90
epw.x 0000000000407914 MAIN__ 150 epw.f90
epw.x 0000000000406C5E Unknown Unknown Unknown
libc-2.17.so 00002B2DA9553B35 __libc_start_main Unknown Unknown
epw.x 0000000000406B69 Unknown Unknown Unknown
forrtl: severe (67): input statement requires too much data, unit 105, file /fs10/home/qhw_wang/HPC-nj/quantum_espresso/qe-dev-20170913/q-e/EPW/examples/mgb2-new/coarse_epw_grid_10/./MgB2.epb1
Image PC Routine Line Source
epw.x 0000000000F03356 Unknown Unknown Unknown
.....
....
It turns out I have to set both option to false, like
Code: Select all
epbwrite = .false. epbread = .false.
But why?
Second, it recalculate ephmat. So I set
OK, now it doesn't recalculate ephmat. But I notice there is a step which is still quite time consuming for fine grid, that is
Number of ep-matrix elements per pool : 16443 ~= 128.46 Kb (@ 8 bytes/ DP)
Progression iq (fine) = 50/ 64000
Progression iq (fine) = 100/ 64000
Progression iq (fine) = 150/ 64000
Progression iq (fine) = 200/ 64000
Progression iq (fine) = 250/ 64000
...
...
I want to know what is this step? the above result is from fine grid 40x40x40. And it increases with 50 as a step, until it reaches 64000. But it took an hour only reach 49000 on a 16 core machine.
Is it possible to skip this step? I feel like this is also repeated work. Am I right?
Finally, in the input doc, item "eliashberg", there is a sentence
Note: To reuse .ephmat, .freq, .egnv, .ikmap files obtained in a previous run, one needs to set ep_coupling=.false., elph=.false., and ephwrite=.false. in the input file.
But you said to make elph=.true. I don't understand what does this sentence mean.
Anyway, I tried to set below further
But I got errors
Error in routine invmat (1): error in DGETRF
Why this error?
finally, I still want to know How to estimate memory per pool before calculation, why this memory usage scale with grid so badly?
best regards