Revision 85aa0c56d081163880171c15481b7436a083afcd authored by Cedric Cellier on 18 February 2013, 21:24:29 UTC, committed by Cedric Cellier on 18 February 2013, 21:24:29 UTC
When linking statically against parmap, one need to link with parmap_stubs library (since it's not recorded in the cma itself). Findlib can automatically add the required -cclib option.
1 parent 7596fdc
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;;
Computing file changes ...