Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
skip to main content
10.1145/2774959.2774966acmconferencesArticle/Chapter ViewAbstractPublication PagespldiConference Proceedingsconference-collections
research-article

Compiling APL to accelerate through a typed array intermediate language

Published: 13 June 2015 Publication History

Abstract

We present an approach for compiling a rich subset of APL into data-parallel programs that can be executed on GPUs. The compiler is based on the AplTail compiler, which compiles APL programs into a typed array intermediate language, called TAIL. We translate TAIL programs into Haskell source code, employing Accelerate, a Haskell-library for general purpose GPU-programming. We demonstrate the feasibility of the approach by presenting some encouraging results for a number of smaller benchmarks. We also outline some problems that we need to overcome in order for the approach to result in competitive code for larger benchmarks.

References

[1]
L. Bergstrom and J. Reppy. Nested data-parallelism on the GPU. In 17th ACM SIGPLAN International Conference on Functional Programming (ICFP 2012), pages 247–258, Sept. 2012.
[2]
R. Bernecky. APEX: The APL parallel executor. Master’s thesis, Department of Computer Science University of Toronto, 1997.
[3]
G. Blelloch. Programming Parallel Algorithms. Communications of the ACM (CACM), 39(3):85–97, 1996.
[4]
T. Budd. An APL Compiler. Springer-Verlag, 1988. ISBN 978-0-387- 96643-4.
[5]
M. Budde. Compiling APL to Accelerate through a typed IL. MSc project, Department of Computer Science, University of Copenhagen (DIKU), November 2014.
[6]
M. M. Chakravarty, G. Keller, S. Lee, T. L. McDonell, and V. Grover. Accelerating Haskell array codes with multicore GPUs. In 6th Workshop on Decl. Aspects of Multicore Programming, DAMP’11. ACM, 2011.
[7]
S. Che, M. Boyer, J. Meng, D. Tarjan, J. W. Sheaffer, S.-H. Lee, and K. Skadron. Rodinia: A benchmark suite for heterogeneous computing. In IEEE Int. Symp. on Workload Characterization, IISWC’09, 2009.
[8]
H. Chen and W.-M. Ching. An ELI-to-C compiler: Production and performance, 2013.
[9]
K. Claessen, M. Sheeran, and J. Svensson. Expressive array constructs in an embedded GPU kernel programming language. In 7th Workshop on Decl. Aspects of Multicore Programming, DAMP’12. ACM, 2012.
[10]
C. Elliott. Functional images. In The Fun of Programming, “Cornerstones of Computing” series. Palgrave, March 2003.
[11]
M. Elsman and M. Dybdal. Compiling a subset of APL into a typed intermediate language. In 1st Int. Workshop on Libraries, Languages and Compilers for Array Programming, ARRAY’14. ACM, 2014.
[12]
C. Grelck and S.-B. Scholz. Accelerating APL programs with SAC. In Conference on APL ’99: On Track to the 21st Century, APL’99, pages 50–57. ACM, 1999.
[13]
C. Grelck and S.-B. Scholz. SAC: A functional array language for efficient multithreaded execution. Int. Journal of Parallel Programming, 34(4):383–427, 2006.
[14]
L. J. Guibas and D. K. Wyatt. Compilation and delayed evaluation in APL. In 5th Symposium on Principles of Programming Languages, POPL’78. ACM, 1978.
[15]
J. Guo, J. Thiyagalingam, and S.-B. Scholz. Breaking the GPU programming barrier with the auto-parallelising SAC compiler. In 6th Workshop on Decl. Aspects of Multicore Programming, DAMP’11. ACM, 2011.
[16]
T. Henriksen and C. E. Oancea. A T2 graph-reduction approach to fusion. In 2nd Workshop on Functional High-Performance Computing. ACM, September 2013.
[17]
T. Henriksen and C. E. Oancea. Bounds checking: An instance of hybrid analysis. In 1st Int. Workshop on Libraries, Languages and Compilers for Array Programming, ARRAY’14. ACM, 2014.
[18]
T. Henriksen, M. Elsman, and C. E. Oancea. Size Slicing - A Hybrid Approach to Size Inference in Futhark. In 3rd Workshop on Functional High-Performance Computing, FHPC’14. ACM, 2014.
[19]
A. Hsu. Co-dfns: Ancient language, modern compiler. In 1st Int. Workshop on Libraries, Languages and Compilers for Array Programming, ARRAY’14. ACM, 2014.
[20]
G. Keller, M. Chakravarty, R. Leshchinskiy, S. Peyton Jones, and B. Lippmeier. Regular, shape-polymorphic, parallel arrays in Haskell. In 15th Int. Conf. on Functional Programming, ICFP’10. ACM, 2010.
[21]
G. Keller, M. M. Chakravarty, R. Leshchinskiy, B. Lippmeier, and S. Peyton Jones. Vectorisation avoidance. In Proceedings of the 2012 Haskell Symposium, Haskell’12. ACM, 2012.
[22]
T. L. McDonell, M. M. Chakravarty, G. Keller, and B. Lippmeier. Optimising purely functional GPU programs. In 18th Int. Conference on Functional Programming, ICFP’13, pages 49–60. ACM, 2013.

Cited By

View all
  • (2016)APL on GPUs: a TAIL from the past, scribbled in FutharkProceedings of the 5th International Workshop on Functional High-Performance Computing10.1145/2975991.2975997(38-43)Online publication date: 8-Sep-2016

Index Terms

  1. Compiling APL to accelerate through a typed array intermediate language

    Recommendations

    Comments

    Information & Contributors

    Information

    Published In

    cover image ACM Conferences
    ARRAY 2015: Proceedings of the 2nd ACM SIGPLAN International Workshop on Libraries, Languages, and Compilers for Array Programming
    June 2015
    59 pages
    ISBN:9781450335843
    DOI:10.1145/2774959
    Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for components of this work owned by others than ACM must be honored. Abstracting with credit is permitted. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. Request permissions from [email protected]

    Sponsors

    Publisher

    Association for Computing Machinery

    New York, NY, United States

    Publication History

    Published: 13 June 2015

    Permissions

    Request permissions for this article.

    Check for updates

    Author Tags

    1. APL compilation
    2. Data parallelism
    3. GPGPU

    Qualifiers

    • Research-article

    Conference

    PLDI '15
    Sponsor:

    Acceptance Rates

    Overall Acceptance Rate 17 of 25 submissions, 68%

    Contributors

    Other Metrics

    Bibliometrics & Citations

    Bibliometrics

    Article Metrics

    • Downloads (Last 12 months)4
    • Downloads (Last 6 weeks)0
    Reflects downloads up to 04 Oct 2024

    Other Metrics

    Citations

    Cited By

    View all
    • (2016)APL on GPUs: a TAIL from the past, scribbled in FutharkProceedings of the 5th International Workshop on Functional High-Performance Computing10.1145/2975991.2975997(38-43)Online publication date: 8-Sep-2016

    View Options

    Get Access

    Login options

    View options

    PDF

    View or Download as a PDF file.

    PDF

    eReader

    View online with eReader.

    eReader

    Media

    Figures

    Other

    Tables

    Share

    Share

    Share this Publication link

    Share on social media