2016-07-12 14:29:17 +02:00
|
|
|
|
2016-07-11 12:36:58 +02:00
|
|
|
program Full_CI_ZMQ
|
|
|
|
use f77_zmq
|
|
|
|
implicit none
|
|
|
|
BEGIN_DOC
|
|
|
|
! Massively parallel Full-CI
|
|
|
|
END_DOC
|
|
|
|
|
|
|
|
integer :: i,ithread
|
|
|
|
|
|
|
|
integer(ZMQ_PTR) :: zmq_socket_push
|
|
|
|
integer(ZMQ_PTR) :: new_zmq_push_socket
|
|
|
|
zmq_context = f77_zmq_ctx_new ()
|
|
|
|
|
|
|
|
|
|
|
|
PROVIDE nproc
|
|
|
|
!$OMP PARALLEL PRIVATE(i,ithread,zmq_socket_push) num_threads(nproc+1)
|
|
|
|
ithread = omp_get_thread_num()
|
|
|
|
if (ithread == 0) then
|
|
|
|
call receive_selected_determinants()
|
|
|
|
else
|
|
|
|
zmq_socket_push = new_zmq_push_socket()
|
2016-07-12 14:29:17 +02:00
|
|
|
|
2016-07-11 12:36:58 +02:00
|
|
|
do i=ithread,N_det_generators,nproc
|
2016-07-12 14:29:17 +02:00
|
|
|
print *, i , "/", N_det_generators
|
2016-07-13 11:32:31 +02:00
|
|
|
!!$OMP TASK DEFAULT(SHARED)
|
2016-07-11 12:36:58 +02:00
|
|
|
call select_connected(i, 1.d-6, ci_electronic_energy,zmq_socket_push)
|
2016-07-13 11:32:31 +02:00
|
|
|
!!$OMP END TASK
|
2016-07-11 12:36:58 +02:00
|
|
|
enddo
|
2016-07-13 11:32:31 +02:00
|
|
|
!!$OMP TASKWAIT
|
2016-07-12 14:29:17 +02:00
|
|
|
print *, "END .... "
|
2016-07-11 12:36:58 +02:00
|
|
|
if (ithread == 1) then
|
|
|
|
integer :: rc
|
|
|
|
rc = f77_zmq_send(zmq_socket_push,0,1,0)
|
|
|
|
if (rc /= 1) then
|
|
|
|
stop 'Error sending termination signal'
|
|
|
|
endif
|
|
|
|
endif
|
|
|
|
call end_zmq_push_socket(zmq_socket_push)
|
|
|
|
|
|
|
|
endif
|
|
|
|
!$OMP END PARALLEL
|
|
|
|
|
|
|
|
|
|
|
|
end
|