• DocumentCode
    1467308
  • Title

    hiCUDA: High-Level GPGPU Programming

  • Author

    Han, Tianyi David ; Abdelrahman, Tarek S.

  • Author_Institution
    Dept. of Electr. & Comput. Eng., Univ. of Toronto, Toronto, ON, Canada
  • Volume
    22
  • Issue
    1
  • fYear
    2011
  • Firstpage
    78
  • Lastpage
    90
  • Abstract
    Graphics Processing Units (GPUs) have become a competitive accelerator for applications outside the graphics domain, mainly driven by the improvements in GPU programmability. Although the Compute Unified Device Architecture (CUDA) is a simple C-like interface for programming NVIDIA GPUs, porting applications to CUDA remains a challenge to average programmers. In particular, CUDA places on the programmer the burden of packaging GPU code in separate functions, of explicitly managing data transfer between the host and GPU memories, and of manually optimizing the utilization of the GPU memory. Practical experience shows that the programmer needs to make significant code changes, often tedious and error-prone, before getting an optimized program. We have designed hiCUDA}, a high-level directive-based language for CUDA programming. It allows programmers to perform these tedious tasks in a simpler manner and directly to the sequential code, thus speeding up the porting process. In this paper, we describe the hiCUDA} directives as well as the design and implementation of a prototype compiler that translates a hiCUDA} program to a CUDA program. Our compiler is able to support real-world applications that span multiple procedures and use dynamically allocated arrays. Experiments using nine CUDA benchmarks show that the simplicity hiCUDA} provides comes at no expense to performance.
  • Keywords
    computer graphic equipment; coprocessors; program compilers; C-like interface; CUDA programming; compute unified device architecture; graphics processing units; high-level GPGPU programming; high-level directive-based language; prototype compiler; sequential code; Application software; Computer architecture; Computer graphics; Computer interfaces; Memory management; Packaging; Pipelines; Program processors; Programming profession; Prototypes; CUDA; GPGPU; data-parallel programming; directive-based language; source-to-source compiler.;
  • fLanguage
    English
  • Journal_Title
    Parallel and Distributed Systems, IEEE Transactions on
  • Publisher
    ieee
  • ISSN
    1045-9219
  • Type

    jour

  • DOI
    10.1109/TPDS.2010.62
  • Filename
    5445082