Approach for Teaching Parallel Programming in Heterogeneous Environments Using OpenCL

Authors

  • Lucas Henrique Silva Valentim PUC Minas
  • Henrique Cota de Freitas PUC Minas

DOI:

https://doi.org/10.5753/ijcae.2018.4850

Keywords:

OpenCL, Parallel programming, Parallel architectures, Heterogeneous computing, Teaching

Abstract

This article presents an approach for teaching parallel programming in heterogeneous environments to be used in undergraduate computer science courses. The main objective of this approach is to enable a smooth transition from the sequential programming paradigm to parallel programming in heterogeneous environments, equipping undergraduate students to better extract performance from current architectures. The programming language used is OpenCL due to its high portability, being a free programming language standard, and for being a parallel programming language that allows the utilization of all resources of a heterogeneous architecture. The teaching approach is divided into two components, where the introductory component covers the main features of the OpenCL programming language, identifying hardware with OpenCL support in a heterogeneous environment, and setting up the development environment. The transition component consists of applications with increasing levels of complexity, aimed at providing practical teaching of parallel programming in heterogeneous environments.

Downloads

Download data is not yet available.

References

A. Dakkak, C. Pearson and W. M. Hwu, "WebGPU: A Scalable Online Development Platform for GPU Programming Courses," 2016 IEEE International Parallel and Distributed Processing Symposium Workshops (IPDPSW), Chicago, IL, 2016, pp. 942-949.

I. Finlayson, J. Mueller, S. Rajapakse and D. Easterling, "Introducing Tetra: An Educational Parallel Programming System," 2015 IEEE International Parallel and Distributed Processing Symposium Workshop, Hyderabad, 2015, pp. 746-751.

S. Borkar, 2007. Thousand core chips: a technology perspective. Proceedings of Annual Design Automation Conference (DAC) pp.746-749.

R. W. Keyes, "Fundamental limits of silicon technology," in Proceedings of the IEEE, vol. 89, no. 3, pp. 227-239, Mar 2001.

C. H. Lu, C. S. Lin, H. L. Chao, J. S. Shen and P. A. Hsiung, "Reconfigurable Multi-core Architecture -- A Plausible Solution to the Von Neumann Performance Bottleneck," 2013 IEEE 7th International Symposium on Embedded Multicore Socs, Tokyo, 2013,pp.159-164. DOI: 10.1109/MCSoC.2013.32.

R. Muresano, D. Rexachs, E. Luque, "Learning parallel programming: a challenge for university students", Procedia Computer Science, Volume 1, Issue 1, 2010, pp. 875-883.

A.MUNSHI, "The opencl specification". In: Hot Chips 21 Symposium (HCS). IEEE, 2009. p. 1-314.

M. Paprzycki, "Education: Integrating Parallel and Distributed Computing in Computer Science Curricula," in IEEE Distributed Systems Online, vol. 7, no. 2, pp. 6-6, Feb. 2006

A. Marowka, "Think Parallel: Teaching Parallel Programming Today," in IEEE Distributed Systems Online, vol. 9, no. 8, pp. 1-1, Aug. 2008

A. Shafi, A. Akhtar, A. Javed and B. Carpenter, "Teaching Parallel Programming Using Java," 2014 Workshop on Education for High Performance Computing, New Orleans, LA, 2014, pp. 56-63

S. Oaks and H. Wong, Java Threads, Third Edition, 3rd ed. O’Reilly Media, Inc., 2004

R. Chandra, L. Dagum, D. Kohr, D. Maydan, J. McDonald, and R. Menon, Parallel Programming in OpenMP.Morgan Kaufmann Publishers Inc., 2001.

M. Frigo, C. E. Leiserson, and K. H. Randall, “The implementation of the Cilk-5 multithreaded language,” in Proceedings of the ACM SIGPLAN ’98 Conference on Programming Language Design and Implementation (PLDI),1998, pp. 212–223.

A. Shafi, B. Carpenter, and M. Baker, “Nested parallelism for multi-core HPC systems using Java,” Journal of Parallel and Distributed Computing, vol. 69, no. 6, pp. 532 – 545, 2009.

T. White, Hadoop: The Definitive Guide, 1st ed. O’Reilly Media, Inc., 2009

V. Kumar, A. Grama, A. Gupta, and G. Karypis, Introduction to Parallel Computing: Design and Analysis of Algorithms. Benjamin/Cummings Publishing Company, 1994.

W. Gropp, K. Kennedy, L. Torczon, A. White, J. Dongarra, I. Foster, and G. C. Fox. The Sourcebook of Parallel Computing (The Morgan Kaufmann Series in Computer Architecture and Design). Morgan Kaufmann, November 2002.

HENNESSY, John L.; PATTERSON, David A. Computer architecture: a quantitative approach. Elsevier, 2011.

FLYNN, M. J.; RUDD, K. W. Parallel Architectures. ACM Computing Surveys (CSUR), 1996,pp. 67-70 .

Published

2018-12-01

How to Cite

Valentim, L. H. S., & Freitas, H. C. de. (2018). Approach for Teaching Parallel Programming in Heterogeneous Environments Using OpenCL. International Journal of Computer Architecture Education, 7(1), 11–18. https://doi.org/10.5753/ijcae.2018.4850

Issue

Section

Full Papers