Skip to content

Commit

Permalink
change to new Domain.DLS API with initializer
Browse files Browse the repository at this point in the history
  • Loading branch information
Sudha247 committed Oct 1, 2020
1 parent 9909ed3 commit e665e19
Show file tree
Hide file tree
Showing 3 changed files with 8 additions and 30 deletions.
15 changes: 2 additions & 13 deletions benchmarks/multicore-minilight/parallel/camera.ml
Expand Up @@ -10,18 +10,7 @@
open Vector3f
module T = Domainslib.Task

module Rand = struct
open Domain.DLS

let k : Random.State.t key = new_key ()

let get_state () = try Option.get @@ get k
with _ -> begin
set k (Random.State.make_self_init ());
Option.get @@ get k
end

end
let k = Domain.DLS.new_key (fun () -> Random.State.make_self_init ())

(**
* A View with rasterization capability.
Expand Down Expand Up @@ -92,7 +81,7 @@ object (__)
T.parallel_for pool ~start:0 ~finish:(image#height - 1)
~body:(fun y -> for x = image#width - 1 downto 0 do

let random = Rand.get_state () in
let random = Domain.DLS.get k in
(* make sample ray direction, stratified by pixels *)
let sampleDirection =

Expand Down
9 changes: 2 additions & 7 deletions benchmarks/multicore-numerical/LU_decomposition_multicore.ml
Expand Up @@ -2,12 +2,7 @@ module T = Domainslib.Task
let num_domains = try int_of_string Sys.argv.(1) with _ -> 1
let mat_size = try int_of_string Sys.argv.(2) with _ -> 1200

let k : Random.State.t Domain.DLS.key = Domain.DLS.new_key ()
let get_state () = try Option.get @@ Domain.DLS.get k with _ ->
begin
Domain.DLS.set k (Random.State.make_self_init ());
Option.get @@ Domain.DLS.get k
end
let k = Domain.DLS.new_key (fun () -> Random.State.make_self_init ())

module SquareMatrix = struct

Expand Down Expand Up @@ -61,7 +56,7 @@ let lup pool (a0 : float array) =
let () =
let pool = T.setup_pool ~num_domains:(num_domains - 1) in
let a = parallel_create pool
(fun _ _ -> (Random.State.float (get_state ()) 100.0) +. 1.0 ) in
(fun _ _ -> (Random.State.float (Domain.DLS.get k) 100.0) +. 1.0 ) in
let lu = lup pool a in
let _l = parallel_create pool (fun i j -> if i > j then get lu i j else if i = j then 1.0 else 0.0) in
let _u = parallel_create pool (fun i j -> if i <= j then get lu i j else 0.0) in
Expand Down
14 changes: 4 additions & 10 deletions benchmarks/multicore-numerical/evolutionary_algorithm_multicore.ml
Expand Up @@ -5,13 +5,7 @@ Per Kristian Lehre <p.k.lehre@cs.bham.ac.uk>
May 6th, 2020
"
module T = Domainslib.Task
let my_key : Random.State.t Domain.DLS.key = Domain.DLS.new_key ()

let get () = try Option.get @@ Domain.DLS.get my_key
with _ -> begin
Domain.DLS.set my_key (Random.State.make_self_init ());
Option.get @@ Domain.DLS.get my_key
end
let my_key = Domain.DLS.new_key (fun () -> Random.State.make_self_init ())

type bitstring = bool array
type individual = { chromosome : bitstring; fitness : float }
Expand All @@ -28,7 +22,7 @@ let fittest x y = if x.fitness > y.fitness then x else y
let pop_fittest pop = Array.fold_left fittest pop.(0) pop

let random_bitstring n =
let s = get () in
let s = Domain.DLS.get my_key in
Array.init n (fun _ -> Random.State.bool s)

let random_individual n f =
Expand All @@ -40,15 +34,15 @@ let onemax : fitness_function = Array.fold_left add_bit 0.0

(* Choose fittest out of k uniformly sampled individuals *)
let rec k_tournament k pop =
let s = Option.get @@ Domain.DLS.get my_key in
let s = Domain.DLS.get my_key in
let x = pop.(Random.State.int s (population_size pop)) in
if k <= 1 then x
else
let y = k_tournament (k-1) pop in
fittest x y

let flip_coin p =
let s = Option.get @@ Domain.DLS.get my_key in
let s = Domain.DLS.get my_key in
(Random.State.float s 1.0) < p

let xor a b = if a then not b else b
Expand Down

0 comments on commit e665e19

Please sign in to comment.