Show simple item record

dc.rights.licenseCC-BY-NC-ND
dc.contributor.advisorMcDonell, T.L.
dc.contributor.authorBalen, D.P. van
dc.date.accessioned2020-08-28T18:00:24Z
dc.date.available2020-08-28T18:00:24Z
dc.date.issued2020
dc.identifier.urihttps://studenttheses.uu.nl/handle/20.500.12932/37150
dc.description.abstractThis thesis investigates the necessary steps to introduce optimal fusion into a compiler for a dataparallel, array based language. Existing literature includes various practical fusion methods, which are based on local rewrites and do not consider the global optimal solution, and methods that are able to identify the optimal fusion clustering. There are no methods that use this optimal clustering to achieve optimally fused code, whilst preserving parallelism and type-safety. In this thesis, we expand upon the latter methods and ensure that the resulting fusion system preserves parallelism and type-safety. The proposed method consists of an integer linear programming formulation to identify the optimal clustering, an explicit fusion AST to encode this clustering in the abstract syntax tree, and an explicitly loopy intermediate representation to generate fused code. In the process of developing this system, we formalise the concepts of vertical and horizontal fusion, and introduce diagonal fusion. These concepts are used in the explicit fusion AST, and allow us to preserve type-safety throughout the compiler, amounting to a partial proof of correctness. We demonstrate that this approach is viable through a partial implementation in the compiler for Accelerate, an embedded language in Haskell.
dc.description.sponsorshipUtrecht University
dc.format.extent2422554
dc.format.mimetypeapplication/pdf
dc.language.isoen
dc.titleOptimal Fusion in Data-Parallel Languages: From Diagonal Fusion to Code Generation
dc.type.contentMaster Thesis
dc.rights.accessrightsOpen Access
dc.subject.keywordsfusion, accelerate, parallelism
dc.subject.courseuuComputing Science


Files in this item

Thumbnail

This item appears in the following Collection(s)

Show simple item record