4 ms·
OpenMP, in particular, is not limited to fork-join, and you don't want to be so limited for efficient, scalable numerical systems. Not that you get large-scale
by gnufx 6y ago
OpenMP, in particular, is not limited to fork-join, and you don't want to be so limited for efficient, scalable numerical systems. Not that you get large-scale parallelism just with OpenMP. A recent keynote of Jack Dongarra's covers replacing the decades-old use of fork-join for (or course) dense linear algebra:
https://www.iwomp2020.org/wp-content/uploads/iwomp-2020-K1-Dongarra.pdf https://www.iwomp2020.org/wp-content/uploads/iwomp-2020-K1-D...
It's significantly in the past, not the future, of large-scale computation of the sort Julia particularly targets. I don't know why Julia should be stuck with that, though. Parallelism isn't new to Lisp-y systems, of course.
- dragontamer 6y agoI guess I still see Julia as a quick and dirty prototyping language akin to Python and some others. Clearly, Julia has ambitions for greater capabilities. Apparently, Julia now supports some more complicated forms of parallelism: Async, @Spawn (aka: Tasks), and others. But @Thread based for loops are just easier to grok. Overall, Julia is one of the few high-level languages that is explicitly adding in highly-threaded concepts like Fork-join, SIMD, or even GPUs to the language. Yeah, some Python libraries extend these concepts to Python. But something like @Threads for ... end really demonstrates how the fork-join parallelism is a first-class member of the Julia language.
- gnufx 6y agoAny language supporting (current) OpenMP supports fork-join, tasking, SIMD specification, and offload, though you still want distributed memory, and overlapped communication and computation. Baking particular technology into a system isn't a good idea long-term, or even medium-term, unless you wait for the cycle of re-invention, like vector computing. (I don't know if Julia really does that.)