Over at HPC Admin, Douglas Eadline relays his first-hand experience with the open source Julia language for HPC. According to Eadline, Julia is fast, scalable, easy to learn, and extensible. It fills a void in HPC that allows users to “tinker” with hardware and software.
Taking away the responsibility of managing explicit communication and synchronization from the user has advantages. How work is scheduled is now virtually transparent to the user. With Julia, multiple parallel computations are managed as tasks or co-routines. Whenever code performs a communication operation like fetch or wait, the current task is suspended and a scheduler picks another task to run. When the wait event completes (e.g., the data shows up), the task is restarted. This design has the advantage of a dynamic environment where explicit synchronization is not the responsibility of the user. In addition, dynamic scheduling allows easy implementation of master/worker divide-and-conquer algorithms.