1wilkens / thesis-ba

My Bachelor's thesis titled "Evaluation of performance and productivity metrics of potential programming languages in the HPC environment".

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

thesis-ba

Abstract

This thesis aims to analyze new programming languages in the context of high-performance computing. In contrast to many other evaluations the focus is not only on performance but also on developer productivity metrics. The two new languages Go and Rust are compared with C as it is one of the two commonly used languages in HPC next to Fortran.

The base for the evaluation is a shortest path calculation based on real world geographical data which is parallelized for shared memory concurrency. An implementation of this concept was written in all three languages to compare multiple productivity and performance metrics like execution time, tooling support, memory consumption and development time across different phases.

Although the results are not comprehensive enough to invalidate C as a leading language in HPC they clearly show that both Rust and Go offer tremendous productivity gain compared to C with similar performance. Additional work is required to further validate these results as future reseach topics are listed at the end of the thesis.

Building instructions

The thesis is written in LaTex so you will need a working Tex installation (usually TexLive on *nix systems) to compile it successfully. For convenience there is a shell script in the tex folder build.sh which will compile everything (including sources) and output a single file thesis.pdf.

TL;DR

$ git clone http://github.com/1wilkens/thesis-ba.git
$ cd thesis-ba/tex
$ ./build.sh
$ <pdfviewer> thesis.pdf

LICENSE

All code written is licensed under the MIT license unless stated otherwise.

About

My Bachelor's thesis titled "Evaluation of performance and productivity metrics of potential programming languages in the HPC environment".

License:MIT License


Languages

Language:TeX 79.3%Language:C 8.7%Language:Rust 5.3%Language:Go 5.2%Language:Shell 0.7%Language:Erlang 0.3%Language:Python 0.3%Language:Makefile 0.2%