Conference item
Finally, a polymorphic linear algebra language (Pearl)
- Abstract:
- Many different data analytics tasks boil down to linear algebra primitives. In practice, for each different type of workload, data scientists use a particular specialised library. In this paper, we present Pilatus, a polymorphic iterative linear algebra language, applicable to various types of data analytics workloads. The design of this domain-specific language (DSL) is inspired by both mathematics and programming languages: its basic constructs are borrowed from abstract algebra, whereas the key technology behind its polymorphic design uses the tagless final approach (a.k.a. polymorphic embedding/object algebras). This design enables us to change the behaviour of arithmetic operations to express matrix algebra, graph algorithms, logical probabilistic programs, and differentiable programs. Crucially, the polymorphic design of Pilatus allows us to use multi-stage programming and rewrite-based optimisation to recover the performance of specialised code, supporting fixed sized matrices, algebraic optimisations, and fusion.
- Publication status:
- Published
- Peer review status:
- Peer reviewed
Actions
Access Document
- Files:
-
-
(Preview, Version of record, pdf, 498.9KB, Terms of use)
-
- Publisher copy:
- 10.4230/LIPIcs.ECOOP.2019.25
Authors
- Publisher:
- Schloss Dagstuhl - Leibniz-Zentrum für Informatik
- Host title:
- LIPIcs
- Journal:
- lipics More from this journal
- Volume:
- 134
- Pages:
- 25:1-25:29
- Publication date:
- 2019-07-12
- Acceptance date:
- 2019-04-01
- DOI:
- EISSN:
-
1868-8969
- ISBN:
- 9783959771115
- Keywords:
- Pubs id:
-
pubs:1013121
- UUID:
-
uuid:fbad84a5-2a61-451a-8a1a-81b93748d54b
- Local pid:
-
pubs:1013121
- Source identifiers:
-
1013121
- Deposit date:
-
2019-06-13
Terms of use
- Copyright holder:
- Shaikhha and Parreaux
- Copyright date:
- 2019
- Notes:
- © Amir Shaikhha and Lionel Parreaux; licensed under Creative Commons License CC-BY
- Licence:
- CC Attribution (CC BY)
If you are the owner of this record, you can report an update to it here: Report update to this record