Show simple item record

Files in this item

Thumbnail

Item metadata

dc.contributor.authorBarwell, Adam D.
dc.contributor.authorBrown, Christopher
dc.contributor.authorHammond, Kevin
dc.date.accessioned2018-07-27T23:34:30Z
dc.date.available2018-07-27T23:34:30Z
dc.date.issued2018-02
dc.identifier250572396
dc.identifierfe0e6593-ccac-4f7f-a826-e457548eea3f
dc.identifier85026818601
dc.identifier000418975100017
dc.identifier.citationBarwell , A D , Brown , C & Hammond , K 2018 , ' Finding parallel functional pearls : automatic parallel recursion scheme detection in Haskell functions via anti-unification ' , Future Generation Computer Systems , vol. 79 , no. Part 2 , pp. 669-686 . https://doi.org/10.1016/j.future.2017.07.024en
dc.identifier.issn0167-739X
dc.identifier.otherRIS: urn:A7C16215D65ADABC716A87C663510301
dc.identifier.otherORCID: /0000-0002-4326-4562/work/35609705
dc.identifier.otherORCID: /0000-0003-1236-7160/work/57821941
dc.identifier.otherORCID: /0000-0001-6030-2885/work/70619190
dc.identifier.urihttps://hdl.handle.net/10023/15729
dc.descriptionThis work has been partially supported by the EU H2020 grant “RePhrase: Refactoring Parallel Heterogeneous Resource-Aware Applications–a Software Engineering Approach” (ICT-644235), by COST Action IC1202 (TACLe), supported by COST (European Cooperation in Science and Technology) , by EPSRC grant “Discovery: Pattern Discovery and Program Shaping for Manycore Systems” (EP/P020631/1), and by Scottish Enterprise PS7305CA44.en
dc.description.abstractThis paper describes a new technique for identifying potentially parallelisable code structures in functional programs. Higher-order functions enable simple and easily understood abstractions that can be used to implement a variety of common recursion schemes, such as maps and folds over traversable data structures. Many of these recursion schemes have natural parallel implementations in the form of algorithmic skeletons. This paper presents a technique that detects instances of potentially parallelisable recursion schemes in Haskell 98 functions. Unusually, we exploit anti-unification to expose these recursion schemes from source-level definitions whose structures match a recursion scheme, but which are not necessarily written directly in terms of maps, folds, etc. This allows us to automatically introduce parallelism, without requiring the programmer to structure their code a priori in terms of specific higher-order functions. We have implemented our approach in the Haskell refactoring tool, HaRe, and demonstrated its use on a range of common benchmarking examples. Using our technique, we show that recursion schemes can be easily detected, that parallel implementations can be easily introduced, and that we can achieve real parallel speedups (up to 23 . 79 × the sequential performance on 28 physical cores, or 32 . 93 × the sequential performance with hyper-threading enabled).
dc.format.extent947716
dc.language.isoeng
dc.relation.ispartofFuture Generation Computer Systemsen
dc.subjectQA75 Electronic computers. Computer scienceen
dc.subjectQA76 Computer softwareen
dc.subjectNDASen
dc.subjectBDCen
dc.subjectR2Cen
dc.subject~DC~en
dc.subject.lccQA75en
dc.subject.lccQA76en
dc.titleFinding parallel functional pearls : automatic parallel recursion scheme detection in Haskell functions via anti-unificationen
dc.typeJournal articleen
dc.contributor.sponsorEuropean Commissionen
dc.contributor.sponsorEPSRCen
dc.contributor.institutionUniversity of St Andrews. School of Computer Scienceen
dc.contributor.institutionUniversity of St Andrews. Centre for Interdisciplinary Research in Computational Algebraen
dc.identifier.doi10.1016/j.future.2017.07.024
dc.description.statusPeer revieweden
dc.date.embargoedUntil2018-07-27
dc.identifier.urlhttps://authors.elsevier.com/c/1W557,3q5xOX20en
dc.identifier.grantnumber644235en
dc.identifier.grantnumberEP/P020631/1en


This item appears in the following Collection(s)

Show simple item record