9
1
mirror of https://github.com/QuantumPackage/qp2.git synced 2024-12-24 12:33:30 +01:00
qp2/docs/source/modules/zmq.rst
2024-12-04 15:58:59 +01:00

1571 lines
26 KiB
ReStructuredText

.. _module_zmq:
.. program:: zmq
.. default-role:: option
===
zmq
===
Definition of |ZeroMQ| sockets and messages.
Providers
---------
.. c:var:: is_zmq_slave
File : :file:`zmq/utils.irp.f`
.. code:: fortran
logical :: is_zmq_slave
If |true|, the current process is a |ZeroMQ| slave.
.. c:var:: qp_run_address
File : :file:`zmq/utils.irp.f`
.. code:: fortran
character*(128) :: qp_run_address
integer :: zmq_port_start
Address of the qp_run socket
Example : tcp://130.120.229.139:12345
Needed by:
.. hlist::
:columns: 3
* :c:data:`zmq_socket_pull_tcp_address`
.. c:var:: zmq_context
File : :file:`zmq/utils.irp.f`
.. code:: fortran
integer(ZMQ_PTR) :: zmq_context
integer(omp_lock_kind) :: zmq_lock
Context for the ZeroMQ library
Needed by:
.. hlist::
:columns: 3
* :c:data:`ao_two_e_integrals_erf_in_map`
* :c:data:`ao_two_e_integrals_in_map`
.. c:var:: zmq_lock
File : :file:`zmq/utils.irp.f`
.. code:: fortran
integer(ZMQ_PTR) :: zmq_context
integer(omp_lock_kind) :: zmq_lock
Context for the ZeroMQ library
Needed by:
.. hlist::
:columns: 3
* :c:data:`ao_two_e_integrals_erf_in_map`
* :c:data:`ao_two_e_integrals_in_map`
.. c:var:: zmq_port_start
File : :file:`zmq/utils.irp.f`
.. code:: fortran
character*(128) :: qp_run_address
integer :: zmq_port_start
Address of the qp_run socket
Example : tcp://130.120.229.139:12345
Needed by:
.. hlist::
:columns: 3
* :c:data:`zmq_socket_pull_tcp_address`
.. c:var:: zmq_socket_pair_inproc_address
File : :file:`zmq/utils.irp.f`
.. code:: fortran
character*(128) :: zmq_socket_pull_tcp_address
character*(128) :: zmq_socket_pair_inproc_address
character*(128) :: zmq_socket_push_tcp_address
character*(128) :: zmq_socket_pull_inproc_address
character*(128) :: zmq_socket_push_inproc_address
character*(128) :: zmq_socket_sub_tcp_address
Socket which pulls the results (2)
Needs:
.. hlist::
:columns: 3
* :c:data:`qp_run_address`
Needed by:
.. hlist::
:columns: 3
* :c:data:`ao_two_e_integrals_erf_in_map`
* :c:data:`ao_two_e_integrals_in_map`
.. c:var:: zmq_socket_pull_inproc_address
File : :file:`zmq/utils.irp.f`
.. code:: fortran
character*(128) :: zmq_socket_pull_tcp_address
character*(128) :: zmq_socket_pair_inproc_address
character*(128) :: zmq_socket_push_tcp_address
character*(128) :: zmq_socket_pull_inproc_address
character*(128) :: zmq_socket_push_inproc_address
character*(128) :: zmq_socket_sub_tcp_address
Socket which pulls the results (2)
Needs:
.. hlist::
:columns: 3
* :c:data:`qp_run_address`
Needed by:
.. hlist::
:columns: 3
* :c:data:`ao_two_e_integrals_erf_in_map`
* :c:data:`ao_two_e_integrals_in_map`
.. c:var:: zmq_socket_pull_tcp_address
File : :file:`zmq/utils.irp.f`
.. code:: fortran
character*(128) :: zmq_socket_pull_tcp_address
character*(128) :: zmq_socket_pair_inproc_address
character*(128) :: zmq_socket_push_tcp_address
character*(128) :: zmq_socket_pull_inproc_address
character*(128) :: zmq_socket_push_inproc_address
character*(128) :: zmq_socket_sub_tcp_address
Socket which pulls the results (2)
Needs:
.. hlist::
:columns: 3
* :c:data:`qp_run_address`
Needed by:
.. hlist::
:columns: 3
* :c:data:`ao_two_e_integrals_erf_in_map`
* :c:data:`ao_two_e_integrals_in_map`
.. c:var:: zmq_socket_push_inproc_address
File : :file:`zmq/utils.irp.f`
.. code:: fortran
character*(128) :: zmq_socket_pull_tcp_address
character*(128) :: zmq_socket_pair_inproc_address
character*(128) :: zmq_socket_push_tcp_address
character*(128) :: zmq_socket_pull_inproc_address
character*(128) :: zmq_socket_push_inproc_address
character*(128) :: zmq_socket_sub_tcp_address
Socket which pulls the results (2)
Needs:
.. hlist::
:columns: 3
* :c:data:`qp_run_address`
Needed by:
.. hlist::
:columns: 3
* :c:data:`ao_two_e_integrals_erf_in_map`
* :c:data:`ao_two_e_integrals_in_map`
.. c:var:: zmq_socket_push_tcp_address
File : :file:`zmq/utils.irp.f`
.. code:: fortran
character*(128) :: zmq_socket_pull_tcp_address
character*(128) :: zmq_socket_pair_inproc_address
character*(128) :: zmq_socket_push_tcp_address
character*(128) :: zmq_socket_pull_inproc_address
character*(128) :: zmq_socket_push_inproc_address
character*(128) :: zmq_socket_sub_tcp_address
Socket which pulls the results (2)
Needs:
.. hlist::
:columns: 3
* :c:data:`qp_run_address`
Needed by:
.. hlist::
:columns: 3
* :c:data:`ao_two_e_integrals_erf_in_map`
* :c:data:`ao_two_e_integrals_in_map`
.. c:var:: zmq_socket_sub_tcp_address
File : :file:`zmq/utils.irp.f`
.. code:: fortran
character*(128) :: zmq_socket_pull_tcp_address
character*(128) :: zmq_socket_pair_inproc_address
character*(128) :: zmq_socket_push_tcp_address
character*(128) :: zmq_socket_pull_inproc_address
character*(128) :: zmq_socket_push_inproc_address
character*(128) :: zmq_socket_sub_tcp_address
Socket which pulls the results (2)
Needs:
.. hlist::
:columns: 3
* :c:data:`qp_run_address`
Needed by:
.. hlist::
:columns: 3
* :c:data:`ao_two_e_integrals_erf_in_map`
* :c:data:`ao_two_e_integrals_in_map`
.. c:var:: zmq_state
File : :file:`zmq/utils.irp.f`
.. code:: fortran
character*(128) :: zmq_state
Threads executing work through the ZeroMQ interface
Needed by:
.. hlist::
:columns: 3
* :c:data:`ao_two_e_integrals_erf_in_map`
* :c:data:`ao_two_e_integrals_in_map`
Subroutines / functions
-----------------------
.. c:function:: add_task_to_taskserver:
File : :file:`zmq/utils.irp.f`
.. code:: fortran
integer function add_task_to_taskserver(zmq_to_qp_run_socket,task)
Get a task from the task server
Needs:
.. hlist::
:columns: 3
* :c:data:`zmq_state`
.. c:function:: connect_to_taskserver:
File : :file:`zmq/utils.irp.f`
.. code:: fortran
integer function connect_to_taskserver(zmq_to_qp_run_socket,worker_id,thread)
Connect to the task server and obtain the worker ID
Needs:
.. hlist::
:columns: 3
* :c:data:`zmq_state`
Calls:
.. hlist::
:columns: 3
* :c:func:`sscanf_ssds`
.. c:function:: disconnect_from_taskserver:
File : :file:`zmq/utils.irp.f`
.. code:: fortran
integer function disconnect_from_taskserver(zmq_to_qp_run_socket, worker_id)
Disconnect from the task server
Needs:
.. hlist::
:columns: 3
* :c:data:`zmq_state`
.. c:function:: disconnect_from_taskserver_state:
File : :file:`zmq/utils.irp.f`
.. code:: fortran
integer function disconnect_from_taskserver_state(zmq_to_qp_run_socket, worker_id, state)
Disconnect from the task server
Calls:
.. hlist::
:columns: 3
* :c:func:`sscanf_ss`
.. c:function:: end_parallel_job:
File : :file:`zmq/utils.irp.f`
.. code:: fortran
subroutine end_parallel_job(zmq_to_qp_run_socket,zmq_socket_pull,name_in)
End a new parallel job with name 'name'. The slave tasks execute subroutine 'slave'
Needs:
.. hlist::
:columns: 3
* :c:data:`zmq_context`
* :c:data:`zmq_state`
Called by:
.. hlist::
:columns: 3
* :c:data:`ao_two_e_integrals_erf_in_map`
* :c:data:`ao_two_e_integrals_in_map`
* :c:func:`h_s2_u_0_nstates_zmq`
* :c:func:`h_u_0_nstates_zmq`
* :c:func:`zmq_pt2`
* :c:func:`zmq_selection`
Calls:
.. hlist::
:columns: 3
* :c:func:`end_zmq_pull_socket`
* :c:func:`end_zmq_to_qp_run_socket`
* :c:func:`lowercase`
* :c:func:`omp_set_lock`
* :c:func:`omp_unset_lock`
* :c:func:`sleep`
.. c:function:: end_zmq_pair_socket:
File : :file:`zmq/utils.irp.f`
.. code:: fortran
subroutine end_zmq_pair_socket(zmq_socket_pair)
Terminate socket on which the results are sent.
Needs:
.. hlist::
:columns: 3
* :c:data:`zmq_context`
Calls:
.. hlist::
:columns: 3
* :c:func:`omp_set_lock`
* :c:func:`omp_unset_lock`
.. c:function:: end_zmq_pull_socket:
File : :file:`zmq/utils.irp.f`
.. code:: fortran
subroutine end_zmq_pull_socket(zmq_socket_pull)
Terminate socket on which the results are sent.
Needs:
.. hlist::
:columns: 3
* :c:data:`zmq_context`
Called by:
.. hlist::
:columns: 3
* :c:func:`end_parallel_job`
Calls:
.. hlist::
:columns: 3
* :c:func:`omp_set_lock`
* :c:func:`omp_unset_lock`
.. c:function:: end_zmq_push_socket:
File : :file:`zmq/utils.irp.f`
.. code:: fortran
subroutine end_zmq_push_socket(zmq_socket_push,thread)
Terminate socket on which the results are sent.
Needs:
.. hlist::
:columns: 3
* :c:data:`zmq_context`
Called by:
.. hlist::
:columns: 3
* :c:func:`ao_two_e_integrals_erf_in_map_slave`
* :c:func:`ao_two_e_integrals_in_map_slave`
* :c:func:`davidson_csf_run_slave`
* :c:func:`davidson_nos2_run_slave`
* :c:func:`davidson_run_slave`
* :c:func:`run_pt2_slave_large`
* :c:func:`run_pt2_slave_small`
* :c:func:`run_selection_slave`
Calls:
.. hlist::
:columns: 3
* :c:func:`omp_set_lock`
* :c:func:`omp_unset_lock`
.. c:function:: end_zmq_sub_socket:
File : :file:`zmq/utils.irp.f`
.. code:: fortran
subroutine end_zmq_sub_socket(zmq_socket_sub)
Terminate socket on which the results are sent.
Needs:
.. hlist::
:columns: 3
* :c:data:`zmq_context`
Called by:
.. hlist::
:columns: 3
* :c:func:`wait_for_next_state`
* :c:func:`wait_for_state`
* :c:func:`wait_for_states`
Calls:
.. hlist::
:columns: 3
* :c:func:`omp_set_lock`
* :c:func:`omp_unset_lock`
.. c:function:: end_zmq_to_qp_run_socket:
File : :file:`zmq/utils.irp.f`
.. code:: fortran
subroutine end_zmq_to_qp_run_socket(zmq_to_qp_run_socket)
Terminate the socket from the application to qp_run
Called by:
.. hlist::
:columns: 3
* :c:func:`ao_two_e_integrals_erf_in_map_collector`
* :c:func:`ao_two_e_integrals_erf_in_map_slave`
* :c:func:`ao_two_e_integrals_in_map_collector`
* :c:func:`ao_two_e_integrals_in_map_slave`
* :c:func:`davidson_csf_run_slave`
* :c:func:`davidson_nos2_run_slave`
* :c:func:`davidson_run_slave`
* :c:func:`end_parallel_job`
* :c:func:`pt2_collector`
* :c:func:`run_pt2_slave_large`
* :c:func:`run_pt2_slave_small`
* :c:func:`run_selection_slave`
* :c:func:`selection_collector`
.. c:function:: get_task_from_taskserver:
File : :file:`zmq/utils.irp.f`
.. code:: fortran
integer function get_task_from_taskserver(zmq_to_qp_run_socket,worker_id,task_id,task)
Get a task from the task server
Needs:
.. hlist::
:columns: 3
* :c:data:`zmq_state`
Calls:
.. hlist::
:columns: 3
* :c:func:`sscanf_sd`
.. c:function:: get_tasks_from_taskserver:
File : :file:`zmq/utils.irp.f`
.. code:: fortran
integer function get_tasks_from_taskserver(zmq_to_qp_run_socket,worker_id,task_id,task,n_tasks)
Get multiple tasks from the task server
Needs:
.. hlist::
:columns: 3
* :c:data:`zmq_state`
.. c:function:: new_parallel_job:
File : :file:`zmq/utils.irp.f`
.. code:: fortran
subroutine new_parallel_job(zmq_to_qp_run_socket,zmq_socket_pull,name_in)
Start a new parallel job with name 'name'. The slave tasks execute subroutine 'slave'
Needs:
.. hlist::
:columns: 3
* :c:data:`zmq_context`
* :c:data:`zmq_socket_pull_tcp_address`
* :c:data:`zmq_state`
Called by:
.. hlist::
:columns: 3
* :c:data:`ao_two_e_integrals_erf_in_map`
* :c:data:`ao_two_e_integrals_in_map`
* :c:func:`h_s2_u_0_nstates_zmq`
* :c:func:`h_u_0_nstates_zmq`
* :c:func:`zmq_pt2`
* :c:func:`zmq_selection`
Calls:
.. hlist::
:columns: 3
* :c:func:`lowercase`
* :c:func:`omp_set_lock`
* :c:func:`omp_unset_lock`
.. c:function:: new_zmq_pair_socket:
File : :file:`zmq/utils.irp.f`
.. code:: fortran
function new_zmq_pair_socket(bind)
Socket on which the collector and the main communicate
Needs:
.. hlist::
:columns: 3
* :c:data:`zmq_context`
* :c:data:`zmq_socket_pull_tcp_address`
Calls:
.. hlist::
:columns: 3
* :c:func:`omp_set_lock`
* :c:func:`omp_unset_lock`
.. c:function:: new_zmq_pull_socket:
File : :file:`zmq/utils.irp.f`
.. code:: fortran
function new_zmq_pull_socket()
Socket on which the results are sent. If thread is 1, use inproc
Needs:
.. hlist::
:columns: 3
* :c:data:`qp_run_address`
* :c:data:`zmq_context`
* :c:data:`zmq_socket_pull_tcp_address`
Calls:
.. hlist::
:columns: 3
* :c:func:`omp_set_lock`
* :c:func:`omp_unset_lock`
* :c:func:`sleep`
.. c:function:: new_zmq_push_socket:
File : :file:`zmq/utils.irp.f`
.. code:: fortran
function new_zmq_push_socket(thread)
Socket on which the results are sent. If thread is 1, use inproc
Needs:
.. hlist::
:columns: 3
* :c:data:`zmq_context`
* :c:data:`zmq_socket_pull_tcp_address`
Calls:
.. hlist::
:columns: 3
* :c:func:`omp_set_lock`
* :c:func:`omp_unset_lock`
.. c:function:: new_zmq_sub_socket:
File : :file:`zmq/utils.irp.f`
.. code:: fortran
function new_zmq_sub_socket()
Socket to read the state published by the Task server
Needs:
.. hlist::
:columns: 3
* :c:data:`zmq_context`
* :c:data:`zmq_socket_pull_tcp_address`
Calls:
.. hlist::
:columns: 3
* :c:func:`omp_set_lock`
* :c:func:`omp_unset_lock`
.. c:function:: new_zmq_to_qp_run_socket:
File : :file:`zmq/utils.irp.f`
.. code:: fortran
function new_zmq_to_qp_run_socket()
Socket on which the qp_run process replies
Needs:
.. hlist::
:columns: 3
* :c:data:`qp_run_address`
* :c:data:`zmq_context`
Calls:
.. hlist::
:columns: 3
* :c:func:`omp_set_lock`
* :c:func:`omp_unset_lock`
.. c:function:: reset_zmq_addresses:
File : :file:`zmq/utils.irp.f`
.. code:: fortran
subroutine reset_zmq_addresses
Socket which pulls the results (2)
Needs:
.. hlist::
:columns: 3
* :c:data:`qp_run_address`
* :c:data:`zmq_socket_pull_tcp_address`
Called by:
.. hlist::
:columns: 3
* :c:func:`switch_qp_run_to_master`
.. c:function:: switch_qp_run_to_master:
File : :file:`zmq/utils.irp.f`
.. code:: fortran
subroutine switch_qp_run_to_master
Address of the master qp_run socket
Example : tcp://130.120.229.139:12345
Needs:
.. hlist::
:columns: 3
* :c:data:`is_zmq_slave`
* :c:data:`qp_run_address`
Called by:
.. hlist::
:columns: 3
* :c:func:`run_slave_cipsi`
Calls:
.. hlist::
:columns: 3
* :c:func:`getenv`
* :c:func:`reset_zmq_addresses`
.. c:function:: task_done_to_taskserver:
File : :file:`zmq/utils.irp.f`
.. code:: fortran
integer function task_done_to_taskserver(zmq_to_qp_run_socket, worker_id, task_id)
Get a task from the task server
Needs:
.. hlist::
:columns: 3
* :c:data:`zmq_state`
.. c:function:: tasks_done_to_taskserver:
File : :file:`zmq/utils.irp.f`
.. code:: fortran
integer function tasks_done_to_taskserver(zmq_to_qp_run_socket, worker_id, task_id, n_tasks)
Get a task from the task server
Needs:
.. hlist::
:columns: 3
* :c:data:`zmq_state`
.. c:function:: wait_for_next_state:
File : :file:`zmq/utils.irp.f`
.. code:: fortran
subroutine wait_for_next_state(state)
Calls:
.. hlist::
:columns: 3
* :c:func:`end_zmq_sub_socket`
.. c:function:: wait_for_state:
File : :file:`zmq/utils.irp.f`
.. code:: fortran
subroutine wait_for_state(state_wait,state)
Wait for the ZMQ state to be ready
Calls:
.. hlist::
:columns: 3
* :c:func:`end_zmq_sub_socket`
.. c:function:: wait_for_states:
File : :file:`zmq/utils.irp.f`
.. code:: fortran
subroutine wait_for_states(state_wait,state,n)
Wait for the ZMQ state to be ready
Called by:
.. hlist::
:columns: 3
* :c:func:`run_slave_main`
Calls:
.. hlist::
:columns: 3
* :c:func:`end_zmq_sub_socket`
.. c:function:: zmq_abort:
File : :file:`zmq/utils.irp.f`
.. code:: fortran
integer function zmq_abort(zmq_to_qp_run_socket)
Aborts a running parallel computation
Calls:
.. hlist::
:columns: 3
* :c:func:`sleep`
.. c:function:: zmq_delete_task:
File : :file:`zmq/utils.irp.f`
.. code:: fortran
integer function zmq_delete_task(zmq_to_qp_run_socket,zmq_socket_pull,task_id,more)
When a task is done, it has to be removed from the list of tasks on the qp_run
queue. This guarantees that the results have been received in the pull.
Needs:
.. hlist::
:columns: 3
* :c:data:`zmq_state`
.. c:function:: zmq_delete_task_async_recv:
File : :file:`zmq/utils.irp.f`
.. code:: fortran
integer function zmq_delete_task_async_recv(zmq_to_qp_run_socket,more,sending)
When a task is done, it has to be removed from the list of tasks on the qp_run
queue. This guarantees that the results have been received in the pull.
.. c:function:: zmq_delete_task_async_send:
File : :file:`zmq/utils.irp.f`
.. code:: fortran
integer function zmq_delete_task_async_send(zmq_to_qp_run_socket,task_id,sending)
When a task is done, it has to be removed from the list of tasks on the qp_run
queue. This guarantees that the results have been received in the pull.
Needs:
.. hlist::
:columns: 3
* :c:data:`zmq_state`
.. c:function:: zmq_delete_tasks:
File : :file:`zmq/utils.irp.f`
.. code:: fortran
integer function zmq_delete_tasks(zmq_to_qp_run_socket,zmq_socket_pull,task_id,n_tasks,more)
When a task is done, it has to be removed from the list of tasks on the qp_run
queue. This guarantees that the results have been received in the pull.
Needs:
.. hlist::
:columns: 3
* :c:data:`zmq_state`
.. c:function:: zmq_delete_tasks_async_recv:
File : :file:`zmq/utils.irp.f`
.. code:: fortran
integer function zmq_delete_tasks_async_recv(zmq_to_qp_run_socket,more,sending)
When a task is done, it has to be removed from the list of tasks on the qp_run
queue. This guarantees that the results have been received in the pull.
.. c:function:: zmq_delete_tasks_async_send:
File : :file:`zmq/utils.irp.f`
.. code:: fortran
integer function zmq_delete_tasks_async_send(zmq_to_qp_run_socket,task_id,n_tasks,sending)
When a task is done, it has to be removed from the list of tasks on the qp_run
queue. This guarantees that the results have been received in the pull.
Needs:
.. hlist::
:columns: 3
* :c:data:`zmq_state`
.. c:function:: zmq_get8_dvector:
File : :file:`zmq/put_get.irp.f`
.. code:: fortran
integer function zmq_get8_dvector(zmq_to_qp_run_socket, worker_id, name, x, size_x)
Get a float vector from the qp_run scheduler
Needs:
.. hlist::
:columns: 3
* :c:data:`mpi_master`
* :c:data:`zmq_state`
.. c:function:: zmq_get8_ivector:
File : :file:`zmq/put_get.irp.f`
.. code:: fortran
integer function zmq_get8_ivector(zmq_to_qp_run_socket, worker_id, name, x, size_x)
Get a vector of integers from the qp_run scheduler
Needs:
.. hlist::
:columns: 3
* :c:data:`mpi_master`
* :c:data:`zmq_state`
.. c:function:: zmq_get_dmatrix:
File : :file:`zmq/put_get.irp.f`
.. code:: fortran
integer function zmq_get_dmatrix(zmq_to_qp_run_socket, worker_id, name, x, size_x1, size_x2, sze)
Get a float vector from the qp_run scheduler
Needs:
.. hlist::
:columns: 3
* :c:data:`mpi_master`
* :c:data:`zmq_state`
.. c:function:: zmq_get_dvector:
File : :file:`zmq/put_get.irp.f`
.. code:: fortran
integer function zmq_get_dvector(zmq_to_qp_run_socket, worker_id, name, x, size_x)
Get a float vector from the qp_run scheduler
Needs:
.. hlist::
:columns: 3
* :c:data:`mpi_master`
* :c:data:`zmq_state`
.. c:function:: zmq_get_i8matrix:
File : :file:`zmq/put_get.irp.f`
.. code:: fortran
integer function zmq_get_i8matrix(zmq_to_qp_run_socket, worker_id, name, x, size_x1, size_x2, sze)
Get a float vector from the qp_run scheduler
Needs:
.. hlist::
:columns: 3
* :c:data:`mpi_master`
* :c:data:`zmq_state`
.. c:function:: zmq_get_imatrix:
File : :file:`zmq/put_get.irp.f`
.. code:: fortran
integer function zmq_get_imatrix(zmq_to_qp_run_socket, worker_id, name, x, size_x1, size_x2, sze)
Get a float vector from the qp_run scheduler
Needs:
.. hlist::
:columns: 3
* :c:data:`mpi_master`
* :c:data:`zmq_state`
.. c:function:: zmq_get_int:
File : :file:`zmq/put_get.irp.f`
.. code:: fortran
integer function zmq_get_int(zmq_to_qp_run_socket, worker_id, name, x)
Get a vector of integers from the qp_run scheduler
Needs:
.. hlist::
:columns: 3
* :c:data:`mpi_master`
* :c:data:`zmq_state`
.. c:function:: zmq_get_int_nompi:
File : :file:`zmq/put_get.irp.f`
.. code:: fortran
integer function zmq_get_int_nompi(zmq_to_qp_run_socket, worker_id, name, x)
Get a vector of integers from the qp_run scheduler
Needs:
.. hlist::
:columns: 3
* :c:data:`zmq_state`
.. c:function:: zmq_get_ivector:
File : :file:`zmq/put_get.irp.f`
.. code:: fortran
integer function zmq_get_ivector(zmq_to_qp_run_socket, worker_id, name, x, size_x)
Get a vector of integers from the qp_run scheduler
Needs:
.. hlist::
:columns: 3
* :c:data:`mpi_master`
* :c:data:`zmq_state`
.. c:function:: zmq_port:
File : :file:`zmq/utils.irp.f`
.. code:: fortran
function zmq_port(ishift)
Return the value of the ZMQ port from the corresponding integer
Needs:
.. hlist::
:columns: 3
* :c:data:`qp_run_address`
.. c:function:: zmq_put8_dvector:
File : :file:`zmq/put_get.irp.f`
.. code:: fortran
integer function zmq_put8_dvector(zmq_to_qp_run_socket, worker_id, name, x, size_x)
Put a float vector on the qp_run scheduler
Needs:
.. hlist::
:columns: 3
* :c:data:`zmq_state`
.. c:function:: zmq_put8_ivector:
File : :file:`zmq/put_get.irp.f`
.. code:: fortran
integer function zmq_put8_ivector(zmq_to_qp_run_socket, worker_id, name, x, size_x)
Put a vector of integers on the qp_run scheduler
Needs:
.. hlist::
:columns: 3
* :c:data:`zmq_state`
.. c:function:: zmq_put_dmatrix:
File : :file:`zmq/put_get.irp.f`
.. code:: fortran
integer function zmq_put_dmatrix(zmq_to_qp_run_socket, worker_id, name, x, size_x1, size_x2, sze)
Put a float vector on the qp_run scheduler
Needs:
.. hlist::
:columns: 3
* :c:data:`zmq_state`
.. c:function:: zmq_put_dvector:
File : :file:`zmq/put_get.irp.f`
.. code:: fortran
integer function zmq_put_dvector(zmq_to_qp_run_socket, worker_id, name, x, size_x)
Put a float vector on the qp_run scheduler
Needs:
.. hlist::
:columns: 3
* :c:data:`zmq_state`
.. c:function:: zmq_put_i8matrix:
File : :file:`zmq/put_get.irp.f`
.. code:: fortran
integer function zmq_put_i8matrix(zmq_to_qp_run_socket, worker_id, name, x, size_x1, size_x2, sze)
Put a float vector on the qp_run scheduler
Needs:
.. hlist::
:columns: 3
* :c:data:`zmq_state`
.. c:function:: zmq_put_imatrix:
File : :file:`zmq/put_get.irp.f`
.. code:: fortran
integer function zmq_put_imatrix(zmq_to_qp_run_socket, worker_id, name, x, size_x1, size_x2, sze)
Put a float vector on the qp_run scheduler
Needs:
.. hlist::
:columns: 3
* :c:data:`zmq_state`
.. c:function:: zmq_put_int:
File : :file:`zmq/put_get.irp.f`
.. code:: fortran
integer function zmq_put_int(zmq_to_qp_run_socket, worker_id, name, x)
Put a vector of integers on the qp_run scheduler
Needs:
.. hlist::
:columns: 3
* :c:data:`zmq_state`
.. c:function:: zmq_put_ivector:
File : :file:`zmq/put_get.irp.f`
.. code:: fortran
integer function zmq_put_ivector(zmq_to_qp_run_socket, worker_id, name, x, size_x)
Put a vector of integers on the qp_run scheduler
Needs:
.. hlist::
:columns: 3
* :c:data:`zmq_state`
.. c:function:: zmq_set_running:
File : :file:`zmq/utils.irp.f`
.. code:: fortran
integer function zmq_set_running(zmq_to_qp_run_socket)
Set the job to Running in QP-run