Revision af9691efe73d999dfda5b204012b8e974a12a808 authored by Roberto Di Cosmo on 02 November 2016, 14:18:39 UTC, committed by GitHub on 02 November 2016, 14:18:39 UTC
handle EINTR errors in wait_for_pids
floatscale.ml
(**************************************************************************)
(* Sample use of Parmap, a simple library to perform Map computations on *)
(* a multi-core *)
(* *)
(* Author(s): Roberto Di Cosmo *)
(* *)
(* This program is free software: you can redistribute it and/or modify *)
(* it under the terms of the GNU General Public License as *)
(* published by the Free Software Foundation, either version 2 of the *)
(* License, or (at your option) any later version. *)
(**************************************************************************)
open Parmap
open Utils
(* from Paul Vernaza's code *)
let env_param of_string name default =
try of_string (Unix.getenv name) with Not_found -> default
let env_num = env_param float_of_string
let env_float = env_num
let env_int = env_param int_of_string
let env_bool = env_param bool_of_string
let env_string = env_param (fun x -> x)
let nIters = env_int "nIters" 1
let nData = env_int "nData" 10000000
let nProcs = env_int "nProcs" 8
let inOrder = env_bool "inOrder" false
let chunksize = env_int "chunksize" (nData/nProcs)
let xs, func =
let xs = Array.make nData 0. in
let pi = 4. *. atan 1. in
for i = 0 to nData - 1 do
xs.(i) <- pi *. (float_of_int i /. (float_of_int nData))
done;
xs, (fun x -> cos (sqrt x))
let checksum_array arr () =
Array.fold_left (fun acc el -> acc +. el) 0. arr;;
let checksum_list list () =
List.fold_left (fun acc el -> acc +. el) 0. list;;
Printf.printf "Test: normal parmap\n%!";;
scale_test ~chunksize:chunksize ~inorder:inOrder func (A xs) nIters nProcs nProcs;;
Printf.printf "Test: specialised array parmap\n%!";;
array_scale_test ~chunksize:chunksize ~inorder:inOrder func xs nIters nProcs nProcs;;
Printf.printf "Test: specialised float array parmap\n%!";;
array_float_scale_test ~chunksize:chunksize ~inorder:inOrder func xs nIters nProcs nProcs;;
![swh spinner](/static/img/swh-spinner.gif)
Computing file changes ...