dc.rights.license | CC-BY-NC-ND | |
dc.contributor.advisor | Keller, G.K. | |
dc.contributor.author | Hus, Simon van | |
dc.date.accessioned | 2023-10-18T23:01:01Z | |
dc.date.available | 2023-10-18T23:01:01Z | |
dc.date.issued | 2023 | |
dc.identifier.uri | https://studenttheses.uu.nl/handle/20.500.12932/45401 | |
dc.description.abstract | n this paper we set out to make a simple reverse-mode automatic differentiation (AD) algorithm, that uses tracing for the forward pass, and preserves data parallelism in the reverse pass. To do this, we first try to formalize the notion of tracing somewhat. We find that while some flexibility in the definition of is needed for it to work well, we can also boil it down to picking a subset of data types to keep in the trace. We also define a couple of logical assertions that further help us in showing whether a trace does really contain the information that we need. Having defined tracing, in theory, but also over a Haskell DSL, we continue to automatic differentiation. Here we expand the tracing function into a forward-pass function by adding reference counting and intermediate values. Using this forward-pass trace as a map, we then show how we can do the reverse-pass. We also show that we can keep data-parallelism intact for the map and fold (reduce) operations. Finally, we also highlight how task parallelism can be used in the reverse-pass to possibly unlock even more efficiency. | |
dc.description.sponsorship | Utrecht University | |
dc.language.iso | EN | |
dc.subject | In modern automatic differentiation single-machine parallelism is often left by the wayside.
In this paper we find a way to maintain this parallelism on both the forward and the backward pass of automatic differentiation.
We do this on a DSL array language, implemented in Haskell, focussing on the inherent parallelism present in array primitives.
We also use define and use a more generalized idea of tracing for the forward pass. | |
dc.title | Maintaining parallelism in reverse-mode automatic differentiation on functional parallel array languages | |
dc.type.content | Master Thesis | |
dc.rights.accessrights | Open Access | |
dc.subject.keywords | automatic differentiation; tracing; parallelism; array languages; haskell | |
dc.subject.courseuu | Artificial Intelligence | |
dc.thesis.id | 24873 | |