10
0
mirror of https://github.com/LCPQ/quantum_package synced 2024-12-26 06:14:43 +01:00

debugging

This commit is contained in:
Anthony Scemama 2018-05-22 19:11:10 +02:00
parent 72b0c84cb6
commit 9245c090e2
10 changed files with 46 additions and 34 deletions

View File

@ -63,11 +63,11 @@ subroutine run_dressing(N_st,energy)
enddo enddo
print *, 'Variational energy <Psi|H|Psi>' print *, 'Variational energy <Psi|H|Psi>'
do i=1,N_st do i=1,N_st
print *, i, psi_energy(i) print *, i, psi_energy(i)+nuclear_repulsion
enddo enddo
print *, 'Dressed energy <Psi|H+Delta|Psi>' print *, 'Dressed energy <Psi|H+Delta|Psi>'
do i=1,N_st do i=1,N_st
print *, i, ci_energy_dressed(i) print *, i, ci_energy_dressed(i)+nuclear_repulsion
enddo enddo
endif endif

View File

@ -59,10 +59,8 @@ integer, external :: zmq_get_dvector, zmq_get_N_det_generators
if (zmq_get_dvector(zmq_to_qp_run_socket,1,'energy',energy,N_states) == -1) cycle if (zmq_get_dvector(zmq_to_qp_run_socket,1,'energy',energy,N_states) == -1) cycle
if (zmq_get_dvector(zmq_to_qp_run_socket,1,'dress_stoch_istate',tmp,1) == -1) cycle if (zmq_get_dvector(zmq_to_qp_run_socket,1,'dress_stoch_istate',tmp,1) == -1) cycle
dress_stoch_istate = int(tmp) dress_stoch_istate = int(tmp)
psi_energy(1:N_states) = energy(1:N_states)
TOUCH psi_energy dress_stoch_istate state_average_weight
TOUCH dress_stoch_istate
TOUCH state_average_weight
PROVIDE psi_bilinear_matrix_columns_loc psi_det_alpha_unique psi_det_beta_unique PROVIDE psi_bilinear_matrix_columns_loc psi_det_alpha_unique psi_det_beta_unique
PROVIDE psi_bilinear_matrix_rows psi_det_sorted_order psi_bilinear_matrix_order PROVIDE psi_bilinear_matrix_rows psi_det_sorted_order psi_bilinear_matrix_order

View File

