mirror of
https://github.com/LCPQ/quantum_package
synced 2025-04-25 09:45:00 +02:00
Fixed FCI_ZMQ
This commit is contained in:
parent
8a5a671e31
commit
11932f5540
@ -69,7 +69,7 @@ program fci_zmq
|
|||||||
|
|
||||||
n_det_before = N_det
|
n_det_before = N_det
|
||||||
to_select = N_det
|
to_select = N_det
|
||||||
to_select = max(64-N_det, to_select)
|
to_select = max(N_det, to_select)
|
||||||
to_select = min(to_select, N_det_max-n_det_before)
|
to_select = min(to_select, N_det_max-n_det_before)
|
||||||
call ZMQ_selection(to_select, pt2)
|
call ZMQ_selection(to_select, pt2)
|
||||||
|
|
||||||
|
@ -9,7 +9,7 @@ subroutine run_pt2_slave(thread,iproc,energy)
|
|||||||
integer :: rc, i
|
integer :: rc, i
|
||||||
|
|
||||||
integer :: worker_id, task_id(1), ctask, ltask
|
integer :: worker_id, task_id(1), ctask, ltask
|
||||||
character*(1000000) :: task
|
character(len=:), allocatable :: task
|
||||||
|
|
||||||
integer(ZMQ_PTR),external :: new_zmq_to_qp_run_socket
|
integer(ZMQ_PTR),external :: new_zmq_to_qp_run_socket
|
||||||
integer(ZMQ_PTR) :: zmq_to_qp_run_socket
|
integer(ZMQ_PTR) :: zmq_to_qp_run_socket
|
||||||
@ -26,6 +26,7 @@ subroutine run_pt2_slave(thread,iproc,energy)
|
|||||||
integer :: Nindex
|
integer :: Nindex
|
||||||
|
|
||||||
allocate(pt2_detail(N_states, N_det), index(N_det))
|
allocate(pt2_detail(N_states, N_det), index(N_det))
|
||||||
|
allocate(character(len=10000) :: task)
|
||||||
zmq_to_qp_run_socket = new_zmq_to_qp_run_socket()
|
zmq_to_qp_run_socket = new_zmq_to_qp_run_socket()
|
||||||
zmq_socket_push = new_zmq_push_socket(thread)
|
zmq_socket_push = new_zmq_push_socket(thread)
|
||||||
call connect_to_taskserver(zmq_to_qp_run_socket,worker_id,thread)
|
call connect_to_taskserver(zmq_to_qp_run_socket,worker_id,thread)
|
||||||
|
@ -41,8 +41,8 @@ subroutine run_selection_slave(thread,iproc,energy)
|
|||||||
if (done) then
|
if (done) then
|
||||||
ctask = ctask - 1
|
ctask = ctask - 1
|
||||||
else
|
else
|
||||||
integer :: i_generator, i_generator_start, i_generator_max, step, N
|
integer :: i_generator, N
|
||||||
read (task,*) i_generator_start, i_generator_max, step, N
|
read(task,*) i_generator, N
|
||||||
if(buf%N == 0) then
|
if(buf%N == 0) then
|
||||||
! Only first time
|
! Only first time
|
||||||
call create_selection_buffer(N, N*2, buf)
|
call create_selection_buffer(N, N*2, buf)
|
||||||
@ -50,11 +50,7 @@ subroutine run_selection_slave(thread,iproc,energy)
|
|||||||
else
|
else
|
||||||
if(N /= buf%N) stop "N changed... wtf man??"
|
if(N /= buf%N) stop "N changed... wtf man??"
|
||||||
end if
|
end if
|
||||||
!print *, "psi_selectors_coef ", psi_selectors_coef(N_det_selectors-5:N_det_selectors, 1)
|
call select_connected(i_generator,energy,pt2,buf,0)
|
||||||
!call debug_det(psi_selectors(1,1,N_det_selectors), N_int)
|
|
||||||
do i_generator=i_generator_start,i_generator_max,step
|
|
||||||
call select_connected(i_generator,energy,pt2,buf,0)
|
|
||||||
enddo
|
|
||||||
endif
|
endif
|
||||||
|
|
||||||
if(done .or. ctask == size(task_id)) then
|
if(done .or. ctask == size(task_id)) then
|
||||||
|
@ -27,7 +27,7 @@ subroutine add_to_selection_buffer(b, det, val)
|
|||||||
|
|
||||||
if(dabs(val) >= b%mini) then
|
if(dabs(val) >= b%mini) then
|
||||||
b%cur += 1
|
b%cur += 1
|
||||||
b%det(:,:,b%cur) = det(:,:)
|
b%det(1:N_int,1:2,b%cur) = det(1:N_int,1:2)
|
||||||
b%val(b%cur) = val
|
b%val(b%cur) = val
|
||||||
if(b%cur == size(b%val)) then
|
if(b%cur == size(b%val)) then
|
||||||
call sort_selection_buffer(b)
|
call sort_selection_buffer(b)
|
||||||
|
@ -24,17 +24,10 @@ subroutine ZMQ_selection(N_in, pt2)
|
|||||||
call create_selection_buffer(N, N*2, b)
|
call create_selection_buffer(N, N*2, b)
|
||||||
endif
|
endif
|
||||||
|
|
||||||
integer :: i_generator, i_generator_start, i_generator_max, step
|
|
||||||
! step = int(max(1.,10*elec_num/mo_tot_num)
|
|
||||||
|
|
||||||
character(len=:), allocatable :: task
|
character(len=:), allocatable :: task
|
||||||
allocate(character(len=32*N_det_generators) :: task)
|
allocate(character(len=20*N_det_generators) :: task)
|
||||||
step = int(5000000.d0 / dble(N_int * N_states * elec_num * elec_num * mo_tot_num * mo_tot_num ))
|
do i= 1, N_det_generators
|
||||||
step = max(1,step)
|
write(task(20*(i-1)+1:20*i),'(I9,X,I9,''|'')') i, N
|
||||||
do i= 1, N_det_generators,step
|
|
||||||
i_generator_start = i
|
|
||||||
i_generator_max = min(i+step-1,N_det_generators)
|
|
||||||
write(task(32*(i-1)+1:32*i),'(I9,X,I9,X,''1'',X,I9,''|'')') i_generator_start, i_generator_max, N
|
|
||||||
end do
|
end do
|
||||||
call add_task_to_taskserver(zmq_to_qp_run_socket,task)
|
call add_task_to_taskserver(zmq_to_qp_run_socket,task)
|
||||||
deallocate(task)
|
deallocate(task)
|
||||||
@ -49,7 +42,7 @@ subroutine ZMQ_selection(N_in, pt2)
|
|||||||
!$OMP END PARALLEL
|
!$OMP END PARALLEL
|
||||||
call end_parallel_job(zmq_to_qp_run_socket, 'selection')
|
call end_parallel_job(zmq_to_qp_run_socket, 'selection')
|
||||||
if (N_in > 0) then
|
if (N_in > 0) then
|
||||||
call fill_H_apply_buffer_no_selection(b%cur,b%det,N_int,0) !!! PAS DE ROBIN
|
call fill_H_apply_buffer_no_selection(b%cur,b%det,N_int,0)
|
||||||
call copy_H_apply_buffer_to_wf()
|
call copy_H_apply_buffer_to_wf()
|
||||||
if (s2_eig) then
|
if (s2_eig) then
|
||||||
call make_s2_eigenfunction
|
call make_s2_eigenfunction
|
||||||
|
Loading…
x
Reference in New Issue
Block a user