File tree Expand file tree Collapse file tree 4 files changed +64
-0
lines changed Expand file tree Collapse file tree 4 files changed +64
-0
lines changed Original file line number Diff line number Diff line change 1+ Manifest.toml
Original file line number Diff line number Diff line change 1+ [deps ]
2+ OhMyThreads = " 67456a42-1dca-4109-a031-0a68de7e3ad5"
3+ Pkg = " 44cfe95a-1eb2-52ea-b672-e2afdf69b78f"
4+
5+ [compat ]
6+ OhMyThreads = " 0.7"
7+ Pkg = " 1"
8+ julia = " 1.10"
Original file line number Diff line number Diff line change 1+ # !/usr/bin/env julia
2+
3+ using Pkg
4+ Pkg. activate (@__DIR__ )
5+ Pkg. resolve ()
6+ Pkg. instantiate ()
7+
8+ using Base. Threads: nthreads
9+ using OhMyThreads: tmapreduce
10+
11+ function _picalc (numsteps)
12+ slice = 1 / numsteps
13+
14+ return tmapreduce (+ , 1 : numsteps; ntasks= nthreads ()) do i
15+ 4.0 / (1.0 + ((i - 0.5 ) * slice) ^ 2 )
16+ end * slice
17+ end
18+
19+ function picalc (numsteps)
20+
21+ println (" Calculating PI using:" )
22+ println (" " , numsteps, " slices" )
23+ println (" " , nthreads (), " thread(s)" )
24+
25+ start = time ()
26+ mypi = _picalc (numsteps)
27+ elapsed = time () - start
28+
29+ println (" Obtained value of PI: " , mypi)
30+ println (" Time taken: " , round (elapsed; digits= 3 ), " seconds" )
31+
32+ end
33+
34+ numsteps = if length (ARGS ) > 0
35+ parse (Int, ARGS [1 ])
36+ else
37+ 1_000_000_000
38+ end
39+
40+ # Warm up kernel
41+ print (" Warming up..." )
42+ warms = time ()
43+ _picalc (10 )
44+ warmt = time () - warms
45+ println (" done. [" , round (warmt; digits= 3 ), " s]\n " )
46+
47+ # Run the full example
48+ picalc (numsteps)
Original file line number Diff line number Diff line change 1+ #! /usr/bin/env bash
2+
3+ if [[ -z " ${JULIA_NUM_THREADS} " ]]; then
4+ export JULIA_NUM_THREADS=" ${OMP_NUM_THREADS:- 1} "
5+ fi
6+
7+ julia pi.jl " ${@ } "
You can’t perform that action at this time.
0 commit comments