Please use this identifier to cite or link to this item:
|Title:||Parallelizing Dialyzer: A Static Analyzer That Detects Bugs In Erlang Programs|
|Abstract:||As parallel platforms, like multi-core machines, become mainstream, the need to efficiently parallelize existing serial applications has become pressing. Erlang is a programming language designed for concurrency from the ground up so one might expect that parallelization of Erlang programs is a relatively easy task. This thesis is concerned with investigating methods to effectively parallelize a big and non-trivial single-threaded application written in Erlang, called Dialyzer. Dialyzer is an open source software defect detection tool, that automatically discovers software bugs in big applications written in Erlang. After identifying which parts of the analyses Dialyzer performs can be run in parallel, we describe coarse-grained parallelization schemes which take advantage of the tree-based nature of these analyses. We also describe ways of dealing with memory issues that emanate from many concurrent processes needing efficient concurrent access to large data structures. We implemented all these schemes and we report experimental results showing that the parallel implementation of Dialyzer manages to significantly speed up its execution, even on 2-core or 4-core machines which are very common nowadays. Beyond this particular application, this thesis offers useful experience as well as important conclusions concerning both the advantages and the obstacles a programmer is likely to encounter when parallelizing a serial Erlang application.|
|Appears in Collections:||Διπλωματικές Εργασίες - Theses|
Items in Artemis are protected by copyright, with all rights reserved, unless otherwise indicated.