mirror of
https://github.com/LCPQ/quantum_package
synced 2024-12-25 13:53:49 +01:00
Fixed selection
This commit is contained in:
parent
7f1099f80f
commit
ca263297bf
@ -32,7 +32,7 @@ OPENMP : 1 ; Append OpenMP flags
|
|||||||
#
|
#
|
||||||
[OPT]
|
[OPT]
|
||||||
FC : -traceback
|
FC : -traceback
|
||||||
FCFLAGS : -xSSE4.2 -O2 -ip -ftz -g
|
FCFLAGS : -xAVX -O2 -ip -ftz -g
|
||||||
|
|
||||||
# Profiling flags
|
# Profiling flags
|
||||||
#################
|
#################
|
||||||
|
4
configure
vendored
4
configure
vendored
@ -494,9 +494,9 @@ def create_ninja_and_rc(l_installed):
|
|||||||
'function qp_prepend_export () {',
|
'function qp_prepend_export () {',
|
||||||
'eval "value_1="\${$1}""',
|
'eval "value_1="\${$1}""',
|
||||||
'if [[ -z $value_1 ]] ; then',
|
'if [[ -z $value_1 ]] ; then',
|
||||||
' echo "${1}=${2}:"',
|
' echo "${2}:"',
|
||||||
'else',
|
'else',
|
||||||
' echo "${1}=${2}:${value_1}"',
|
' echo "${2}:${value_1}"',
|
||||||
'fi',
|
'fi',
|
||||||
'}',
|
'}',
|
||||||
'export PYTHONPATH=$(qp_prepend_export "PYTHONPATH" "${QP_EZFIO}/Python":"${QP_PYTHON}")',
|
'export PYTHONPATH=$(qp_prepend_export "PYTHONPATH" "${QP_EZFIO}/Python":"${QP_PYTHON}")',
|
||||||
|
@ -625,7 +625,7 @@ let get_data msg program_state rep_socket =
|
|||||||
let value =
|
let value =
|
||||||
match StringHashtbl.find program_state.data key with
|
match StringHashtbl.find program_state.data key with
|
||||||
| Some value -> value
|
| Some value -> value
|
||||||
| None -> "\0"
|
| None -> "\000"
|
||||||
in
|
in
|
||||||
Message.GetDataReply (Message.GetDataReply_msg.create ~value)
|
Message.GetDataReply (Message.GetDataReply_msg.create ~value)
|
||||||
|> Message.to_string_list
|
|> Message.to_string_list
|
||||||
|
@ -27,7 +27,6 @@ subroutine run
|
|||||||
threshold_generators = 1.d0
|
threshold_generators = 1.d0
|
||||||
relative_error = 1.d-3
|
relative_error = 1.d-3
|
||||||
absolute_error = 1.d-5
|
absolute_error = 1.d-5
|
||||||
|
|
||||||
call ZMQ_pt2(E_CI_before, pt2, relative_error, absolute_error, eqt)
|
call ZMQ_pt2(E_CI_before, pt2, relative_error, absolute_error, eqt)
|
||||||
print *, 'Final step'
|
print *, 'Final step'
|
||||||
print *, 'N_det = ', N_det
|
print *, 'N_det = ', N_det
|
||||||
|
@ -335,8 +335,6 @@ subroutine pt2_collector(zmq_socket_pull, E, b, tbc, comb, Ncomb, computed, pt2_
|
|||||||
exit pullLoop
|
exit pullLoop
|
||||||
endif
|
endif
|
||||||
|
|
||||||
!if(Nabove(1) < 5d0) cycle
|
|
||||||
|
|
||||||
E0 = sum(pt2_detail(pt2_stoch_istate,:first_det_of_teeth(tooth)-1))
|
E0 = sum(pt2_detail(pt2_stoch_istate,:first_det_of_teeth(tooth)-1))
|
||||||
if (tooth <= comb_teeth) then
|
if (tooth <= comb_teeth) then
|
||||||
prop = ((1d0 - dfloat(comb_teeth - tooth + 1) * comb_step) - pt2_cweight(first_det_of_teeth(tooth)-1))
|
prop = ((1d0 - dfloat(comb_teeth - tooth + 1) * comb_step) - pt2_cweight(first_det_of_teeth(tooth)-1))
|
||||||
@ -348,7 +346,7 @@ subroutine pt2_collector(zmq_socket_pull, E, b, tbc, comb, Ncomb, computed, pt2_
|
|||||||
eqt = 0.d0
|
eqt = 0.d0
|
||||||
endif
|
endif
|
||||||
call wall_time(time)
|
call wall_time(time)
|
||||||
if ( ((dabs(eqt/avg) < relative_error) .or. (dabs(eqt) < absolute_error)) .and. Nabove(tooth) >= 30) then
|
if ( ((dabs(eqt/avg) < relative_error) .or. (dabs(eqt) < absolute_error)) .and. Nabove(tooth) >= 10) then
|
||||||
! Termination
|
! Termination
|
||||||
pt2(pt2_stoch_istate) = avg
|
pt2(pt2_stoch_istate) = avg
|
||||||
error(pt2_stoch_istate) = eqt
|
error(pt2_stoch_istate) = eqt
|
||||||
@ -361,14 +359,13 @@ subroutine pt2_collector(zmq_socket_pull, E, b, tbc, comb, Ncomb, computed, pt2_
|
|||||||
endif
|
endif
|
||||||
else
|
else
|
||||||
if (Nabove(tooth) > Nabove_old) then
|
if (Nabove(tooth) > Nabove_old) then
|
||||||
print *, loop
|
|
||||||
print '(G10.3, 2X, F16.10, 2X, G16.3, 2X, F16.4, A20)', Nabove(tooth), avg+E, eqt, time-time0, ''
|
print '(G10.3, 2X, F16.10, 2X, G16.3, 2X, F16.4, A20)', Nabove(tooth), avg+E, eqt, time-time0, ''
|
||||||
Nabove_old = Nabove(tooth)
|
Nabove_old = Nabove(tooth)
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
end if
|
end if
|
||||||
end do pullLoop
|
end do pullLoop
|
||||||
!<<<<<<< HEAD
|
|
||||||
|
|
||||||
if(tooth == comb_teeth+1) then
|
if(tooth == comb_teeth+1) then
|
||||||
pt2(pt2_stoch_istate) = sum(pt2_detail(pt2_stoch_istate,:))
|
pt2(pt2_stoch_istate) = sum(pt2_detail(pt2_stoch_istate,:))
|
||||||
|
@ -25,12 +25,6 @@ subroutine run_pt2_slave(thread,iproc,energy)
|
|||||||
integer :: n_tasks, k, n_tasks_max
|
integer :: n_tasks, k, n_tasks_max
|
||||||
integer, allocatable :: i_generator(:), subset(:)
|
integer, allocatable :: i_generator(:), subset(:)
|
||||||
|
|
||||||
!if (mpi_master) then
|
|
||||||
! do i=1,N_det_generators
|
|
||||||
! print '(I6,X,100(I10,X))' ,i, psi_det_generators(:,:,i)
|
|
||||||
! enddo
|
|
||||||
!endif
|
|
||||||
|
|
||||||
n_tasks_max = N_det_generators/100+1
|
n_tasks_max = N_det_generators/100+1
|
||||||
allocate(task_id(n_tasks_max), task(n_tasks_max))
|
allocate(task_id(n_tasks_max), task(n_tasks_max))
|
||||||
allocate(pt2(N_states,n_tasks_max), i_generator(n_tasks_max), subset(n_tasks_max))
|
allocate(pt2(N_states,n_tasks_max), i_generator(n_tasks_max), subset(n_tasks_max))
|
||||||
@ -67,23 +61,24 @@ subroutine run_pt2_slave(thread,iproc,energy)
|
|||||||
read (task(k),*) subset(k), i_generator(k)
|
read (task(k),*) subset(k), i_generator(k)
|
||||||
enddo
|
enddo
|
||||||
|
|
||||||
double precision :: time0, time1
|
! double precision :: time0, time1
|
||||||
call wall_time(time0)
|
! call wall_time(time0)
|
||||||
do k=1,n_tasks
|
do k=1,n_tasks
|
||||||
pt2(:,k) = 0.d0
|
pt2(:,k) = 0.d0
|
||||||
buf%cur = 0
|
buf%cur = 0
|
||||||
call select_connected(i_generator(k),energy,pt2(1,k),buf,subset(k))
|
call select_connected(i_generator(k),energy,pt2(1,k),buf,subset(k))
|
||||||
enddo
|
enddo
|
||||||
call wall_time(time1)
|
! call wall_time(time1)
|
||||||
|
!
|
||||||
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
|
||||||
done = .true.
|
done = .true.
|
||||||
endif
|
endif
|
||||||
call push_pt2_results(zmq_socket_push, i_generator, pt2, task_id, n_tasks)
|
call push_pt2_results(zmq_socket_push, i_generator, pt2, task_id, n_tasks)
|
||||||
|
|
||||||
! Try to adjust n_tasks around 5 second per job
|
! ! Try to adjust n_tasks around 5 second per job
|
||||||
n_tasks = min(n_tasks,int( 5.d0*dble(n_tasks) / (time1 - time0 + 1.d-9)))+1
|
! n_tasks = min(n_tasks,int( 5.d0*dble(n_tasks) / (time1 - time0 + 1.d-9)))+1
|
||||||
|
n_tasks = n_tasks+1
|
||||||
end do
|
end do
|
||||||
|
|
||||||
integer, external :: disconnect_from_taskserver
|
integer, external :: disconnect_from_taskserver
|
||||||
|
@ -97,8 +97,9 @@ subroutine run_selection_slave_new(thread,iproc,energy)
|
|||||||
pt2(:,:) = 0d0
|
pt2(:,:) = 0d0
|
||||||
buf%cur = 0
|
buf%cur = 0
|
||||||
|
|
||||||
! Try to adjust n_tasks around 5 second per job
|
! ! Try to adjust n_tasks around 5 second per job
|
||||||
n_tasks = min(n_tasks,int( 5.d0 * dble(n_tasks) / (time1 - time0 + 1.d-9)))+1
|
! n_tasks = min(n_tasks,int( 5.d0 * dble(n_tasks) / (time1 - time0 + 1.d-9)))+1
|
||||||
|
n_tasks = n_tasks+1
|
||||||
end do
|
end do
|
||||||
|
|
||||||
integer, external :: disconnect_from_taskserver
|
integer, external :: disconnect_from_taskserver
|
||||||
|
@ -60,7 +60,8 @@ subroutine ZMQ_selection(N_in, pt2)
|
|||||||
task = ' '
|
task = ' '
|
||||||
|
|
||||||
do i= 1, N_det_generators
|
do i= 1, N_det_generators
|
||||||
if (i>ishft(N_det_generators,-2)) then
|
! /!\ Fragments don't work
|
||||||
|
! if (i>-ishft(N_det_generators,-2)) then
|
||||||
write(task(ipos:ipos+30),'(I9,1X,I9,1X,I9,''|'')') 0, i, N
|
write(task(ipos:ipos+30),'(I9,1X,I9,1X,I9,''|'')') 0, i, N
|
||||||
ipos += 30
|
ipos += 30
|
||||||
if (ipos > 63970) then
|
if (ipos > 63970) then
|
||||||
@ -69,18 +70,18 @@ subroutine ZMQ_selection(N_in, pt2)
|
|||||||
endif
|
endif
|
||||||
ipos=1
|
ipos=1
|
||||||
endif
|
endif
|
||||||
else
|
! else
|
||||||
do j=1,fragment_count
|
! do j=1,fragment_count
|
||||||
write(task(ipos:ipos+30),'(I9,1X,I9,1X,I9,''|'')') j, i, N
|
! write(task(ipos:ipos+30),'(I9,1X,I9,1X,I9,''|'')') j, i, N
|
||||||
ipos += 30
|
! ipos += 30
|
||||||
if (ipos > 63970) then
|
! if (ipos > 63970) then
|
||||||
if (add_task_to_taskserver(zmq_to_qp_run_socket,trim(task(1:ipos))) == -1) then
|
! if (add_task_to_taskserver(zmq_to_qp_run_socket,trim(task(1:ipos))) == -1) then
|
||||||
stop 'Unable to add task to task server'
|
! stop 'Unable to add task to task server'
|
||||||
endif
|
! endif
|
||||||
ipos=1
|
! ipos=1
|
||||||
endif
|
! endif
|
||||||
end do
|
! end do
|
||||||
endif
|
! endif
|
||||||
enddo
|
enddo
|
||||||
if (ipos > 1) then
|
if (ipos > 1) then
|
||||||
if (add_task_to_taskserver(zmq_to_qp_run_socket,trim(task(1:ipos))) == -1) then
|
if (add_task_to_taskserver(zmq_to_qp_run_socket,trim(task(1:ipos))) == -1) then
|
||||||
|
@ -13,7 +13,7 @@ BEGIN_PROVIDER [ integer, N_det_generators ]
|
|||||||
N_det_generators = N_det
|
N_det_generators = N_det
|
||||||
do i=1,N_det
|
do i=1,N_det
|
||||||
norm = norm + psi_average_norm_contrib_sorted(i)
|
norm = norm + psi_average_norm_contrib_sorted(i)
|
||||||
if (norm > threshold_generators+1d-15) then
|
if (norm >= threshold_generators) then
|
||||||
N_det_generators = i
|
N_det_generators = i
|
||||||
exit
|
exit
|
||||||
endif
|
endif
|
||||||
@ -47,9 +47,7 @@ END_PROVIDER
|
|||||||
integer :: i, k
|
integer :: i, k
|
||||||
psi_det_sorted_gen = psi_det_sorted
|
psi_det_sorted_gen = psi_det_sorted
|
||||||
psi_coef_sorted_gen = psi_coef_sorted
|
psi_coef_sorted_gen = psi_coef_sorted
|
||||||
!do i=1,N_det_generators
|
psi_det_sorted_gen_order = psi_det_sorted_order
|
||||||
psi_det_sorted_gen_order = psi_det_sorted_order
|
|
||||||
!end do
|
|
||||||
END_PROVIDER
|
END_PROVIDER
|
||||||
|
|
||||||
|
|
||||||
|
@ -28,7 +28,7 @@ subroutine run_wf
|
|||||||
double precision :: energy(N_states_diag)
|
double precision :: energy(N_states_diag)
|
||||||
character*(64) :: states(1)
|
character*(64) :: states(1)
|
||||||
integer :: rc, i
|
integer :: rc, i
|
||||||
integer, external :: zmq_get_dvector, zmq_get_N_det_generators
|
integer, external :: zmq_get_dvector, zmq_get_N_det_generators
|
||||||
integer, external :: zmq_get_psi, zmq_get_N_det_selectors
|
integer, external :: zmq_get_psi, zmq_get_N_det_selectors
|
||||||
integer, external :: zmq_get_N_states_diag
|
integer, external :: zmq_get_N_states_diag
|
||||||
double precision :: tmp
|
double precision :: tmp
|
||||||
|
@ -194,7 +194,6 @@ subroutine copy_H_apply_buffer_to_wf
|
|||||||
|
|
||||||
! 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)
|
||||||
|
@ -190,7 +190,7 @@ subroutine S2_u_0_nstates(v_0,u_0,n,keys_tmp,Nint,N_st,sze_8)
|
|||||||
vt = 0.d0
|
vt = 0.d0
|
||||||
|
|
||||||
do sh=1,shortcut(0,1)
|
do sh=1,shortcut(0,1)
|
||||||
!$OMP DO
|
!$OMP DO SCHEDULE(static,1)
|
||||||
do sh2=sh,shortcut(0,1)
|
do sh2=sh,shortcut(0,1)
|
||||||
exa = 0
|
exa = 0
|
||||||
do ni=1,Nint
|
do ni=1,Nint
|
||||||
|
@ -115,6 +115,7 @@ END_PROVIDER
|
|||||||
ao_num,ao_ortho_canonical_coef,size(ao_ortho_canonical_coef,1), &
|
ao_num,ao_ortho_canonical_coef,size(ao_ortho_canonical_coef,1), &
|
||||||
ao_ortho_canonical_num)
|
ao_ortho_canonical_num)
|
||||||
|
|
||||||
|
|
||||||
else
|
else
|
||||||
|
|
||||||
double precision, allocatable :: S(:,:)
|
double precision, allocatable :: S(:,:)
|
||||||
@ -134,13 +135,6 @@ END_PROVIDER
|
|||||||
S, size(S,1), &
|
S, size(S,1), &
|
||||||
0.d0, ao_ortho_canonical_coef, size(ao_ortho_canonical_coef,1))
|
0.d0, ao_ortho_canonical_coef, size(ao_ortho_canonical_coef,1))
|
||||||
|
|
||||||
!integer :: j
|
|
||||||
!do i=1,ao_num
|
|
||||||
! do j=1,ao_num
|
|
||||||
! print *, i,j, ao_ortho_canonical_coef(i,j)
|
|
||||||
! enddo
|
|
||||||
!enddo
|
|
||||||
!stop
|
|
||||||
deallocate(S)
|
deallocate(S)
|
||||||
endif
|
endif
|
||||||
END_PROVIDER
|
END_PROVIDER
|
||||||
|
@ -323,7 +323,7 @@ IRP_ENDIF
|
|||||||
stop 'Unable to set ZMQ_LINGER on push socket'
|
stop 'Unable to set ZMQ_LINGER on push socket'
|
||||||
endif
|
endif
|
||||||
|
|
||||||
rc = f77_zmq_setsockopt(new_zmq_push_socket,ZMQ_SNDHWM,3,4)
|
rc = f77_zmq_setsockopt(new_zmq_push_socket,ZMQ_SNDHWM,5,4)
|
||||||
if (rc /= 0) then
|
if (rc /= 0) then
|
||||||
stop 'Unable to set ZMQ_SNDHWM on push socket'
|
stop 'Unable to set ZMQ_SNDHWM on push socket'
|
||||||
endif
|
endif
|
||||||
|
Loading…
Reference in New Issue
Block a user