Commit 13536cf9 authored by Daniel Wortmann's avatar Daniel Wortmann

Fixed several MPI related bugs

parent f6681e04
......@@ -613,12 +613,8 @@
! contribution) to the m.t. density, include full nonspherical
! components
!
l_cutoff = 0
DO n = 1,atoms%ntype
l_cutoff = MAX( l_cutoff, atoms%lmax(n) )
END DO
ENDIF ! mpi%irank ==0
l_cutoff=maxval(atoms%lmax(:atoms%ntype))
#ifdef CPP_MPI
IF ( mpi%isize > 1 ) CALL mpi_bc_st(mpi,stars,qpwc)
#endif
......
......@@ -277,8 +277,7 @@ CONTAINS
input, vr,vz, enpara_in, enpara)
ENDIF
!
!---> set up and solve the eigenvalue problem
......@@ -446,6 +445,7 @@ CONTAINS
!
call timestart("Interstitial Hamiltonian&Overlap")
CALL hsint(noco,jij,stars, vpw(:,jsp),lapw,jsp, n_size,n_rank,kpts%bk(:,nk),cell,atoms, a,b)
call timestop("Interstitial Hamiltonian&Overlap")
!
!---> update with sphere terms
......@@ -523,9 +523,11 @@ CONTAINS
CLOSE(88)
endif
CALL eigen_diag(jsp,eig_id,it,atoms,dimension,matsize,mpi, n_rank,n_size,ne,nk,lapw,input,&
nred,sub_comm, sym,matind,kveclo, noco,cell,bkpt,enpara%el0,jij,l_wu,&
oneD,td,ud, eig,a,b,z)
!
!---> output results
!
......
......@@ -210,7 +210,7 @@ CONTAINS
!DO kii = n_rank, nv_tot-1, n_size
ki = MOD(kii,lapw%nv(iintsp)) + 1
bsize=MIN(SIZE(aa_block,1),lapw%nv(iintsp)/n_size-ki*n_size+1) !Either use maximal blocksize or number of rows left to calculate
IF (bsize==0) EXIT !nothing more to do here
IF (bsize<1) EXIT !nothing more to do here
bsize2=bsize*n_size
!aa_block(:bsize,:ki+bsize2-1)=matmul(a(ki:ki+bsize-1:n_size,0:lmp,iintsp),conjg(transpose(ax(:ki+bsize2-1,0:lmp))))+ &
! matmul(b(ki:ki+bsize-1:n_size,0:lmp,iintsp),conjg(transpose(bx(:ki+bsize2-1,0:lmp))))
......
......@@ -402,7 +402,7 @@
& kpts,oneD)
!
DEALLOCATE( &
DEALLOCATE( sym%mrot,sym%tau,&
& atoms%lmax,atoms%ntypsy,atoms%neq,atoms%nlhtyp,atoms%rmt,atoms%zatom,atoms%jri,atoms%dx,atoms%nlo,atoms%llo,atoms%nflip,atoms%bmu,noel,&
& vacuum%izlay,atoms%ncst,atoms%lnonsph,atoms%taual,atoms%pos,atoms%nz,atoms%relax,&
& atoms%l_geo,noco%soc_opt,noco%alph,noco%beta,atoms%lda_u,noco%l_relax,jij%l_magn,jij%M,noco%b_con,sphhar%clnu,sphhar%nlh,&
......
MODULE m_eig66_mpi
#include "juDFT_env.h"
USE m_eig66_data
IMPLICIT NONE
#ifdef CPP_MPI
INCLUDE 'mpif.h'
PRIVATE
use mpi
#endif
IMPLICIT NONE
PRIVATE
PUBLIC open_eig,read_eig,write_eig,close_eig,write_dos,read_dos
CONTAINS
......@@ -107,7 +103,7 @@ CONTAINS
local_slots=COUNT(d%pe_ev==d%irank)
slot_size=nmat
#if !defined(CPP_INVERSION)||defined(CPP_SOC)
#if defined(CPP_INVERSION)&&!defined(CPP_SOC)
CALL priv_create_memory(slot_size,local_slots,d%zr_handle,real_data_ptr=d%zr_data)
#else
CALL priv_create_memory(slot_size,local_slots,d%zc_handle,cmplx_data_ptr=d%zc_data)
......@@ -173,13 +169,13 @@ CONTAINS
IF (present(real_data_ptr)) THEN
CALL C_F_POINTER(ptr,real_data_ptr,(/length/type_size/))
CALL MPI_WIN_CREATE(real_data_ptr, length,slot_size,Mpi_INFO_NULL, MPI_COMM,handle, e)
CALL MPI_WIN_CREATE(real_data_ptr, length,slot_size*type_size,Mpi_INFO_NULL, MPI_COMM,handle, e)
ELSEIF(present(int_data_ptr)) THEN
CALL C_F_POINTER(ptr,int_data_ptr,(/length/type_size/))
CALL MPI_WIN_CREATE(int_data_ptr, length,slot_size,Mpi_INFO_NULL, MPI_COMM,handle, e)
CALL MPI_WIN_CREATE(int_data_ptr, length,slot_size*type_size,Mpi_INFO_NULL, MPI_COMM,handle, e)
ELSE
CALL C_F_POINTER(ptr,cmplx_data_ptr,(/length/type_size/))
CALL MPI_WIN_CREATE(cmplx_data_ptr, length,slot_size,Mpi_INFO_NULL, MPI_COMM,handle, e)
CALL MPI_WIN_CREATE(cmplx_data_ptr, length,slot_size*type_size,Mpi_INFO_NULL, MPI_COMM,handle, e)
ENDIF
END SUBROUTINE priv_create_memory
......
......@@ -123,6 +123,7 @@
ALLOCATE ( sphhar%clnu(sphhar%memd,0:sphhar%nlhd,sphhar%ntypsd),stars%ustep(stars%n3d) )
ALLOCATE ( stars%ig(-stars%k1d:stars%k1d,-stars%k2d:stars%k2d,-stars%k3d:stars%k3d),stars%ig2(stars%n3d),stars%igz(stars%n3d) )
ALLOCATE ( atoms%jri(atoms%ntypd),stars%kv2(2,stars%n2d),stars%kv3(3,stars%n3d),sphhar%llh(0:sphhar%nlhd,sphhar%ntypsd) )
ALLOCATE (sym%mrot(3,3,sym%nop),sym%tau(3,sym%nop))
ALLOCATE ( atoms%lmax(atoms%ntypd),sphhar%mlh(sphhar%memd,0:sphhar%nlhd,sphhar%ntypsd))!,sym%mrot(3,3,sym%nop) )
ALLOCATE ( atoms%ncv(atoms%ntypd),atoms%neq(atoms%ntypd),atoms%ngopr(atoms%natd) )
ALLOCATE ( sphhar%nlh(sphhar%ntypsd),sphhar%nmem(0:sphhar%nlhd,sphhar%ntypsd) )
......
......@@ -42,7 +42,6 @@ CONTAINS
EXTERNAL MPI_BCAST
IF (mpi%irank.EQ.0) THEN
i(1)=1 ; i(2)=obsolete%lpr ; i(3)=atoms%ntype ; i(5)=obsolete%nwd ; i(6)=input%isec1
i(7)=stars%ng2 ; i(8)=stars%ng3 ; i(9)=vacuum%nmz ; i(10)=vacuum%nmzxy ; i(11)=obsolete%lepr
......@@ -122,7 +121,7 @@ CONTAINS
CALL MPI_BCAST (input%efield%C1,n,MPI_REAL,0,mpi%mpi_comm,ierr)
CALL MPI_BCAST (input%efield%C2,n,MPI_REAL,0,mpi%mpi_comm,ierr)
END IF
CALL MPI_BCAST(stars%ustep,stars%n3d,MPI_DOUBLE_COMPLEX,0,mpi%mpi_comm,ierr)
n = sphhar%memd*(sphhar%nlhd+1)*sphhar%ntypsd
CALL MPI_BCAST(sphhar%clnu,n,MPI_DOUBLE_COMPLEX,0,mpi%mpi_comm,ierr)
......@@ -144,7 +143,7 @@ CONTAINS
CALL MPI_BCAST(stars%ig2,stars%n3d,MPI_INTEGER,0,mpi%mpi_comm,ierr)
n = (2*stars%k1d+1)*(2*stars%k2d+1)*(2*stars%k3d+1)
CALL MPI_BCAST(stars%ig,n,MPI_INTEGER,0,mpi%mpi_comm,ierr)
CALL MPI_BCAST(stars%rgphs,n,MPI_DOUBLE_PRECISION,0,mpi%mpi_comm,ierr)
CALL MPI_BCAST(stars%rgphs,n,MPI_DOUBLE_COMPLEX,0,mpi%mpi_comm,ierr)
CALL MPI_BCAST(input%ellow,obsolete%nwdd,MPI_DOUBLE_PRECISION,0,mpi%mpi_comm,ierr)
CALL MPI_BCAST(input%elup,obsolete%nwdd,MPI_DOUBLE_PRECISION,0,mpi%mpi_comm,ierr)
CALL MPI_BCAST(input%rkmax,obsolete%nwdd,MPI_DOUBLE_PRECISION,0,mpi%mpi_comm,ierr)
......@@ -169,6 +168,7 @@ CONTAINS
CALL MPI_BCAST(kpts%bk,3*kpts%nkptd*obsolete%nwdd,MPI_DOUBLE_PRECISION,0,mpi%mpi_comm,ierr)
CALL MPI_BCAST(kpts%wtkpt,kpts%nkptd*obsolete%nwdd,MPI_DOUBLE_PRECISION,0,mpi%mpi_comm,ierr)
!
n = atoms%natd*sym%nop
CALL MPI_BCAST(sym%invarop,n,MPI_INTEGER,0,mpi%mpi_comm,ierr)
CALL MPI_BCAST(sym%multab,sym%nop**2,MPI_INTEGER,0,mpi%mpi_comm,ierr)
......@@ -213,9 +213,9 @@ CONTAINS
CALL MPI_BCAST(atoms%lda_u(:)%l,atoms%ntypd,MPI_INTEGER,0,mpi%mpi_comm,ierr)
CALL MPI_BCAST(atoms%lda_u(:)%u,atoms%ntypd,MPI_DOUBLE_PRECISION,0,mpi%mpi_comm,ierr)
CALL MPI_BCAST(atoms%lda_u(:)%j,atoms%ntypd,MPI_DOUBLE_PRECISION,0,mpi%mpi_comm,ierr)
CALL MPI_BCAST(atoms%lda_u(:)%l_amf,MPI_LOGICAL,0,&
& mpi,ierr)
CALL MPI_BCAST(atoms%lda_u(:)%l_amf,atoms%ntypd,MPI_LOGICAL,0,mpi%mpi_comm,ierr)
CALL MPI_BCAST(atoms%lapw_l,atoms%ntypd,MPI_INTEGER,0,mpi%mpi_comm,ierr)
n = 7*7*3*sym%nop
CALL MPI_BCAST(sym%d_wgn,n,MPI_DOUBLE_COMPLEX,0,mpi%mpi_comm,ierr)
CALL MPI_BCAST(oneD%nstr1,oneD%odd%n2d,MPI_INTEGER,0,mpi%mpi_comm,ierr)
......@@ -255,7 +255,7 @@ CONTAINS
!--- HF>
!
!
RETURN
END SUBROUTINE mpi_bc_all
END MODULE m_mpi_bc_all
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment