open Printf open Mpi (* comm_size, comm_rank *) let size = comm_size comm_world let myrank = comm_rank comm_world let print_array array = printf "myrank is %d:\n" myrank; for i=1 to (Array.length array) do print_int array.(i-1);print_string ";" done; print_newline () let print_farray array = printf "myrank is %d:\n" myrank; for i=1 to (Array.length array) do print_float array.(i-1);print_string ";" done; print_newline () (* # 0 lxor 1 lxor 2 ;; - : int = 3 # 0 land 1 land 2;; - : int = 0 # 0 lor 1 lor 2;; - : int = 3 *) let _ = printf "myrank:%d *** sum result:%d\n" myrank (allreduce_int myrank Int_sum comm_world) let _ = printf "myrank:%d *** prod result:%d\n" myrank (allreduce_int myrank Int_prod comm_world) let _ = printf "myrank:%d *** land result:%d\n" myrank (allreduce_int myrank Int_land comm_world) let _ = printf "myrank:%d *** lor result:%d\n" myrank (allreduce_int myrank Int_lor comm_world) let _ = printf "myrank:%d *** lxor result:%d\n" myrank (allreduce_int myrank Int_xor comm_world) let _ = printf "myrank:%d *** max result:%d\n" myrank (allreduce_int myrank Int_max comm_world) let _ = printf "myrank:%d *** min result:%d\n" myrank (allreduce_int myrank Int_min comm_world) let _ = printf "myrank:%d *** sum result:%f\n" myrank (allreduce_float (float_of_int myrank) Float_sum comm_world) let _ = printf "myrank:%d *** prod result:%f\n" myrank (allreduce_float (float_of_int myrank) Float_prod comm_world) let _ = printf "myrank:%d *** max result:%f\n" myrank (allreduce_float (float_of_int myrank) Float_max comm_world) let _ = printf "myrank:%d *** min result:%f\n" myrank (allreduce_float (float_of_int myrank) Float_min comm_world) let _ = let a = Array.make 2 0 in allreduce_int_array [|1;2|] a Int_sum comm_world; print_array a let _ = let a = Array.make 2 0 in allreduce_int_array [|1;2|] a Int_prod comm_world; print_array a let _ = let a = Array.make 2 0 in allreduce_int_array [|1;2|] a Int_max comm_world; print_array a let _ = let a = Array.make 2 0 in allreduce_int_array [|1;2|] a Int_min comm_world; print_array a let _ = let a = Array.make 2 0 in allreduce_int_array [|1;2|] a Int_land comm_world; print_array a let _ = let a = Array.make 2 0 in allreduce_int_array [|1;2|] a Int_lor comm_world; print_array a let _ = let a = Array.make 2 0 in allreduce_int_array [|1;2|] a Int_xor comm_world; print_array a let _ = let a = Array.make 2 0.0 in allreduce_float_array [|1.0;2.0|] a Float_sum comm_world; print_farray a let _ = let a = Array.make 2 0.0 in allreduce_float_array [|1.0;2.0|] a Float_prod comm_world; print_farray a let _ = let a = Array.make 2 0.0 in allreduce_float_array [|1.0;2.0|] a Float_max comm_world; print_farray a let _ = let a = Array.make 2 0.0 in allreduce_float_array [|1.0;2.0|] a Float_min comm_world; print_farray a