RFCs
domainslib
Our great sponsors
RFCs | domainslib | |
---|---|---|
3 | 4 | |
142 | 161 | |
-0.7% | 3.1% | |
0.0 | 5.8 | |
about 2 months ago | about 2 months ago | |
OCaml | ||
- | ISC License |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
RFCs
-
Dargent: A Silver Bullet for Data Layout Refinement [pdf]
Found while on my hunt for POPL23 preprints. I wonder how much it relates to the unboxed types project for OCaml.
-
Why are imperative programs considered faster than their functional counterparts?
A middle ground between uniform representation and specializing for every type is specializing for every data layout. See the unboxed types RFC for OCaml.
-
PR to Merge Multicore OCaml
For both 2 and 3 you may find https://github.com/ocaml/RFCs/blob/unboxed-types/rfcs/unboxe... very interesting. I'm hoping that progresses beyond the RFC stage.
domainslib
-
OCaml 5.0 Alpha Release
For nested parallel computations (think Scientific Programming, where one would use OpenMP, Rust Rayon, etc), we have domainslib [1]. Eio, a direct-style, effect-based IO library is pretty competitive against Rust Tokio [2]. The performance will only get better as we get closer to the 5.0 release.
[1] https://github.com/ocaml-multicore/domainslib
[2] See the http server performance graphs at https://tarides.com/blog/2022-03-01-segfault-systems-joins-t...
-
PR to Merge Multicore OCaml
1. Domains are the unit of parallelism. A domain is essentially an OS thread with a bunch of extra runtime book-keeping data. You can use Domain.spawn (https://github.com/ocaml-multicore/ocaml-multicore/blob/5.00...) to spawn off a new domain which will run the supplied function and terminate when it finishes. This is heavyweight though, domains are expected to be long-running.
2. Domainslib is the library developed alongside multicore to aid users in exploiting parallelism. It supports nested parallelism and is pretty highly optimised (https://github.com/ocaml-multicore/domainslib/pull/29 for some graphs/numbers). The domainslib repo has some good examples: https://github.com/ocaml-multicore/domainslib/tree/master/te...
3. We've not tested against other forms of parallelism. There isn't anything stopping you exploiting SIMD in addition to parallelism from domains.
4. No, we've not compared performance by OS.
5. No plans for the multicore team to look at accelerator integration at the moment.
-
The road to OCaml 5.0
[3] Domainslib -- Parallel Programming over Multicore OCaml, https://github.com/ocaml-multicore/domainslib
What are some alternatives?
eioio - Effects-based direct-style IO for multicore OCaml
ocaml-multicore - Multicore OCaml
performancepaper - A reproducible, open examination of the paper "A performance comparison of Clojure and Java" by Gustav Krantz
dune - A composable build system for OCaml.
ocaml - The core OCaml system: compilers, runtime system, base libraries
rescript-compiler - The compiler for ReScript.
mlton - The MLton repository
esy - package.json workflow for native development with Reason/OCaml