Publication:
Accelerating Haskell Array Codes with Algorithmic Skeletons on GPUs

dc.contributor.advisor Keller, Gabriele en_US
dc.contributor.advisor Chakravarty, Manuel en_US
dc.contributor.author Lee, Sean Youngsung en_US
dc.date.accessioned 2022-03-21T10:47:14Z
dc.date.available 2022-03-21T10:47:14Z
dc.date.issued 2011 en_US
dc.description.abstract GPUs have been gaining popularity as general purpose parallel processors that deliver a performance to cost ratio superior to that of CPUs. However, programming on GPUs has remained a specialised area, as it often requires significant knowledge about the GPU architecture and platform-specific parallelisation of the algorithms that are implemented. Furthermore, the dominant programming models on GPUs limit functional decomposition of programs, as they require programmers to write separate functions to run on GPUs. I present and quantitatively evaluate a GPU programming system that provides a high-level abstraction to facilitate the use of GPUs for general purpose array processing. The presented programming system liberates programmers of low-level details and enables functional decomposition of programs, whilst providing the facilities to sufficiently exploit the parallel processing capability of GPUs. Fundamentally, the presented programming system allows programmers to focus on what to program on GPUs instead of how to program GPUs. The approach is based on algorithmic skeletons mapped to higher-order functions, which are commonly available in functional programming languages. The presented programming system (1) encapsulates the low-level control of GPUs and the GPU-specific parallelisation of the higher-order functions in algorithmic skeletons, (2) employs an embedded domain specific language as the interface that treats the parallel operations as expressions with parallel semantics, allowing functional decomposition of programs, and (3) manages the compilation of the embedded domain specific language into algorithmic skeleton instances and the execution of the algorithmic skeleton instances online. Programmers only need to write the operations to be executed on GPUs as expressions in the embedded domain specific language, and the presented programming system takes care of the rest. Although the concrete implementation presented in the thesis involves an embedded domain specific language in Haskell, Accelerate, and a specific GPU platform, CUDA, the approach in this thesis can be applied to other similar configurations with appropriate adjustments. en_US
dc.identifier.uri http://hdl.handle.net/1959.4/51679
dc.language English
dc.language.iso EN en_US
dc.publisher UNSW, Sydney en_US
dc.rights CC BY-NC-ND 3.0 en_US
dc.rights.uri https://creativecommons.org/licenses/by-nc-nd/3.0/au/ en_US
dc.subject.other Programming Languages and Systems en_US
dc.subject.other Haskell en_US
dc.subject.other GPGPU en_US
dc.subject.other Parallel Programming en_US
dc.subject.other Algorithmic Skeletons en_US
dc.title Accelerating Haskell Array Codes with Algorithmic Skeletons on GPUs en_US
dc.type Thesis en_US
dcterms.accessRights open access
dcterms.rightsHolder Lee, Sean Youngsung
dspace.entity.type Publication en_US
unsw.accessRights.uri https://purl.org/coar/access_right/c_abf2
unsw.identifier.doi https://doi.org/10.26190/unsworks/15299
unsw.relation.faculty Engineering
unsw.relation.originalPublicationAffiliation Lee, Sean Youngsung, Computer Science & Engineering, Faculty of Engineering, UNSW en_US
unsw.relation.originalPublicationAffiliation Keller, Gabriele, Computer Science & Engineering, Faculty of Engineering, UNSW en_US
unsw.relation.originalPublicationAffiliation Chakravarty, Manuel, Computer Science & Engineering, Faculty of Engineering, UNSW en_US
unsw.relation.school School of Computer Science and Engineering *
unsw.thesis.degreetype PhD Doctorate en_US
Files
Original bundle
Now showing 1 - 1 of 1
No Thumbnail Available
Name:
whole.pdf
Size:
2.51 MB
Format:
application/pdf
Description:
Resource type