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 PR https://github.com/UCL-RITS/pi_examples/blob/bdd72c150a5f2b45465f4b5b2448296d9368c283/julia_ohmythreads_pi_dir/pi.jl#L11-L17 with the current multithreaded implementation: https://github.com/UCL-RITS/pi_examples/blob/fc92267c33b8ffb0e51e55083c71d5fb9926bfac/julia_threads_dir/pi.jl#L5-L21Some 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
: