skip to main content
research-article

Improving CUDA™ C/C++ encoding readability to foster parallel application development

Published:27 January 2012Publication History
Skip Abstract Section

Abstract

Graphical Processing Units (GPUs) have recently been used to enable parallel application development. The most prominent initiative has been provided by NVIDIA™ with the so-called CUDA™ architecture, designed to GeForce™ graphic cards. However, even with CUDA C-like programming language, parallel codification remains somewhat awkward if compared to sequential codification. The programmer still has to deal with low-level hardware details such as generation and synchronization of threads and GPU tracks and sectors. In this paper, we propose a programmer-friendly interface for CUDA-C programming, in such a way that most hardware details are hidden from the programmer. We show how code readability is improved without undermining parallel execution performance.

References

  1. Ioannis E. Venetis, Theodore S. Papatheodorou, Guang R. Gao. 2006. Handling Massive Parallelism Efficiently: Introducing Batches of Thread.Google ScholarGoogle Scholar
  2. David Culler, J.P. Singh and Anoop Gupta. 1998. Parallel Computer Architecture: A Hardware/Software Approach. Morgan Kaufmann; 1st edition. Google ScholarGoogle ScholarDigital LibraryDigital Library
  3. N. M. Amato, R. Iyer, S. Sundaresan, Y. Wu. 1998. A Comparison of Parallel Sorting Algorithms on Different Architectures.Google ScholarGoogle Scholar
  4. Raymond Greenlaw, H. James Hoover and Walter L. Ruzzo. 1995. Limits to Parallel Computation: P-Completeness Theory. Google ScholarGoogle ScholarDigital LibraryDigital Library
  5. David Geer. 2005. Industry Trends: Chip Makers Turn to Multicore Processors. Computer, vol. 38, no. 5, pp. 11--13, May 2005. Google ScholarGoogle ScholarDigital LibraryDigital Library
  6. 2006. The Technical Impact of Moore's Law. IEEE solid-state circuits society newsletter.Google ScholarGoogle Scholar
  7. OpenMP ARB. 2011. OpenMP.org. Available at: http://www.openmp.org/ (Accessed: 25 October 2011).Google ScholarGoogle Scholar
  8. David Luebke and Greg Humphreys. 2007. How GPUs Work. IEEE Computer. Google ScholarGoogle ScholarDigital LibraryDigital Library
  9. NVIDIA Corporation. 2011. CUDA. Available at: http://www.nvidia.com/cuda. (Accessed: 25 October 2011).Google ScholarGoogle Scholar
  10. NVIDIA Corporation. 2011. GeForce 8400. Available at: http://www.nvidia.com/object/geforce_8400.html. (Accessed: 25 October 2011).Google ScholarGoogle Scholar
  11. NVIDIA Corporation. 2011. CUDA Programming Guide Version 4.0.Google ScholarGoogle Scholar
  12. NVIDIA Corporation. 2011. CUDA Reference Manual Version 4.0.Google ScholarGoogle Scholar
  13. Udi Manber. 1989. Introduction to Algorithms: A Creative Approach. Addison-Wesley; 1 edition Google ScholarGoogle ScholarDigital LibraryDigital Library
  14. Cheer-Sun D. Yang, Amie L. Souter, and Lori L. Pollock. 1998. All-du-path coverage for parallel programs. SIGSOFT Softw. Eng. Notes 23, 2 (March 1998), 153-162. DOI=10.1145/271775.271804 http://doi.acm.org/10.1145/271775.271804 Google ScholarGoogle ScholarDigital LibraryDigital Library
  15. Chia-Chu Chiang. 2005. Implicit heterogeneous and parallel programming. SIGSOFT Softw. Eng. Notes 30, 3 (May 2005), 1-6. DOI=10.1145/1061874.1061887 http://doi.acm.org/10.1145/1061874.1061887 Google ScholarGoogle ScholarDigital LibraryDigital Library

Index Terms

  1. Improving CUDA™ C/C++ encoding readability to foster parallel application development

          Recommendations

          Comments

          Login options

          Check if you have access through your login credentials or your institution to get full access on this article.

          Sign in

          Full Access

          PDF Format

          View or Download as a PDF file.

          PDF

          eReader

          View online with eReader.

          eReader