Better Implicit Parallelism; Improving ApplicativeDo Heuristics Through Weight Annotations

Examensarbete för masterexamen

Please use this identifier to cite or link to this item: https://hdl.handle.net/20.500.12380/256249
Download file(s):
File Description SizeFormat 
256249.pdfFulltext1.02 MBAdobe PDFView/Open
Full metadata record
DC FieldValueLanguage
dc.contributor.authorHübinette, Edvard
dc.contributor.authorThune, Fredrik
dc.contributor.departmentChalmers tekniska högskola / Institutionen för data- och informationsteknik (Chalmers)sv
dc.contributor.departmentChalmers University of Technology / Department of Computer Science and Engineering (Chalmers)en
dc.date.accessioned2019-07-03T14:55:48Z-
dc.date.available2019-07-03T14:55:48Z-
dc.date.issued2018
dc.identifier.urihttps://hdl.handle.net/20.500.12380/256249-
dc.description.abstractApplicativeDo tries to remove the monad binds where possible when desugaring Haskells’ do-notation. It does this by looking at inter-statement dependencies and connecting them with applicative operations when possible; this introduces implicit parallelism in the code. Deciding which structure to generate is tricky, since many different are usually possible. Currently, this is solved with simple minimum cost analysis with an unit cost model, assuming each statement takes the same amount of time to evaluate. By extending the cost model inside the ApplicativeDo algorithm for variable evaluation costs, we perform smarter generation of code by prioritising parallelisation of heavy statements. At Facebook, Marlow et al. developed Haxl, a data-fetching library that can use applicative structure in expressions for free parallelism. To our knowledge, it is the only library that can do automatic parallelism on applicative expressions. We observe significant wall-clock speedups in many cases when running benchmarks with Haxl, compared to the original ApplicativeDo-desugared programs, given relative costs of statements. The ApplicativeDo extension is agnostic to the source of costs, but one way of providing them is investigated as optional weight annotations on do-statements. This works well when the relative costs are known, but this kind of run-time estimation is notoriously difficult, particularly in Haskell. We suggest different directions for future work relating to sources of costs.
dc.language.isoeng
dc.setspec.uppsokTechnology
dc.subjectData- och informationsvetenskap
dc.subjectComputer and Information Science
dc.titleBetter Implicit Parallelism; Improving ApplicativeDo Heuristics Through Weight Annotations
dc.type.degreeExamensarbete för masterexamensv
dc.type.degreeMaster Thesisen
dc.type.uppsokH
Collection:Examensarbeten för masterexamen // Master Theses



Items in DSpace are protected by copyright, with all rights reserved, unless otherwise indicated.