Show simple item record

dc.rights.licenseCC-BY-NC-ND
dc.contributor.advisorKeller, G.K.
dc.contributor.authorGraaf, Luuk de
dc.date.accessioned2024-02-29T01:01:14Z
dc.date.available2024-02-29T01:01:14Z
dc.date.issued2024
dc.identifier.urihttps://studenttheses.uu.nl/handle/20.500.12932/46079
dc.description.abstractA high-level abstraction sacrifices the ability to exercise low-level control, which can be prob- lematic for performance critical applications. The phenomenon is apparent in data-parallel array languages, which traditionally do not support types with multiple variants. Data-parallelism uses the uniformity between multiple data elements to accelerate the process of operating on large collections of data. Variant types constrain the ability to operate uniformly, which therefore lim- its data-parallelism opportunities in the general case. In the situations where non-uniformity is inherit to the algorithm low-level optimizations are used to mitigate the heterogeneity. In this paper a higher abstraction level variant type is explored, which can capture the low-level control required to implement low-level optimizations in data-parallel languages. A polymorphic variant type is used to represent variance on the type-level, which can be used by data structures to adapt to the variance. Type-level programming is used to derive memory efficient representations for user-defined variant types. Custom memory representations are supported through datatype- generic programming, which automates the (de)construction of variant types. A fully modular variant type is presented, which can exercise low-level control while preserving the ergonomics of an existing high-level architecture. An implementation is provided in the data-parallel language Accelerate, which demonstrates the viability of variant types in a data-parallel context.
dc.description.sponsorshipUtrecht University
dc.language.isoEN
dc.subjectUsing polymorphic variant types to create flexibility in the memory representation for high-level array languages.
dc.titleObtaining Low-Level Control in a High-Level Language : Variant Types in Data-Parallel Array Languages
dc.type.contentMaster Thesis
dc.rights.accessrightsOpen Access
dc.subject.keywordsAccelerate, Data-parallelism, Sum Types, Polymorphic Variant Types, Memory Representation
dc.subject.courseuuComputing Science
dc.thesis.id28575


Files in this item

Thumbnail

This item appears in the following Collection(s)

Show simple item record