1. 8

  2. 3

    We disallow any use of BLAS and only allow use of packages or modules from the standard library of each language, though in the case of D the benchmark is compared with calculations using Mir, a multidimensional array package, to make sure that my matrix implementation reflects the true performance of D.

    This is as ridiculous.

    1. 2

      It is somewhat understandable in that both Chapel and Julia have built-in support for multidimensional arrays, so to be fair D is disqualified before even starting. The comparison table probably should make it more clear that this is a big mark against D.

    2. 2

      Chapel took the longest total time but consumed the least amount of memory (nearly 6GB RAM peak memory)

      D consumed the highest amount of memory (around 20GB RAM peak memory) but took less total time than Chapel to execute

      Julia consumed a moderate amount of memory (around 7.5 GB peak memory) but ran the quickest

      What an interesting find! Just looking at the graphs, Chapel doesn’t look like an amazing contender. It’s quite close, but Chapel isn’t turning any head. With the memory consumption, however, this becomes much more interesting! The Chapel code came out very readable (imo, looking only at the calculateKernelMatrix example) and ended up using 14 GB less memory than its D counterpart, which looked very similar. I’m more familiar with Julia and D, so I’m interested to see what language features are at play in optimizing the Chapel code for speed and memory.

      1. 1

        Remember that Chapel is designed to let your code run on everything from multicore to clusters. Its competition was stuff like C++ with MPI with user juggling code and data over potentially thousands of CPU’s. Chapel was designed for high productivity with as close to manual performance as the compiler can get. Other contenders were X10 and Fortress languages.