• DocumentCode
    3538102
  • Title

    On Improving the Performance of Multi-threaded CUDA Applications with Concurrent Kernel Execution by Kernel Reordering

  • Author

    Wende, Florian ; Cordes, Frank ; Steinke, Thomas

  • Author_Institution
    Zuse Inst. Berlin, Berlin-Dahlem, Germany
  • fYear
    2012
  • fDate
    10-11 July 2012
  • Firstpage
    74
  • Lastpage
    83
  • Abstract
    General-purpose graphics processing units (GPUs) have been found to be viable solutions for large-scale numerical computations with an inherent potential for massive parallelism. In contrast, only few is known about using GPUs for small-scale computations. To have the GPU not be under-utilized for small problem sizes, a meaningful approach is to perform as many small-scale computations as possible in a concurrent manner. On NVIDIA Fermi GPUs, the concept of Concurrent Kernel Execution (CKE) allows for the execution of up to 16 GPU kernels on a single device. While using CKE in single-threaded CUDA programs is straightforward, for multi-threaded programs it might become a challenge to manage multiple host threads interacting with the GPU device, and in addition to have the CKE concept work properly. It can be observed that CKE performance breaks down when multiple host threads each invoke multiple GPU kernels in succession without synchronizing their actions. Since in real-world applications it is common that multiple host threads process their data independently, a mechanism is needed that helps avoiding CKE breakdown. We propose a producer-consumer principle approach to manage GPU kernel invocations from within parallel host regions by reordering the respective GPU kernels before actually invoking them. We are able to demonstrate significant performance improvements with this technique in a strong scaling simulation of a small molecule solvated within a nanodroplet.
  • Keywords
    graphics processing units; multi-threading; numerical analysis; operating system kernels; parallel architectures; CKE performance; NVIDIA Fermi GPU; concurrent kernel execution; general-purpose graphics processing units; kernel reordering; multiple GPU kernels; multiple host threads; multithreaded CUDA applications; numerical computations; producer-consumer principle approach; single-threaded CUDA programs; small-scale computations; Concurrent computing; Context; Electric breakdown; Graphics processing unit; Instruction sets; Kernel; Synchronization; CUDA; GP-GPU; concurrent kernel execution; multi-threaded applications;
  • fLanguage
    English
  • Publisher
    ieee
  • Conference_Titel
    Application Accelerators in High Performance Computing (SAAHPC), 2012 Symposium on
  • Conference_Location
    Chicago IL
  • ISSN
    2166-5133
  • Print_ISBN
    978-1-4673-2882-1
  • Type

    conf

  • DOI
    10.1109/SAAHPC.2012.12
  • Filename
    6319193