mirror of
https://github.com/LCPQ/quantum_package
synced 2024-11-13 09:34:02 +01:00
43 lines
998 B
Fortran
43 lines
998 B
Fortran
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()
|
|
do i=ithread,N_det_generators,nproc
|
|
print *, i , N_det_generators
|
|
!$OMP TASK DEFAULT(SHARED)
|
|
call select_connected(i, 1.d-6, ci_electronic_energy,zmq_socket_push)
|
|
!$OMP END TASK
|
|
enddo
|
|
!$OMP TASKWAIT
|
|
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
|