Thanks a lot for all these interesting details and references.
I’m not used to multicore, but the ratio “looks good” (for C++).
Regarding vanilla multicore OCaml speedup/cores number ratio, there are already some metrics there: Multicore OCaml: March 2020 update :
Speedup (sequential_time/multi_threaded_time) versus number of cores for Multicore (Concurrent Minor Collector), Parmap and Parany is quite significant:
approx 20x for 40 cores.
This ratio is certainly strongly application-dependent.
The benefits of multicore seems to be: “You can compute more if you add cores and RAM, and that comes in a range of 20-100% speedup/core ratio” (e.g. 10x cores gives 2x to 10x speedup).
It’s a little bit like a car that can double its speed with a more powerful engine but at increased cost: the cost of the car, and of its fuel consumption : 2x speed (say, 2x 100 km/h, or 2x60 mph) should approx. requires 4x to 6x more fuel.
When you say “more efficient because able to synchronize efficiently through shared memory, using e.g., a giant concurrent hashtable”, does it means that you expect an increased ratio speedup/core from multicore OCaml + DAG calculus constructs and unified framework compared to vanilla multicore OCaml?
In C++, what is the increase observed of the speedup/cores number ratio that are brought by these constructs (fork-join, async-finish, futures)?
(Naive) side question:
We are discussing about this DAG calculus proposal, but it won’t be available next week.
Now coming back to daily programming, I understand that multicore OCaml is the available option to speed up computation (for the first time, I’ve just installed it in a fresh opam switch. It was as straightforward as with a monocore OCaml compiler. Good. Now, it’s time to study examples! ).
As multicore OCaml is available (I don’t know yet its possible constraints and limitations), does an “ordinary monocore OCaml programmer” should simply use it, or are there affordable in-between techniques or libraries that could help him significantly speed up his programs with ordinary libraries?
Thanks.