mirror of
https://github.com/QuantumPackage/qp2.git
synced 2024-11-06 21:43:39 +01:00
Tuned pt2_F
This commit is contained in:
parent
89d3f6312d
commit
0c88a04ec8
@ -50,7 +50,7 @@ let zmq_context =
|
|||||||
Zmq.Context.create ()
|
Zmq.Context.create ()
|
||||||
|
|
||||||
let () =
|
let () =
|
||||||
Zmq.Context.set_io_threads zmq_context 8
|
Zmq.Context.set_io_threads zmq_context 16
|
||||||
|
|
||||||
|
|
||||||
let bind_socket ~socket_type ~socket ~port =
|
let bind_socket ~socket_type ~socket ~port =
|
||||||
|
@ -13,9 +13,9 @@ END_PROVIDER
|
|||||||
integer :: i
|
integer :: i
|
||||||
integer :: e
|
integer :: e
|
||||||
e = elec_num - n_core_orb * 2
|
e = elec_num - n_core_orb * 2
|
||||||
pt2_n_tasks_max = 1+min((e*(e-1))/2, int(dsqrt(dble(N_det_selectors)))/4)
|
pt2_n_tasks_max = 1+min((e*(e-1)), int(dsqrt(dble(N_det_selectors)))/10)
|
||||||
do i=1,N_det_generators
|
do i=1,N_det_generators
|
||||||
pt2_F(i) = 1 + int(dble(pt2_n_tasks_max)*dsqrt(dabs(psi_coef_sorted_gen(i,pt2_stoch_istate))))
|
pt2_F(i) = 1 + int(dble(pt2_n_tasks_max)*dabs(maxval(psi_coef_sorted_gen(i,:)))**(0.75d0))
|
||||||
enddo
|
enddo
|
||||||
END_PROVIDER
|
END_PROVIDER
|
||||||
|
|
||||||
@ -120,7 +120,11 @@ subroutine ZMQ_pt2(E, pt2,relative_error, error, variance, norm, N_in)
|
|||||||
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
|
||||||
PROVIDE psi_bilinear_matrix_transp_rows_loc psi_bilinear_matrix_transp_columns
|
PROVIDE psi_bilinear_matrix_transp_rows_loc psi_bilinear_matrix_transp_columns
|
||||||
PROVIDE psi_bilinear_matrix_transp_order psi_selectors_coef_transp psi_det_sorted
|
PROVIDE psi_bilinear_matrix_transp_order psi_selectors_coef_transp psi_det_sorted
|
||||||
|
PROVIDE psi_det_hii
|
||||||
|
|
||||||
|
if (s2_eig) then
|
||||||
|
PROVIDE psi_occ_pattern_hii det_to_occ_pattern
|
||||||
|
endif
|
||||||
|
|
||||||
if (N_det < max(10,N_states)) then
|
if (N_det < max(10,N_states)) then
|
||||||
pt2=0.d0
|
pt2=0.d0
|
||||||
|
@ -93,7 +93,7 @@ subroutine run_pt2_slave(thread,iproc,energy)
|
|||||||
!print *, i_generator(1), time1-time2, n_tasks, pt2_F(i_generator(1))
|
!print *, i_generator(1), time1-time2, n_tasks, pt2_F(i_generator(1))
|
||||||
enddo
|
enddo
|
||||||
call wall_time(time1)
|
call wall_time(time1)
|
||||||
!print *, i_generator(1), time1-time0, n_tasks
|
!print *, '-->', i_generator(1), time1-time0, n_tasks
|
||||||
|
|
||||||
integer, external :: tasks_done_to_taskserver
|
integer, external :: tasks_done_to_taskserver
|
||||||
if (tasks_done_to_taskserver(zmq_to_qp_run_socket,worker_id,task_id,n_tasks) == -1) then
|
if (tasks_done_to_taskserver(zmq_to_qp_run_socket,worker_id,task_id,n_tasks) == -1) then
|
||||||
|
@ -1266,4 +1266,4 @@ subroutine bitstring_to_list_in_selection( string, list, n_elements, Nint)
|
|||||||
enddo
|
enddo
|
||||||
|
|
||||||
end
|
end
|
||||||
|
!
|
||||||
|
@ -279,6 +279,11 @@ subroutine run_slave_main
|
|||||||
print *, 'pt2_stoch_istate', pt2_stoch_istate
|
print *, 'pt2_stoch_istate', pt2_stoch_istate
|
||||||
print *, 'state_average_weight', state_average_weight
|
print *, 'state_average_weight', state_average_weight
|
||||||
print *, 'Number of threads', nproc_target
|
print *, 'Number of threads', nproc_target
|
||||||
|
PROVIDE psi_det_hii
|
||||||
|
|
||||||
|
if (s2_eig) then
|
||||||
|
PROVIDE psi_occ_pattern_hii det_to_occ_pattern
|
||||||
|
endif
|
||||||
endif
|
endif
|
||||||
|
|
||||||
!$OMP PARALLEL PRIVATE(i) NUM_THREADS(nproc_target+1)
|
!$OMP PARALLEL PRIVATE(i) NUM_THREADS(nproc_target+1)
|
||||||
|
@ -877,9 +877,11 @@ BEGIN_PROVIDER [ double precision, psi_det_Hii, (N_det) ]
|
|||||||
END_DOC
|
END_DOC
|
||||||
integer :: i,j
|
integer :: i,j
|
||||||
double precision, external :: diag_H_mat_elem
|
double precision, external :: diag_H_mat_elem
|
||||||
|
!$OMP PARALLEL DO DEFAULT(SHARED) PRIVATE(i)
|
||||||
do i=1,N_det
|
do i=1,N_det
|
||||||
psi_det_Hii(i) = diag_H_mat_elem(psi_det(1,1,i),N_int)
|
psi_det_Hii(i) = diag_H_mat_elem(psi_det(1,1,i),N_int)
|
||||||
enddo
|
enddo
|
||||||
|
!$OMP END PARALLEL DO
|
||||||
END_PROVIDER
|
END_PROVIDER
|
||||||
|
|
||||||
|
|
||||||
|
@ -408,11 +408,13 @@ subroutine make_s2_eigenfunction
|
|||||||
integer :: N_det_new, ithread, omp_get_thread_num
|
integer :: N_det_new, ithread, omp_get_thread_num
|
||||||
integer, parameter :: bufsze = 1000
|
integer, parameter :: bufsze = 1000
|
||||||
logical, external :: is_in_wavefunction
|
logical, external :: is_in_wavefunction
|
||||||
|
logical :: update
|
||||||
|
|
||||||
|
update=.False.
|
||||||
call write_int(6,N_occ_pattern,'Number of occupation patterns')
|
call write_int(6,N_occ_pattern,'Number of occupation patterns')
|
||||||
|
|
||||||
!$OMP PARALLEL DEFAULT(NONE) &
|
!$OMP PARALLEL DEFAULT(NONE) &
|
||||||
!$OMP SHARED(N_occ_pattern, psi_occ_pattern, elec_alpha_num,N_int) &
|
!$OMP SHARED(N_occ_pattern, psi_occ_pattern, elec_alpha_num,N_int,update) &
|
||||||
!$OMP PRIVATE(s,ithread, d, det_buffer, smax, N_det_new,i,j,k)
|
!$OMP PRIVATE(s,ithread, d, det_buffer, smax, N_det_new,i,j,k)
|
||||||
N_det_new = 0
|
N_det_new = 0
|
||||||
call occ_pattern_to_dets_size(psi_occ_pattern(1,1,1),s,elec_alpha_num,N_int)
|
call occ_pattern_to_dets_size(psi_occ_pattern(1,1,1),s,elec_alpha_num,N_int)
|
||||||
@ -434,6 +436,7 @@ subroutine make_s2_eigenfunction
|
|||||||
if ( is_in_wavefunction(d(1,1,j), N_int) ) then
|
if ( is_in_wavefunction(d(1,1,j), N_int) ) then
|
||||||
cycle
|
cycle
|
||||||
endif
|
endif
|
||||||
|
update = .true.
|
||||||
N_det_new += 1
|
N_det_new += 1
|
||||||
det_buffer(:,:,N_det_new) = d(:,:,j)
|
det_buffer(:,:,N_det_new) = d(:,:,j)
|
||||||
if (N_det_new == bufsze) then
|
if (N_det_new == bufsze) then
|
||||||
@ -451,8 +454,10 @@ subroutine make_s2_eigenfunction
|
|||||||
deallocate(d,det_buffer)
|
deallocate(d,det_buffer)
|
||||||
!$OMP END PARALLEL
|
!$OMP END PARALLEL
|
||||||
|
|
||||||
|
if (update) then
|
||||||
call copy_H_apply_buffer_to_wf
|
call copy_H_apply_buffer_to_wf
|
||||||
SOFT_TOUCH N_det psi_coef psi_det psi_occ_pattern N_occ_pattern
|
TOUCH N_det psi_coef psi_det psi_occ_pattern N_occ_pattern
|
||||||
|
endif
|
||||||
call write_time(6)
|
call write_time(6)
|
||||||
|
|
||||||
end
|
end
|
||||||
|
Loading…
Reference in New Issue
Block a user