Abstract:
Parallel and clustered implementations of scientific computing algorithms, while fast, can be very difficult for a human to parse. This is because the industry standard method of writing parallel code is to use complicated libraries that extend existing languages such as OpenMP C. Sometimes a programmer even needs more than one library at a time. Attempts have been made to avoid this problem via automatic parallelizing compilers that use mathematical abstractions of loops in code to recognize dependencies and generate parallel code accordingly. Unfortunately, these compilers have their limitations. We propose that a solution to this problem could come in the form of the Chapel programming language. Chapel is a language developed by Cray Inc. that was specifically designed to be used for parallel and clustered programming. Because of this design choice, all the parallel features in Chapel are standard, requiring no additional libraries. In this thesis, we review existing approaches to parallelizing code, using BLAS as our primary example, and present how we might use Chapel to create fast code that humans can understand.