.. _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` .. 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 Needs: .. hlist:: :columns: 3 * :c:data:`zmq_state` .. 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_state` * :c:data:`zmq_context` 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:`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_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_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` .. 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_state` * :c:data:`zmq_socket_pull_tcp_address` * :c:data:`zmq_context` 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:`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_socket_pull_tcp_address` * :c:data:`zmq_context` 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_socket_pull_tcp_address` * :c:data:`zmq_context` 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_socket_pull_tcp_address` * :c:data:`zmq_context` 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_socket_pull_tcp_address` * :c:data:`zmq_context` 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:`zmq_state` * :c:data:`mpi_master` .. 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:`zmq_state` * :c:data:`mpi_master` .. 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:`zmq_state` * :c:data:`mpi_master` .. 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:`zmq_state` * :c:data:`mpi_master` .. 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:`zmq_state` * :c:data:`mpi_master` .. 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:`zmq_state` * :c:data:`mpi_master` .. 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:`zmq_state` * :c:data:`mpi_master` .. 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:`zmq_state` * :c:data:`mpi_master` .. 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