First, are Julia’s threads still “experimental”? The paper claiming it, published in September, seems to have been been first out in June, so that may explain it. More importantly, are Julia’s threads “not yet mature enough” (and Chapel’s better)?
I thought Chapel’s syntax and semantics were stable, but you may find their change from 0-based to 1-based intriguing (or their reasoning), they’re otherwise arbitrary-based (like Fortran, and Pascal, need to specify start, end). This is a special case, and it’s probably mostly stable.
Novemer 16, 2020
[For some reason, and not yet done at its Wikipedia page, Cray no longer supporting?]
- Removed the “Cray” mark from the version of the Chapel logo used on the website.
October 8, 2020
- Added a mention of Chapel being named a Bossie 2020 Award Winner to the front page [I believe Julia also got Bossie award, previously.]
October 7, 2020
- Added slides for Brad’s PACT’20 keynote on compiling Chapel to the featured presentations list.
June 25, 2020
- Added a new journal paper comparing Chapel, Julia, and Python/Numba to OpenMP by Gmys et al. to the publications and papers page.
April 16, 2020
In terms of parallel performance, the multi-threaded loop-level parallelism provided by Python/Numba and Julia allows us to speed up computations, but their multi-threading support (experimental) is not yet mature enough to compete with OpenMP, especially for very fine-grained tasks. Chapel’s task-based parallelism, on the other hand, scales nearly as well as optimized C/OpenMP.
Abstract for the one above:
This paper compares Chapel with Julia, Python/Numba, and C+OpenMP in terms of performance, scalability and productivity. Two parallel metaheuristics are implemented for solving the 3D Quadratic Assignment Problem (Q3AP), using thread-based parallelism on a multi-core shared-memory computer. The paper also evaluates and compares the performance of the languages for a parallel fitness evaluation loop, using four different test functions with different computational characteristics. The authors provide feedback on the implementation and parallelization process in each language.*
You would think with the version number 1.23 (26th release) it’s stable: https://github.com/chapel-lang/chapel/blob/release/1.23/CHANGES.md
- added new ‘Heap’ and ‘OrderedSet’ modules
- interactive modes for
- improved ergonomics for
minor improvements to Python interoperability
Deprecated / Unstable / Removed Language Features
removed support for
C++-styledeinitializer names e.g.
removed support for vectorization hinting to the C backend