I am dealing with molecules in big supercells therefore I only use one k-point. However, I need to obtain huge number of unoccupied states, which could be quite time consuming. To this end, I decided to try to parallelize non self-consistent calculations over bands after running a self-consistent calculation only for occupied bands. I'm not an expert of Abinit but already found out that only k-point parallelization is automatically switched on.
I read through the documentation and variable docs and found that I need to switch on band parallelization via specifying paral_kgb 1 in the input. First I ran the calculation with a negative paral_kgb value so I got in principle good values for the other parameters that govern parallelization. Here is what I set for 6 processors based upon this:
Code: Select all
paral_kgb 1
wfoptalg 4
nloalg 4
fftalg 401
fft_opt_lob 2
npband 2
npfft 3
npkpt 1
The problem is that the calculation (a self-consistent calculation with relatively few number of bands) crashes during the first self-consistent cycle:
Code: Select all
ITER STEP NUMBER 1
vtorho : nnsclo_now= 2, note that nnsclo,dbl_nnsclo,istep= 0 0 1
starting lobpcg, with nblockbd,mpi_enreg%nproc_band 16 2
ERROR: 0031-250 task 0: Segmentation fault
ERROR: 0031-250 task 1: Segmentation fault
ERROR: 0031-250 task 2: Segmentation fault
ERROR: 0031-250 task 3: Segmentation fault
ERROR: 0031-250 task 4: Segmentation fault
ERROR: 0031-250 task 5: Segmentation fault
I tried several other options for the above mentioned variables but none of them helped. Then, I realized that in the log file the following WARNING message appeared (besides a warning for the fft the grid: "The second and third dimension of the FFT grid, 0 0 were imposed to be multiple of the number of processors for the FFT, 3", which is harmless in my opinion until boxcut>=2):
Code: Select all
chkinp: WARNING -
When k-points/bands/FFT parallelism is activated
(paral_kgb=1), only MPI-IO input/output is allowed !
* Your Abinit executable has not been compiled with
--enable-mpi-io and accesswff/=1
* accesswff/=1 in your input file
You will not be able to perform input/output !
Does this mean that in order to be able to use the code I have to compile it with --enable-mpi-io="yes"? Is the reason for the crash? Certainly, the code runs flawlessly without using this kind of parallelization. Since I don't have access for other machines I couldn't try whether it is specific to this cluster or not. I know that 5.8.4 is a quite old version, but compiling Abinit on cineca sp6 is not straightforward at all, and if I'm right administrators are just trying to compile v6.4.1.
I have an additional question. Can I parallelize chained calculations (calculations with scf dataset followed by and nscf dataset)? Since in this case the number of bands is different I suspect that this cause problems...
If needed I can send the entire input file / log file for a quite small system where this behavoir can be reproduced.
Thanks in advance,
Marton