@ -133,16 +133,18 @@ subroutine ZMQ_dress(E, dress, delta_out, delta_s2_out, relative_error, lndet)
print *, irp_here, ': Failed in zmq_set_running' print *, irp_here, ': Failed in zmq_set_running'
endif endif
!!$OMP PARALLEL DEFAULT(shared) NUM_THREADS(nproc) & call omp_set_nested(.true.)
! !$OMP PRIVATE(i) !$OMP PARALLEL DEFAULT(shared) NUM_THREADS(2) &
!i = omp_get_thread_num() !$OMP PRIVATE(i)
!if (i==0) then i = omp_get_thread_num()
if (i==0) then
call dress_collector(zmq_socket_pull,E, relative_error, delta, delta_s2, dress,& call dress_collector(zmq_socket_pull,E, relative_error, delta, delta_s2, dress,&
dress_stoch_istate) dress_stoch_istate)
!else else
! call dress_slave_inproc(i) call dress_slave_inproc(i)
!endif endif
!!$OMP END PARALLEL !$OMP END PARALLEL
call omp_set_nested(.false.)
delta_out(dress_stoch_istate,1:N_det) = delta(dress_stoch_istate,1:N_det) delta_out(dress_stoch_istate,1:N_det) = delta(dress_stoch_istate,1:N_det)
delta_s2_out(dress_stoch_istate,1:N_det) = delta_s2(dress_stoch_istate,1:N_det) delta_s2_out(dress_stoch_istate,1:N_det) = delta_s2(dress_stoch_istate,1:N_det)
call end_parallel_job(zmq_to_qp_run_socket, zmq_socket_pull, 'dress') call end_parallel_job(zmq_to_qp_run_socket, zmq_socket_pull, 'dress')
@ -237,6 +239,7 @@ subroutine dress_collector(zmq_socket_pull, E, relative_error, delta, delta_s2,
call wall_time(time) call wall_time(time)
end if end if
print *, cur_cp, ind
if(cur_cp == -1) then if(cur_cp == -1) then
call dress_pulled(ind, int_buf, double_buf, det_buf, N_buf) call dress_pulled(ind, int_buf, double_buf, det_buf, N_buf)
@ -348,7 +351,7 @@ end function
! !
! gen_per_cp : number of generators per checkpoint ! gen_per_cp : number of generators per checkpoint
END_DOC END_DOC
comb_teeth = 64 comb_teeth = min(1+N_det/10,64)
N_cps_max = 16 N_cps_max = 16
gen_per_cp = (N_det_generators / N_cps_max) + 1 gen_per_cp = (N_det_generators / N_cps_max) + 1
END_PROVIDER END_PROVIDER
@ -507,6 +510,12 @@ END_PROVIDER
end do end do
print *, 'needed_by_cp'
do i=1,cur_cp
print *, i, needed_by_cp(i)
enddo
under_det = 0 under_det = 0
cp_first_tooth = 0 cp_first_tooth = 0
do i=1,N_dress_jobs do i=1,N_dress_jobs

View File

@ -65,12 +65,14 @@ END_PROVIDER
BEGIN_PROVIDER [ integer , N_det_delta_ij ] BEGIN_PROVIDER [ integer , N_det_delta_ij ]
implicit none implicit none
!N_det_delta_ij = 0!N_det N_det_delta_ij = 1
END_PROVIDER END_PROVIDER
BEGIN_PROVIDER [ double precision, delta_ij, (N_states, N_det, 2) ] BEGIN_PROVIDER [ double precision, delta_ij, (N_states, N_det, 2) ]
implicit none implicit none
if(.true.) delta_ij(:,:N_det_delta_ij, :) = delta_ij_tmp(:,:,:) if(.true.) then
delta_ij(:,:N_det_delta_ij, :) = delta_ij_tmp(:,:,:)
endif
delta_ij(:,N_det_delta_ij+1:,:) = 0d0 delta_ij(:,N_det_delta_ij+1:,:) = 0d0
END_PROVIDER END_PROVIDER

View File

@ -48,7 +48,7 @@ subroutine run_dress_slave(thread,iproce,energy)
double precision :: fac double precision :: fac
if(iproce /= 0) stop "RUN DRESS SLAVE is OMP" ! if(iproce /= 0) stop "RUN DRESS SLAVE is OMP"
allocate(delta_det(N_states, N_det, 0:comb_teeth+1, 2)) allocate(delta_det(N_states, N_det, 0:comb_teeth+1, 2))
allocate(cp(N_states, N_det, N_cp, 2)) allocate(cp(N_states, N_det, N_cp, 2))

View File

@ -581,7 +581,7 @@ END_PROVIDER
double precision, allocatable :: mrcc(:) double precision, allocatable :: mrcc(:)
double precision :: E_CI_before!, relative_error double precision :: E_CI_before!, relative_error
double precision, save :: target_error = 0d0 double precision, save :: target_error = 2d-2
allocate(mrcc(N_states)) allocate(mrcc(N_states))
@ -594,11 +594,10 @@ END_PROVIDER
threshold_selectors = 1.d0 threshold_selectors = 1.d0
threshold_generators = 1d0 threshold_generators = 1d0
if(target_error /= 0d0) then if(target_error /= 0d0) then
target_error = target_error / 2d0 ! (-mrcc_E0_denominator(1) + mrcc_previous_E(1)) / 1d1 target_error = target_error * 0.5d0 ! (-mrcc_E0_denominator(1) + mrcc_previous_E(1)) / 1d1
else else
target_error = 1d-4 target_error = 1d-4
end if end if
target_error = 0d0
call ZMQ_mrcc(E_CI_before, mrcc, delta_ij_mrcc_zmq, delta_ij_s2_mrcc_zmq, abs(target_error)) call ZMQ_mrcc(E_CI_before, mrcc, delta_ij_mrcc_zmq, delta_ij_s2_mrcc_zmq, abs(target_error))
mrcc_previous_E(:) = mrcc_E0_denominator(:) mrcc_previous_E(:) = mrcc_E0_denominator(:)

View File

@ -310,7 +310,6 @@ subroutine mrcc_collector(zmq_socket_pull, E, relative_error, delta, delta_s2, m
end if end if
end do end do
if(cur_cp == 0) then if(cur_cp == 0) then
print *, "no checkpoint reached so far..."
cycle pullLoop cycle pullLoop
end if end if
!!!!!!!!!!!! !!!!!!!!!!!!

View File

@ -51,6 +51,7 @@ subroutine generator_done(i_gen, int_buf, double_buf, det_buf, N_buf, iproc)
double precision, intent(out) :: double_buf(N_dress_double_buffer) double precision, intent(out) :: double_buf(N_dress_double_buffer)
integer(bit_kind), intent(out) :: det_buf(N_int, 2, N_dress_det_buffer) integer(bit_kind), intent(out) :: det_buf(N_int, 2, N_dress_det_buffer)
integer :: i integer :: i
int_buf(:) = 0
call sort_selection_buffer(sb(iproc)) call sort_selection_buffer(sb(iproc))
det_buf(:,:,:sb(iproc)%cur) = sb(iproc)%det(:,:,:sb(iproc)%cur) det_buf(:,:,:sb(iproc)%cur) = sb(iproc)%det(:,:,:sb(iproc)%cur)
@ -115,15 +116,18 @@ subroutine delta_ij_done()
old_det_gen = N_det_generators old_det_gen = N_det_generators
if (dress_stoch_istate == N_states) then
! Add buffer only when the last state is computed
call sort_selection_buffer(global_sb) call sort_selection_buffer(global_sb)
call fill_H_apply_buffer_no_selection(global_sb%cur,global_sb%det,N_int,0) call fill_H_apply_buffer_no_selection(global_sb%cur,global_sb%det,N_int,0)
call copy_H_apply_buffer_to_wf() call copy_H_apply_buffer_to_wf()
if (s2_eig.or.(N_states > 1) ) then if (s2_eig.or.(N_states > 1) ) then
call make_s2_eigenfunction call make_s2_eigenfunction
endif endif
call undress_with_alpha(old_generators, old_det_gen, psi_det(1,1,N_det_delta_ij+1), N_det-N_det_delta_ij) call undress_with_alpha(old_generators, old_det_gen, psi_det(1,1,N_det_delta_ij+1), N_det-N_det_delta_ij)
call save_wavefunction call save_wavefunction
endif
end subroutine end subroutine

View File

@ -192,8 +192,9 @@ subroutine copy_H_apply_buffer_to_wf
call normalize(psi_coef,N_det) call normalize(psi_coef,N_det)
SOFT_TOUCH N_det psi_det psi_coef SOFT_TOUCH N_det psi_det psi_coef
! logical :: found_duplicates logical :: found_duplicates
! call remove_duplicates_in_psi_det(found_duplicates) call remove_duplicates_in_psi_det(found_duplicates)
end end
subroutine remove_duplicates_in_psi_det(found_duplicates) subroutine remove_duplicates_in_psi_det(found_duplicates)

View File

@ -101,8 +101,8 @@ subroutine map_load_from_disk(filename,map)
k = map % consolidated_idx (i+2_8) k = map % consolidated_idx (i+2_8)
l = map % consolidated_idx (i+1_8) l = map % consolidated_idx (i+1_8)
n_elements = int(k - l, 4) n_elements = int(k - l, 4)
key_p => map % consolidated_key (l:l+n_elements) key_p => map % consolidated_key (l:l+n_elements-1)
value_p => map % consolidated_value ( l:l+n_elements ) value_p => map % consolidated_value ( l:l+n_elements-1 )
map % map(i) % key => key_p map % map(i) % key => key_p
map % map(i) % value => value_p map % map(i) % value => value_p
map % map(i) % sorted = .True. map % map(i) % sorted = .True.