From 11932f5540c0e2776e3228a66ca1b655d44d9a23 Mon Sep 17 00:00:00 2001 From: Anthony Scemama Date: Fri, 3 Mar 2017 12:02:21 +0100 Subject: [PATCH] Fixed FCI_ZMQ --- plugins/Full_CI_ZMQ/fci_zmq.irp.f | 2 +- plugins/Full_CI_ZMQ/run_pt2_slave.irp.f | 3 ++- plugins/Full_CI_ZMQ/run_selection_slave.irp.f | 10 +++------- plugins/Full_CI_ZMQ/selection_buffer.irp.f | 2 +- plugins/Full_CI_ZMQ/zmq_selection.irp.f | 15 ++++----------- 5 files changed, 11 insertions(+), 21 deletions(-) diff --git a/plugins/Full_CI_ZMQ/fci_zmq.irp.f b/plugins/Full_CI_ZMQ/fci_zmq.irp.f index a0d1a5ea..3feec96f 100644 --- a/plugins/Full_CI_ZMQ/fci_zmq.irp.f +++ b/plugins/Full_CI_ZMQ/fci_zmq.irp.f @@ -69,7 +69,7 @@ program fci_zmq n_det_before = 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) call ZMQ_selection(to_select, pt2) diff --git a/plugins/Full_CI_ZMQ/run_pt2_slave.irp.f b/plugins/Full_CI_ZMQ/run_pt2_slave.irp.f index 070d3f97..63033f82 100644 --- a/plugins/Full_CI_ZMQ/run_pt2_slave.irp.f +++ b/plugins/Full_CI_ZMQ/run_pt2_slave.irp.f @@ -9,7 +9,7 @@ subroutine run_pt2_slave(thread,iproc,energy) integer :: rc, i 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) :: zmq_to_qp_run_socket @@ -26,6 +26,7 @@ subroutine run_pt2_slave(thread,iproc,energy) integer :: Nindex 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_socket_push = new_zmq_push_socket(thread) call connect_to_taskserver(zmq_to_qp_run_socket,worker_id,thread) diff --git a/plugins/Full_CI_ZMQ/run_selection_slave.irp.f b/plugins/Full_CI_ZMQ/run_selection_slave.irp.f index 5bf00a1d..59b2ba1f 100644 --- a/plugins/Full_CI_ZMQ/run_selection_slave.irp.f +++ b/plugins/Full_CI_ZMQ/run_selection_slave.irp.f @@ -41,8 +41,8 @@ subroutine run_selection_slave(thread,iproc,energy) if (done) then ctask = ctask - 1 else - integer :: i_generator, i_generator_start, i_generator_max, step, N - read (task,*) i_generator_start, i_generator_max, step, N + integer :: i_generator, N + read(task,*) i_generator, N if(buf%N == 0) then ! Only first time call create_selection_buffer(N, N*2, buf) @@ -50,11 +50,7 @@ subroutine run_selection_slave(thread,iproc,energy) else if(N /= buf%N) stop "N changed... wtf man??" end if - !print *, "psi_selectors_coef ", psi_selectors_coef(N_det_selectors-5:N_det_selectors, 1) - !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 + call select_connected(i_generator,energy,pt2,buf,0) endif if(done .or. ctask == size(task_id)) then diff --git a/plugins/Full_CI_ZMQ/selection_buffer.irp.f b/plugins/Full_CI_ZMQ/selection_buffer.irp.f index f06f9726..d296b399 100644 --- a/plugins/Full_CI_ZMQ/selection_buffer.irp.f +++ b/plugins/Full_CI_ZMQ/selection_buffer.irp.f @@ -27,7 +27,7 @@ subroutine add_to_selection_buffer(b, det, val) if(dabs(val) >= b%mini) then 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 if(b%cur == size(b%val)) then call sort_selection_buffer(b) diff --git a/plugins/Full_CI_ZMQ/zmq_selection.irp.f b/plugins/Full_CI_ZMQ/zmq_selection.irp.f index a5f38691..e033b9c2 100644 --- a/plugins/Full_CI_ZMQ/zmq_selection.irp.f +++ b/plugins/Full_CI_ZMQ/zmq_selection.irp.f @@ -24,17 +24,10 @@ subroutine ZMQ_selection(N_in, pt2) call create_selection_buffer(N, N*2, b) 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 - allocate(character(len=32*N_det_generators) :: task) - step = int(5000000.d0 / dble(N_int * N_states * elec_num * elec_num * mo_tot_num * mo_tot_num )) - step = max(1,step) - 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 + allocate(character(len=20*N_det_generators) :: task) + do i= 1, N_det_generators + write(task(20*(i-1)+1:20*i),'(I9,X,I9,''|'')') i, N end do call add_task_to_taskserver(zmq_to_qp_run_socket,task) deallocate(task) @@ -49,7 +42,7 @@ subroutine ZMQ_selection(N_in, pt2) !$OMP END PARALLEL call end_parallel_job(zmq_to_qp_run_socket, 'selection') 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() if (s2_eig) then call make_s2_eigenfunction