Show simple item record

dc.rights.licenseCC-BY-NC-ND
dc.contributor.advisorKeller, Gabriele
dc.contributor.authorPost, Timo
dc.date.accessioned2025-10-15T23:03:07Z
dc.date.available2025-10-15T23:03:07Z
dc.date.issued2025
dc.identifier.urihttps://studenttheses.uu.nl/handle/20.500.12932/50544
dc.description.abstractAccelerate is a combinator based, parallel array programming language embedded in Haskell capable of targeting the CPU and GPU. To eliminate the overhead of intermediate arrays, Accelerate uses a fusion step to combine combinators into larger, more efficient computation clusters. This fusion step is implemented as an ILP that solves for the most efficient clustering of combinators for a given cost function. Another optimization is in-place (or destructive) updates. When an in-place update happens, the output of a computation is written to one of its input arrays, destroying the input in the process. The order of computations, which is determined by fusion, is therefor highly important when applying in-place updates. This thesis explores how in-place updates can be integrated into Accelerate’s existing fusion ILP. The resulting ILP is implemented in Accelerate and benchmarked. It turns out that in-place update have a particularly high impact on programs with little possibility for fusion and/or many sparse scatter-like operations. In case of the former they reduce memory usage by running (parts of) programs fully in-place. In the latter case, in-place updates eliminate the need to make a copy of the destination array, reducing runtime by up to 5×.
dc.description.sponsorshipUtrecht University
dc.language.isoEN
dc.subjectThis thesis is about incorporating in-place (or destructive) updates in Accelerate's fusion ILP. An in-place update is a destructive array operation where, instead of writing the resulting array to a fresh location in memory, it is written over one of the inputs of the operation. Such a destructive update normally handicaps fusion, but not in this approach, where it instead enhances it.
dc.titleSafe In-Place Updates for ILP Fusion in Array Languages
dc.type.contentMaster Thesis
dc.rights.accessrightsOpen Access
dc.subject.keywordsIn-Place; In-Place Updates; Destructive Updates; Accelerate; Integer Linear Programming; ILP; Fusion; Clustering; Combinators; Array; Arrays; Array Languages; Parallel Computing; Parallel; Haskell; Dependency Graph; Data Flow Graph; CPU; GPU; GPGPU;
dc.subject.courseuuComputing Science
dc.thesis.id54623


Files in this item

Thumbnail

This item appears in the following Collection(s)

Show simple item record