From ca3b0e98251e0df27396c7744495da8850e25296 Mon Sep 17 00:00:00 2001 From: Anthony Scemama Date: Wed, 7 Mar 2018 19:45:52 +0100 Subject: [PATCH 1/5] Trying to fix jbuilder bug in OCaml installation --- install/scripts/install_ocaml.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/install/scripts/install_ocaml.sh b/install/scripts/install_ocaml.sh index 9e8a2b25..91099fa2 100755 --- a/install/scripts/install_ocaml.sh +++ b/install/scripts/install_ocaml.sh @@ -5,7 +5,7 @@ QP_ROOT=$PWD cd - # Normal installation -PACKAGES="core.v0.10.0 cryptokit ocamlfind sexplib.v0.10.0 ZMQ ppx_sexp_conv ppx_deriving" +PACKAGES="core.v0.10.0 cryptokit ocamlfind sexplib.v0.10.0 ZMQ ppx_sexp_conv ppx_deriving jbuilder.1.0+beta17" # Needed for ZeroMQ export C_INCLUDE_PATH="${QP_ROOT}"/include:"${C_INCLUDE_PATH}" From 548aa4f2fb7b19c03da4e65c765c201b867fa02c Mon Sep 17 00:00:00 2001 From: Thomas Applencourt Date: Mon, 7 May 2018 16:37:07 -0500 Subject: [PATCH 2/5] Update README.md --- README.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/README.md b/README.md index 52f949c3..39e05a4a 100644 --- a/README.md +++ b/README.md @@ -163,3 +163,6 @@ It's caused when we call the DGEMM routine of LAPACK. Set `ulimit -s unlimited`, before runing `qp_run`. It seems to fix the problem. +#### Error: f77zmq not symbol found + +In the Makefile of the f77zmq, you should NOT use ar but `libtool -static` From de60a016c898718e1cd5b8ad04b2443e2d212ca5 Mon Sep 17 00:00:00 2001 From: Anthony Scemama Date: Mon, 7 May 2018 23:44:58 +0200 Subject: [PATCH 3/5] Delete tree_dependency.png --- src/Davidson/tree_dependency.png | 0 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 src/Davidson/tree_dependency.png diff --git a/src/Davidson/tree_dependency.png b/src/Davidson/tree_dependency.png deleted file mode 100644 index e69de29b..00000000 From 596cb71894038a6e9a886ed48cdf0a3f09a707ef Mon Sep 17 00:00:00 2001 From: Anthony Scemama Date: Mon, 7 May 2018 23:26:33 +0200 Subject: [PATCH 4/5] Fixed reading MOs --- src/Utils/fortran_mmap.c | 2 +- src/Utils/map_functions.irp.f | 22 ++++++++++++++-------- src/ZMQ/utils.irp.f | 14 +++++++------- 3 files changed, 22 insertions(+), 16 deletions(-) diff --git a/src/Utils/fortran_mmap.c b/src/Utils/fortran_mmap.c index 41ad93ec..4ecffe56 100644 --- a/src/Utils/fortran_mmap.c +++ b/src/Utils/fortran_mmap.c @@ -33,7 +33,7 @@ void* mmap_fortran(char* filename, size_t bytes, int* file_descr, int read_only) exit(EXIT_FAILURE); } - result = lseek(fd, bytes, SEEK_SET); + result = lseek(fd, bytes+1, SEEK_SET); if (result == -1) { close(fd); printf("%s:\n", filename); diff --git a/src/Utils/map_functions.irp.f b/src/Utils/map_functions.irp.f index c7ea6938..8c63f525 100644 --- a/src/Utils/map_functions.irp.f +++ b/src/Utils/map_functions.irp.f @@ -74,6 +74,8 @@ subroutine map_load_from_disk(filename,map) integer :: fd(3) integer*8 :: i,k,l integer*4 :: j,n_elements + integer(cache_key_kind), pointer :: key_p(:) + real(integral_kind), pointer :: value_p(:) if (map % consolidated) then stop 'map already consolidated' @@ -96,21 +98,25 @@ subroutine map_load_from_disk(filename,map) do i=0_8, map % map_size deallocate(map % map(i) % value) deallocate(map % map(i) % key) - map % map(i) % value => map % consolidated_value ( map % consolidated_idx (i+1_8) :) - map % map(i) % key => map % consolidated_key ( map % consolidated_idx (i+1_8) :) - map % map(i) % sorted = .True. - n_elements = int( map % consolidated_idx (i+2_8) - k, 4) k = map % consolidated_idx (i+2_8) + l = map % consolidated_idx (i+1_8) + n_elements = int(k - l, 4) + key_p => map % consolidated_key (l:l+n_elements) + value_p => map % consolidated_value ( l:l+n_elements ) + print *, i, n_elements + map % map(i) % key => key_p + map % map(i) % value => value_p + map % map(i) % sorted = .True. map % map(i) % map_size = n_elements map % map(i) % n_elements = n_elements ! Load memory from disk do j=1,n_elements - x = x + map % map(i) % value(j) - l = iand(l,int(map % map(i) % key(j),8)) - if (map % map(i) % value(j) > 1.e30) then + x = x + value_p(j) + l = iand(l,int(key_p(j),8)) + if (value_p(j) > 1.e30) then stop 'Error in integrals file' endif - if (map % map(i) % key(j) < 0) then + if (key_p(j) < 0) then stop 'Error in integrals file' endif enddo diff --git a/src/ZMQ/utils.irp.f b/src/ZMQ/utils.irp.f index 570cf30f..78b8abff 100644 --- a/src/ZMQ/utils.irp.f +++ b/src/ZMQ/utils.irp.f @@ -148,12 +148,12 @@ function new_zmq_to_qp_run_socket() stop 'Unable to create zmq req socket' endif - rc = f77_zmq_setsockopt(new_zmq_to_qp_run_socket, ZMQ_SNDTIMEO, 30000, 4) + rc = f77_zmq_setsockopt(new_zmq_to_qp_run_socket, ZMQ_SNDTIMEO, 60000, 4) if (rc /= 0) then stop 'Unable to set send timeout in new_zmq_to_qp_run_socket' endif - rc = f77_zmq_setsockopt(new_zmq_to_qp_run_socket, ZMQ_RCVTIMEO, 30000, 4) + rc = f77_zmq_setsockopt(new_zmq_to_qp_run_socket, ZMQ_RCVTIMEO, 60000, 4) if (rc /= 0) then stop 'Unable to set recv timeout in new_zmq_to_qp_run_socket' endif @@ -250,7 +250,7 @@ IRP_ENDIF stop 'Unable to create zmq pull socket' endif - rc = f77_zmq_setsockopt(new_zmq_pull_socket,ZMQ_LINGER,30000,4) + rc = f77_zmq_setsockopt(new_zmq_pull_socket,ZMQ_LINGER,60000,4) if (rc /= 0) then stop 'Unable to set ZMQ_LINGER on pull socket' endif @@ -332,7 +332,7 @@ IRP_ENDIF stop 'Unable to create zmq push socket' endif - rc = f77_zmq_setsockopt(new_zmq_push_socket,ZMQ_LINGER,30000,4) + rc = f77_zmq_setsockopt(new_zmq_push_socket,ZMQ_LINGER,60000,4) if (rc /= 0) then stop 'Unable to set ZMQ_LINGER on push socket' endif @@ -352,7 +352,7 @@ IRP_ENDIF stop 'Unable to set ZMQ_IMMEDIATE on push socket' endif - rc = f77_zmq_setsockopt(new_zmq_push_socket, ZMQ_SNDTIMEO, 30000, 4) + rc = f77_zmq_setsockopt(new_zmq_push_socket, ZMQ_SNDTIMEO, 60000, 4) if (rc /= 0) then stop 'Unable to set send timout in new_zmq_push_socket' endif @@ -488,7 +488,7 @@ subroutine end_zmq_push_socket(zmq_socket_push,thread) integer :: rc character*(8), external :: zmq_port - rc = f77_zmq_setsockopt(zmq_socket_push,ZMQ_LINGER,30000,4) + rc = f77_zmq_setsockopt(zmq_socket_push,ZMQ_LINGER,60000,4) if (rc /= 0) then stop 'Unable to set ZMQ_LINGER on push socket' endif @@ -1014,7 +1014,7 @@ subroutine end_zmq_to_qp_run_socket(zmq_to_qp_run_socket) character*(8), external :: zmq_port integer :: rc - rc = f77_zmq_setsockopt(zmq_to_qp_run_socket,ZMQ_LINGER,30000,4) + rc = f77_zmq_setsockopt(zmq_to_qp_run_socket,ZMQ_LINGER,60000,4) if (rc /= 0) then stop 'Unable to set ZMQ_LINGER on zmq_to_qp_run_socket' endif From 1311fd72bd9519947354a190d556041c81fc02e4 Mon Sep 17 00:00:00 2001 From: Anthony Scemama Date: Wed, 9 May 2018 11:31:32 +0200 Subject: [PATCH 5/5] Changes for OCaml zmq-5.0 --- install/scripts/install_ocaml.sh | 2 +- ocaml/TaskServer.ml | 106 +++++++++--------- ocaml/_tags | 2 +- ocaml/qp_run.ml | 12 +- scripts/ezfio_interface/ei_handler.py | 2 +- .../qp_convert_output_to_ezfio.py | 2 +- 6 files changed, 63 insertions(+), 63 deletions(-) diff --git a/install/scripts/install_ocaml.sh b/install/scripts/install_ocaml.sh index 91099fa2..cf5ad505 100755 --- a/install/scripts/install_ocaml.sh +++ b/install/scripts/install_ocaml.sh @@ -5,7 +5,7 @@ QP_ROOT=$PWD cd - # Normal installation -PACKAGES="core.v0.10.0 cryptokit ocamlfind sexplib.v0.10.0 ZMQ ppx_sexp_conv ppx_deriving jbuilder.1.0+beta17" +PACKAGES="core.v0.10.0 cryptokit ocamlfind sexplib.v0.10.0 zmq ppx_sexp_conv ppx_deriving jbuilder.1.0+beta17" # Needed for ZeroMQ export C_INCLUDE_PATH="${QP_ROOT}"/include:"${C_INCLUDE_PATH}" diff --git a/ocaml/TaskServer.ml b/ocaml/TaskServer.ml index 170e011a..c7f969f1 100644 --- a/ocaml/TaskServer.ml +++ b/ocaml/TaskServer.ml @@ -47,10 +47,10 @@ let debug str = let zmq_context = - ZMQ.Context.create () + Zmq.Context.create () let () = - ZMQ.Context.set_io_threads zmq_context 8 + Zmq.Context.set_io_threads zmq_context 8 let bind_socket ~socket_type ~socket ~port = @@ -61,7 +61,7 @@ let bind_socket ~socket_type ~socket ~port = | -1 -> () | i -> try - ZMQ.Socket.bind socket @@ Printf.sprintf "tcp://*:%d" port; + Zmq.Socket.bind socket @@ Printf.sprintf "tcp://*:%d" port; loop (-1) with | Unix.Unix_error _ -> (Time.pause @@ Time.Span.of_sec 1. ; loop (i-1) ) @@ -105,31 +105,31 @@ let ip_address = lazy ( let reply_ok rep_socket = Message.Ok_msg.create |> Message.Ok_msg.to_string - |> ZMQ.Socket.send rep_socket + |> Zmq.Socket.send rep_socket let reply_wrong_state rep_socket = Message.Error_msg.create "Wrong state" |> Message.Error_msg.to_string - |> ZMQ.Socket.send rep_socket + |> Zmq.Socket.send rep_socket let stop ~port = debug "STOP"; let req_socket = - ZMQ.Socket.create zmq_context ZMQ.Socket.req + Zmq.Socket.create zmq_context Zmq.Socket.req and address = Printf.sprintf "tcp://localhost:%d" port in - ZMQ.Socket.set_linger_period req_socket 1_000_000; - ZMQ.Socket.connect req_socket address; + Zmq.Socket.set_linger_period req_socket 1_000_000; + Zmq.Socket.connect req_socket address; Message.Terminate (Message.Terminate_msg.create) |> Message.to_string - |> ZMQ.Socket.send req_socket ; + |> Zmq.Socket.send req_socket ; let msg = - ZMQ.Socket.recv req_socket + Zmq.Socket.recv req_socket |> Message.of_string in let () = @@ -137,8 +137,8 @@ let stop ~port = | Message.Ok _ -> () | _ -> failwith "Problem in termination" in - ZMQ.Socket.set_linger_period req_socket 1_000; - ZMQ.Socket.close req_socket + Zmq.Socket.set_linger_period req_socket 1_000; + Zmq.Socket.close req_socket let new_job msg program_state rep_socket pair_socket = @@ -166,7 +166,7 @@ let new_job msg program_state rep_socket pair_socket = in reply_ok rep_socket; string_of_pub_state Waiting - |> ZMQ.Socket.send pair_socket ; + |> Zmq.Socket.send pair_socket ; result let change_pub_state msg program_state rep_socket pair_socket = @@ -186,7 +186,7 @@ let change_pub_state msg program_state rep_socket pair_socket = in reply_ok rep_socket; string_of_pub_state msg - |> ZMQ.Socket.send pair_socket ; + |> Zmq.Socket.send pair_socket ; program_state @@ -216,7 +216,7 @@ let end_job msg program_state rep_socket pair_socket = Printf.sprintf "waiting for %d slaves..." n |> Message.Error_msg.create |> Message.Error_msg.to_string - |> ZMQ.Socket.send rep_socket ; + |> Zmq.Socket.send rep_socket ; program_state in @@ -227,13 +227,13 @@ let end_job msg program_state rep_socket pair_socket = if (msg.Message.Endjob_msg.state = force_state) then begin string_of_pub_state Waiting - |> ZMQ.Socket.send pair_socket ; + |> Zmq.Socket.send pair_socket ; success () end else if (msg.Message.Endjob_msg.state = state) then begin string_of_pub_state Waiting - |> ZMQ.Socket.send pair_socket ; + |> Zmq.Socket.send pair_socket ; if (Queuing_system.number_of_clients program_state.queue = 0) then success () else @@ -280,7 +280,7 @@ let connect msg program_state rep_socket = Message.ConnectReply (Message.ConnectReply_msg.create ~state:state ~client_id ~push_address) |> Message.to_string - |> ZMQ.Socket.send rep_socket ; + |> Zmq.Socket.send rep_socket ; { program_state with queue = new_queue } @@ -306,7 +306,7 @@ let disconnect msg program_state rep_socket = in Message.DisconnectReply (Message.DisconnectReply_msg.create ~state) |> Message.to_string - |> ZMQ.Socket.send rep_socket ; + |> Zmq.Socket.send rep_socket ; new_program_state in @@ -352,7 +352,7 @@ let del_task msg program_state rep_socket = in Message.DelTaskReply (Message.DelTaskReply_msg.create ~task_ids ~more) |> Message.to_string - |> ZMQ.Socket.send ~block:true rep_socket ; (** /!\ Has to be blocking *) + |> Zmq.Socket.send ~block:true rep_socket ; (** /!\ Has to be blocking *) new_program_state in @@ -426,10 +426,10 @@ let get_task msg program_state rep_socket pair_socket = if no_task then string_of_pub_state Waiting - |> ZMQ.Socket.send pair_socket + |> Zmq.Socket.send pair_socket else string_of_pub_state (Running (Message.State.to_string state)) - |> ZMQ.Socket.send pair_socket; + |> Zmq.Socket.send pair_socket; let new_program_state = { program_state with @@ -440,7 +440,7 @@ let get_task msg program_state rep_socket pair_socket = Message.GetTaskReply (Message.GetTaskReply_msg.create ~task ~task_id) |> Message.to_string - |> ZMQ.Socket.send rep_socket ; + |> Zmq.Socket.send rep_socket ; new_program_state in @@ -498,10 +498,10 @@ let get_tasks msg program_state rep_socket pair_socket = if no_task then string_of_pub_state Waiting - |> ZMQ.Socket.send pair_socket + |> Zmq.Socket.send pair_socket else string_of_pub_state (Running (Message.State.to_string state)) - |> ZMQ.Socket.send pair_socket; + |> Zmq.Socket.send pair_socket; let new_program_state = { program_state with @@ -512,7 +512,7 @@ let get_tasks msg program_state rep_socket pair_socket = Message.GetTasksReply (Message.GetTasksReply_msg.create result) |> Message.to_string_list - |> ZMQ.Socket.send_all rep_socket ; + |> Zmq.Socket.send_all rep_socket ; new_program_state in @@ -596,7 +596,7 @@ let put_data msg rest_of_msg program_state rep_socket = StringHashtbl.set program_state.data ~key ~data:value ; Message.PutDataReply (Message.PutDataReply_msg.create ()) |> Message.to_string - |> ZMQ.Socket.send rep_socket; + |> Zmq.Socket.send rep_socket; program_state and failure () = @@ -629,7 +629,7 @@ let get_data msg program_state rep_socket = in Message.GetDataReply (Message.GetDataReply_msg.create ~value) |> Message.to_string_list - |> ZMQ.Socket.send_all rep_socket; + |> Zmq.Socket.send_all rep_socket; program_state and failure () = @@ -699,7 +699,7 @@ let abort program_state rep_socket = let error msg program_state rep_socket = Message.Error (Message.Error_msg.create msg) |> Message.to_string - |> ZMQ.Socket.send rep_socket ; + |> Zmq.Socket.send rep_socket ; program_state let start_pub_thread ~port = @@ -709,54 +709,54 @@ let start_pub_thread ~port = in let pair_socket = - ZMQ.Socket.create zmq_context ZMQ.Socket.pair + Zmq.Socket.create zmq_context Zmq.Socket.pair and address = "inproc://pair" in - ZMQ.Socket.connect pair_socket address; + Zmq.Socket.connect pair_socket address; let pub_socket = - ZMQ.Socket.create zmq_context ZMQ.Socket.pub + Zmq.Socket.create zmq_context Zmq.Socket.pub in bind_socket ~socket_type:"PUB" ~socket:pub_socket ~port; let pollitem = - ZMQ.Poll.mask_of - [| (pair_socket, ZMQ.Poll.In) |] + Zmq.Poll.mask_of + [| (pair_socket, Zmq.Poll.In) |] in let rec run state = let new_state = let polling = - ZMQ.Poll.poll ~timeout pollitem + Zmq.Poll.poll ~timeout pollitem in - if (polling.(0) = Some ZMQ.Poll.In) then - ZMQ.Socket.recv ~block:false pair_socket + if (polling.(0) = Some Zmq.Poll.In) then + Zmq.Socket.recv ~block:false pair_socket |> pub_state_of_string else state in - ZMQ.Socket.send pub_socket @@ string_of_pub_state new_state; + Zmq.Socket.send pub_socket @@ string_of_pub_state new_state; match state with | Stopped -> () | _ -> run new_state in run Waiting; - ZMQ.Socket.set_linger_period pair_socket 1000 ; - ZMQ.Socket.close pair_socket; - ZMQ.Socket.set_linger_period pub_socket 1000 ; - ZMQ.Socket.close pub_socket; + Zmq.Socket.set_linger_period pair_socket 1000 ; + Zmq.Socket.close pair_socket; + Zmq.Socket.set_linger_period pub_socket 1000 ; + Zmq.Socket.close pub_socket; ) let run ~port = (** Bind inproc socket for changing state of pub *) let pair_socket = - ZMQ.Socket.create zmq_context ZMQ.Socket.pair + Zmq.Socket.create zmq_context Zmq.Socket.pair and address = "inproc://pair" in - ZMQ.Socket.bind pair_socket address; + Zmq.Socket.bind pair_socket address; let pub_thread = start_pub_thread ~port:(port+1) () @@ -764,9 +764,9 @@ let run ~port = (** Bind REP socket *) let rep_socket = - ZMQ.Socket.create zmq_context ZMQ.Socket.rep + Zmq.Socket.create zmq_context Zmq.Socket.rep in - ZMQ.Socket.set_linger_period rep_socket 1_000_000; + Zmq.Socket.set_linger_period rep_socket 1_000_000; bind_socket "REP" rep_socket port; let initial_program_state = @@ -783,8 +783,8 @@ let run ~port = (** ZMR polling item *) let pollitem = - ZMQ.Poll.mask_of - [| (rep_socket, ZMQ.Poll.In) |] + Zmq.Poll.mask_of + [| (rep_socket, Zmq.Poll.In) |] in let address = @@ -798,9 +798,9 @@ let run ~port = | false -> () | true -> let polling = - ZMQ.Poll.poll ~timeout:1000 pollitem + Zmq.Poll.poll ~timeout:1000 pollitem in - if (polling.(0) <> Some ZMQ.Poll.In) then + if (polling.(0) <> Some Zmq.Poll.In) then main_loop program_state true else begin @@ -818,7 +818,7 @@ let run ~port = (** Extract message *) let raw_message, rest = - match ZMQ.Socket.recv_all rep_socket with + match Zmq.Socket.recv_all rep_socket with | x :: rest -> x, rest | [] -> failwith "Badly formed message" in @@ -873,9 +873,9 @@ let run ~port = end in main_loop initial_program_state true; - ZMQ.Socket.send pair_socket @@ string_of_pub_state Stopped; + Zmq.Socket.send pair_socket @@ string_of_pub_state Stopped; Thread.join pub_thread; - ZMQ.Socket.close rep_socket + Zmq.Socket.close rep_socket diff --git a/ocaml/_tags b/ocaml/_tags index aa36989b..bf267415 100644 --- a/ocaml/_tags +++ b/ocaml/_tags @@ -1,3 +1,3 @@ -true: package(core,cryptokit,ZMQ,str,ppx_sexp_conv,ppx_deriving) +true: package(core,cryptokit,zmq,str,ppx_sexp_conv,ppx_deriving) true: thread false: profile diff --git a/ocaml/qp_run.ml b/ocaml/qp_run.ml index f3f0b14e..49fa13d4 100644 --- a/ocaml/qp_run.ml +++ b/ocaml/qp_run.ml @@ -20,10 +20,10 @@ let run slave exe ezfio_file = (** Check availability of the ports *) let port_number = let zmq_context = - ZMQ.Context.create () + Zmq.Context.create () in let dummy_socket = - ZMQ.Socket.create zmq_context ZMQ.Socket.rep + Zmq.Socket.create zmq_context Zmq.Socket.rep in let rec try_new_port port_number = try @@ -31,8 +31,8 @@ let run slave exe ezfio_file = let address = Printf.sprintf "tcp://%s:%d" (Lazy.force TaskServer.ip_address) (port_number+i) in - ZMQ.Socket.bind dummy_socket address; - ZMQ.Socket.unbind dummy_socket address; + Zmq.Socket.bind dummy_socket address; + Zmq.Socket.unbind dummy_socket address; ); port_number with @@ -41,8 +41,8 @@ let run slave exe ezfio_file = let result = try_new_port 41279 in - ZMQ.Socket.close dummy_socket; - ZMQ.Context.terminate zmq_context; + Zmq.Socket.close dummy_socket; + Zmq.Context.terminate zmq_context; result in diff --git a/scripts/ezfio_interface/ei_handler.py b/scripts/ezfio_interface/ei_handler.py index 8d154fc2..4137bb0e 100755 --- a/scripts/ezfio_interface/ei_handler.py +++ b/scripts/ezfio_interface/ei_handler.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python +#!/usr/bin/env python2 # -*- coding: utf-8 -*- """ Welcome to the ei_handler. diff --git a/scripts/ezfio_interface/qp_convert_output_to_ezfio.py b/scripts/ezfio_interface/qp_convert_output_to_ezfio.py index 7f4f30be..6b415dd7 100755 --- a/scripts/ezfio_interface/qp_convert_output_to_ezfio.py +++ b/scripts/ezfio_interface/qp_convert_output_to_ezfio.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python +#!/usr/bin/env python2 """ convert output of gamess/GAU$$IAN to ezfio