Add Julia implementation using OhMyThreads.jl
#25
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
OhMyThreads.jl
is a new-ish package which provides user-friendly threading constructs, for example it comes with a multithreaded map reduce, which is perfect for this program. Compare the implementation in this PRpi_examples/julia_ohmythreads_pi_dir/pi.jl
Lines 11 to 17 in bdd72c1
pi_examples/julia_threads_dir/pi.jl
Lines 5 to 21 in fc92267
Some benchmarks: on Nvidia Grace-Grace, with this implementation using Julia v1.11.1 I get
With
julia_threads_pi_dir
(same version of Julia as above):With
c_omp_pi_dir
:With
fortran_omp_pi_dir
: