Abstract
Given the sophistication of recent type systems, unification-based type-checking and inference can be a time-consuming phase of compilation---especially when union types are combined with subtyping. It is natural to consider improving performance through parallelism, but these algorithms are challenging to parallelize due to complicated control structure and difficulties representing data in a way that is both efficient and supports concurrency. We provide techniques that address these problems based on the LVish approach to deterministic-by-default parallel programming. We extend LVish with Saturating LVars, the first LVars implemented to release memory during the object's lifetime. Our design allows us to achieve a parallel speedup on worst-case (exponential) inputs of Hindley-Milner inference, and on the Typed Racket type-checking algorithm, which yields up an 8.46× parallel speedup on 14 cores for type-checking examples drawn from the Racket repository.
- Ceylon language website. http://ceylon-lang.org/,.Google Scholar
- Erlang dializer type checker. http://www.erlang.org/doc/man/dialyzer.html,.Google Scholar
- Facebook flow project website. https://code.facebook.com/projects/1524880081090726/,.Google Scholar
- Typescript project website. http://www.typescriptlang.org/,.Google Scholar
- L. Allison. Continuations implement generators and streams. Comp. J, 33(5):460--465, 1990. doi: 10.1093/comjnl/33.5.460. Google Scholar
Digital Library
- Arvind, R. S. Nikhil, and K. K. Pingali. I-structures: Data structures for parallel computing. TOPLAS, 11:598--632, 1989. Google Scholar
Digital Library
- R. L. Bocchino Jr, V. S. Adve, D. Dig, S. V. Adve, S. Heumann, R. Komuravelli, J. Overbey, P. Simmons, H. Sung, and M. Vakilian. A type and effect system for deterministic parallel Java. In OOPSLA, pages 97--116, 2009. Google Scholar
Digital Library
- E. Brady. Idris, a general-purpose dependently typed programming language: Design and implementation. JFP, 23(05):552--593, 2013.Google Scholar
Cross Ref
- K. Claessen, M. Sheeran, and B. J. Svensson. Expressive array constructs in an embedded GPU kernel programming language. In DAMP, pages 21--30, 2012. Google Scholar
Digital Library
- V. S. Costa, D. H. D. Warren, and R. Yang. Andorra I: A Parallel Prolog System That Transparently Exploits Both And-and Or-parallelism, volume 26 of PPOPP '91. ACM, 1991. Google Scholar
Digital Library
- I. I. CPLEX. V12. 1: User's Manual for CPLEX. International Business Machines Corporation, 46(53):157, 2009.Google Scholar
- L. Damas and R. Milner. Principal type-schemes for functional programs. In POPL, pages 207--212, 1982. Google Scholar
Digital Library
- M. Flatt and PLT. Reference: Racket. Technical report, PLT Design, Inc., 2010. http://racket-lang.org/tr1/.Google Scholar
- Gecode Team. Gecode: Generic constraint development environment, 2006. Available from http://www.gecode.org.Google Scholar
- I. P. Gent, C. Jefferson, I. Miguel, N. Moore, P. Nightingale, P. Prosser, and C. Unsworth. A preliminary review of literature on parallel constraint solving. In PMCS. Citeseer, 2011.Google Scholar
- R. E. Griswold and M. T. Griswold. History of Programming languages---II. chapter History of the Icon Programming Language, pages 599--624. ACM, New York, NY, USA, 1996. Google Scholar
Digital Library
- G. Gupta and V. S. Costa. And-or parallelism in full Prolog with paged Binding Arrays. In PARLE'92, pages 617--632. 1992. Google Scholar
Digital Library
- Y. Hamadi, S. Jabbour, and L. Sais. Manysat: A Parallel SAT Solver. JSAT, 6(4):245--262, 2009.Google Scholar
- Y. Hamadi, S. Jabbour, and J. Sais. Control-based clause sharing in parallel SAT solving. In Autonomous Search, pages 245--267. 2012.Google Scholar
Cross Ref
- K. T. Herley, A. Pietracaprina, and G. Pucci. Deterministic parallel backtrack search. TCS, 270(1):309--324, 2002. Google Scholar
Digital Library
- R. Jhala. Refinement types for Haskell. In PLPV, pages 27--28, 2014. Google Scholar
Digital Library
- L. Kuper and R. R. Newton. LVars: Lattice-based data structures for deterministic parallelism. In FHPC, pages 71--84. ACM, 2013. Google Scholar
Digital Library
- L. Kuper, A. Turon, N. R. Krishnaswami, and R. R. Newton. Freeze after writing: Quasi-deterministic parallel programming with LVars. In POPL, pages 257--270, 2014. Google Scholar
Digital Library
- J. Launchbury and S. L. Peyton Jones. Lazy functional state threads. In PLDI, pages 24--35, 1994. Google Scholar
Digital Library
- B. Liskov. A History of CLU. SIGPLAN Not., 28(3):133--147, Mar. 1993. ISSN 0362-1340. Google Scholar
Digital Library
- S. Marlow. Parallel and concurrent programming in Haskell. In Central European Functional Programming School, pages 339--401. 2012. Google Scholar
Digital Library
- S. Marlow, R. Newton, and S. Peyton Jones. Amonad for deterministic parallelism. In Haskell '11, pages 71--82. ACM, 2011. Google Scholar
Digital Library
- S. Peyton Jones, A. Reid, F. Henderson, T. Hoare, and S. Marlow. A semantics for imprecise exceptions. In PLDI, pages 25--36, 1999. Google Scholar
Digital Library
- B. C. Pierce and D. N. Turner. Local Type Inference. ACM Trans. Program. Lang. Syst., 22(1):1--44, 2000. Google Scholar
Digital Library
- T. Prabhu, S. Ramalingam, M. Might, and M. Hall. EigenCFA: Accelerating Flow Analysis with GPUs. POPL '11, pages 511--522, 2011. Google Scholar
Digital Library
- V. A. Saraswat and M. Rinard. Concurrent constraint programming. In POPL, pages 232--245. ACM, 1989. Google Scholar
Digital Library
- M. Shaw, W. A. Wulf, and R. L. London. Abstraction and Verification in Alphard: Defining and Specifying Iteration and Generators. Commun. ACM, 20(8):553--564, Aug. 1977. Google Scholar
Digital Library
- J. G. Siek and W. Taha. Gradual typing for functional languages. In Scheme and FP, pages 81--92, 2006.Google Scholar
- V. St-Amour, S. Tobin-Hochstadt, M. Flatt, and M. Felleisen. Typing the numeric tower. In PADL, pages 289--303, 2012. Google Scholar
Digital Library
- T. S. Strickland, S. Tobin-Hochstadt, and M. Felleisen. Practical variable-arity polymorphism. In ESOP, pages 32--46, 2009. Google Scholar
Digital Library
- S. Tobin-Hochstadt and M. Felleisen. Interlanguage migration: From scripts to programs. In OOPSLA, pages 964--974, 2006. Google Scholar
Digital Library
- S. Tobin-Hochstadt and M. Felleisen. The design and implementation of Typed Scheme. In POPL, pages 395--406, 2008. Google Scholar
Digital Library
- S. Tobin-Hochstadt and M. Felleisen. Logical types for untyped languages. In ICFP, pages 117--128, 2010. Google Scholar
Digital Library
- P. Van Hentenryck, V. Saraswat, and Y. Deville. Design, implementation, and evaluation of the constraint language cc (FD). J. Logic Prog., 37(1-3):139--164, 1998.Google Scholar
Cross Ref
- A. Zobel. Program structure as basis for parallelizing global register allocation. In Computer Languages, pages 262--271, Apr 1992. doi: 10.1109/ICCL.1992.185490.Google Scholar
Cross Ref
Recommendations
Parallel type-checking with haskell using saturating LVars and stream generators
PPoPP '16: Proceedings of the 21st ACM SIGPLAN Symposium on Principles and Practice of Parallel ProgrammingGiven the sophistication of recent type systems, unification-based type-checking and inference can be a time-consuming phase of compilation---especially when union types are combined with subtyping. It is natural to consider improving performance ...
Type Class Instances for Type-Level Lambdas in Haskell
TFP 2015: Revised Selected Papers of the 16th International Symposium on Trends in Functional Programming - Volume 9547Haskell 2010 lacks flexibility in creating instances of type classes for type constructors with multiple type arguments. We would like to make the order of type arguments to a type constructor irrelevant to how type class instances can be specified. ...






Comments