mirror of
https://github.com/LCPQ/quantum_package
synced 2024-12-25 05:43:47 +01:00
custom buffers in dress_zmq
This commit is contained in:
parent
de1b5d6874
commit
4aa4c6c96e
@ -163,10 +163,14 @@ subroutine dress_collector(zmq_socket_pull, E, relative_error, delta, delta_s2,
|
||||
integer, allocatable :: parts_to_get(:)
|
||||
logical, allocatable :: actually_computed(:)
|
||||
integer :: total_computed
|
||||
integer :: delta_loc_cur, is
|
||||
integer :: delta_loc_cur, is, N_buf(3)
|
||||
double precision :: fac(delta_loc_N) , wei(delta_loc_N)
|
||||
logical :: ok
|
||||
integer, allocatable :: int_buf(:)
|
||||
double precision, allocatable :: double_buf(:)
|
||||
integer(bit_kind), allocatable :: det_buf(:,:,:)
|
||||
|
||||
allocate(int_buf(N_dress_int_buffer), double_buf(N_dress_double_buffer),det_buf(N_int,2,N_dress_det_buffer))
|
||||
delta_loc_cur = 1
|
||||
|
||||
delta = 0d0
|
||||
@ -206,7 +210,8 @@ subroutine dress_collector(zmq_socket_pull, E, relative_error, delta, delta_s2,
|
||||
loop = .true.
|
||||
felem = N_det+1
|
||||
pullLoop : do while (loop)
|
||||
call pull_dress_results(zmq_socket_pull, ind, delta_loc(1,1,1,delta_loc_cur), task_id, felem_loc)
|
||||
call pull_dress_results(zmq_socket_pull, ind, delta_loc(1,1,1,delta_loc_cur), int_buf, double_buf, det_buf, N_buf, task_id, felem_loc)
|
||||
call dress_pulled(int_buf, double_buf, det_buf, N_buf)
|
||||
felem = min(felem_loc, felem)
|
||||
dress_mwen(:) = 0d0
|
||||
|
||||
@ -449,7 +454,8 @@ END_PROVIDER
|
||||
done_cp_at = 0
|
||||
comp_filler = .false.
|
||||
computed = .false.
|
||||
|
||||
cps_N = 1d0
|
||||
|
||||
N_dress_jobs = first_det_of_comb - 1
|
||||
do i=1, N_dress_jobs
|
||||
dress_jobs(i) = i
|
||||
|
@ -1,3 +1,5 @@
|
||||
use bitmasks
|
||||
|
||||
BEGIN_PROVIDER [ integer, fragment_count ]
|
||||
implicit none
|
||||
BEGIN_DOC
|
||||
@ -54,7 +56,7 @@ subroutine run_dress_slave(thread,iproc,energy)
|
||||
read (task,*) subset, i_generator
|
||||
delta_ij_loc = 0d0
|
||||
call alpha_callback(delta_ij_loc, i_generator, subset, iproc)
|
||||
|
||||
call generator_done(i_generator)
|
||||
call task_done_to_taskserver(zmq_to_qp_run_socket,worker_id,task_id)
|
||||
call push_dress_results(zmq_socket_push, i_generator, delta_ij_loc, task_id)
|
||||
else
|
||||
@ -67,6 +69,17 @@ subroutine run_dress_slave(thread,iproc,energy)
|
||||
end subroutine
|
||||
|
||||
|
||||
BEGIN_PROVIDER [ integer, dress_int_buffer, (N_dress_int_buffer) ]
|
||||
&BEGIN_PROVIDER [ double precision, dress_double_buffer, (N_dress_double_buffer) ]
|
||||
&BEGIN_PROVIDER [ integer(bit_kind), dress_det_buffer, (N_int, 2, N_dress_det_buffer) ]
|
||||
implicit none
|
||||
|
||||
dress_int_buffer = 0
|
||||
dress_double_buffer = 0d0
|
||||
dress_det_buffer = 0_bit_kind
|
||||
END_PROVIDER
|
||||
|
||||
|
||||
subroutine push_dress_results(zmq_socket_push, ind, delta_loc, task_id)
|
||||
use f77_zmq
|
||||
implicit none
|
||||
@ -89,7 +102,7 @@ subroutine push_dress_results(zmq_socket_push, ind, delta_loc, task_id)
|
||||
|
||||
rc = f77_zmq_send( zmq_socket_push, ind, 4, ZMQ_SNDMORE)
|
||||
if(rc /= 4) stop "push"
|
||||
|
||||
|
||||
rc = f77_zmq_send( zmq_socket_push, felem, 4, ZMQ_SNDMORE)
|
||||
if(rc /= 4) stop "push"
|
||||
|
||||
@ -99,6 +112,29 @@ subroutine push_dress_results(zmq_socket_push, ind, delta_loc, task_id)
|
||||
rc = f77_zmq_send( zmq_socket_push, delta_loc(1,felem,2), 8*N_states*(N_det-felem+1), ZMQ_SNDMORE)
|
||||
if(rc /= 8*N_states*(N_det+1-felem)) stop "push"
|
||||
|
||||
|
||||
|
||||
|
||||
rc = f77_zmq_send( zmq_socket_push, N_dress_int_buffer, 4, ZMQ_SNDMORE)
|
||||
if(rc /= 4) stop "push"
|
||||
|
||||
rc = f77_zmq_send( zmq_socket_push, dress_int_buffer, 4*N_dress_int_buffer, ZMQ_SNDMORE)
|
||||
if(rc /= 4*N_dress_int_buffer) stop "push"
|
||||
|
||||
rc = f77_zmq_send( zmq_socket_push, N_dress_double_buffer, 4, ZMQ_SNDMORE)
|
||||
if(rc /= 4) stop "push"
|
||||
|
||||
rc = f77_zmq_send( zmq_socket_push, dress_double_buffer, 8*N_dress_double_buffer, ZMQ_SNDMORE)
|
||||
if(rc /= 8*N_dress_double_buffer) stop "push"
|
||||
|
||||
|
||||
rc = f77_zmq_send( zmq_socket_push, N_dress_det_buffer, 4, ZMQ_SNDMORE)
|
||||
if(rc /= 4) stop "push"
|
||||
|
||||
rc = f77_zmq_send( zmq_socket_push, dress_det_buffer, 2*N_int*bit_kind*N_dress_det_buffer, ZMQ_SNDMORE)
|
||||
if(rc /= 2*N_int*bit_kind*N_dress_det_buffer) stop "push"
|
||||
|
||||
|
||||
rc = f77_zmq_send( zmq_socket_push, task_id, 4, 0)
|
||||
if(rc /= 4) stop "push"
|
||||
|
||||
@ -112,15 +148,19 @@ IRP_ENDIF
|
||||
end subroutine
|
||||
|
||||
|
||||
subroutine pull_dress_results(zmq_socket_pull, ind, delta_loc, task_id, felem)
|
||||
subroutine pull_dress_results(zmq_socket_pull, ind, delta_loc, int_buf, double_buf, det_buf, N_buf, task_id, felem)
|
||||
use f77_zmq
|
||||
implicit none
|
||||
integer(ZMQ_PTR), intent(in) :: zmq_socket_pull
|
||||
double precision, intent(inout) :: delta_loc(N_states, N_det, 2)
|
||||
double precision, intent(out) :: double_buf(*)
|
||||
integer, intent(out) :: int_buf(*)
|
||||
integer(bit_kind), intent(out) :: det_buf(N_int, 2, *)
|
||||
integer, intent(out) :: felem
|
||||
integer, intent(out) :: ind
|
||||
integer, intent(out) :: task_id
|
||||
integer :: rc, i
|
||||
integer, intent(out) :: N_buf(3)
|
||||
|
||||
|
||||
rc = f77_zmq_recv( zmq_socket_pull, ind, 4, 0)
|
||||
@ -137,6 +177,34 @@ subroutine pull_dress_results(zmq_socket_pull, ind, delta_loc, task_id, felem)
|
||||
rc = f77_zmq_recv( zmq_socket_pull, delta_loc(1,felem,2), N_states*8*(N_det+1-felem), 0)
|
||||
if(rc /= 8*N_states*(N_det+1-felem)) stop "pull"
|
||||
|
||||
|
||||
rc = f77_zmq_recv( zmq_socket_pull, N_buf(1), 4, 0)
|
||||
if(rc /= 4) stop "pull"
|
||||
if(N_buf(1) > N_dress_int_buffer) stop "run_dress_slave N_buf bad size?"
|
||||
|
||||
|
||||
rc = f77_zmq_recv( zmq_socket_pull, int_buf, 4*N_buf(1), 0)
|
||||
if(rc /= 4*N_buf(1)) stop "pull1"
|
||||
|
||||
|
||||
rc = f77_zmq_recv( zmq_socket_pull, N_buf(2), 4, 0)
|
||||
if(rc /= 4) stop "pull"
|
||||
if(N_buf(2) > N_dress_double_buffer) stop "run_dress_slave N_buf bad size?"
|
||||
|
||||
rc = f77_zmq_recv( zmq_socket_pull, double_buf, 8*N_buf(2), 0)
|
||||
if(rc /= 8*N_buf(2)) stop "pull2"
|
||||
|
||||
|
||||
|
||||
|
||||
rc = f77_zmq_recv( zmq_socket_pull, N_buf(3), 4, 0)
|
||||
if(rc /= 4) stop "pull"
|
||||
if(N_buf(3) > N_dress_det_buffer) stop "run_dress_slave N_buf bad size?"
|
||||
|
||||
rc = f77_zmq_recv( zmq_socket_pull, det_buf, 2*N_int*bit_kind*N_buf(3), 0)
|
||||
if(rc /= 2*N_int*bit_kind*N_buf(3)) stop "pull3"
|
||||
|
||||
|
||||
rc = f77_zmq_recv( zmq_socket_pull, task_id, 4, 0)
|
||||
if(rc /= 4) stop "pull"
|
||||
|
||||
|
@ -1,5 +1,16 @@
|
||||
use selection_types
|
||||
|
||||
|
||||
BEGIN_PROVIDER [ integer, N_dress_int_buffer ]
|
||||
&BEGIN_PROVIDER [ integer, N_dress_double_buffer ]
|
||||
&BEGIN_PROVIDER [ integer, N_dress_det_buffer ]
|
||||
implicit none
|
||||
N_dress_int_buffer = 1
|
||||
N_dress_double_buffer = 1
|
||||
N_dress_det_buffer = 1
|
||||
END_PROVIDER
|
||||
|
||||
|
||||
BEGIN_PROVIDER [ double precision, fock_diag_tmp_, (2,mo_tot_num+1,Nproc) ]
|
||||
&BEGIN_PROVIDER [ integer, current_generator_, (Nproc) ]
|
||||
&BEGIN_PROVIDER [ double precision, a_h_i, (N_det, Nproc) ]
|
||||
@ -21,6 +32,24 @@ use selection_types
|
||||
a_s2_i = 0d0
|
||||
END_PROVIDER
|
||||
|
||||
subroutine generator_done(i_gen)
|
||||
implicit none
|
||||
integer, intent(in) :: i_gen
|
||||
|
||||
!dress_int_buffer = ...
|
||||
end subroutine
|
||||
|
||||
|
||||
subroutine dress_pulled(int_buf, double_buf, det_buf, N_buf)
|
||||
use bitmasks
|
||||
implicit none
|
||||
|
||||
integer, intent(in) :: N_buf(3)
|
||||
integer, intent(in) :: int_buf(*)
|
||||
double precision, intent(in) :: double_buf(*)
|
||||
integer(bit_kind), intent(in) :: det_buf(N_int,2,*)
|
||||
|
||||
end subroutine
|
||||
|
||||
|
||||
subroutine delta_ij_done()
|
||||
|
Loading…
Reference in New Issue
Block a user