Teaching High Performance Computing through Parallel Programming Marathons

Parallel and distributed programming is essential for exploiting the processing power of modern computing platforms. However, during the first years of a Computer Science course, students usually learn problem solving techniques, data structures and programming paradigms that are inherently sequential, hindering the transition to parallel architectures. Parallel Programming Marathons organized in Brazil are similar to other Programming Competitions around the world and have been used for teaching and stimulating undergraduate and graduate students into learning to "think in parallel" and to develop applications for different parallel architectures, including multicores, clusters and accelerators. This paper presents the structure of this Parallel Programming Marathon and an overview of how it supports regional and national contests. Also, this work presents use cases on Parallel and Distributed Computing course from two different Brazilian universities that use a challenge based learning approach and employ marathon problems as course assignments. This approach contributed to increase students' interest towards High Performance Computing.

[1]  Ben Langmead Practical software for big genomics data , 2013, 2013 IEEE 3rd International Conference on Computational Advances in Bio and medical Sciences (ICCABS).

[2]  Thiago de Castro Martins,et al.  GPU accelerated reconstruction of Electrical Impedance Tomography Images through , 2012 .

[3]  Maurice Herlihy,et al.  The art of multiprocessor programming , 2020, PODC '06.

[4]  Wen-mei W. Hwu,et al.  Programming Massively Parallel Processors, Third Edition: A Hands-on Approach , 2016 .

[5]  Berk Hess,et al.  GROMACS: High performance molecular simulations through multi-level parallelism from laptops to supercomputers , 2015 .

[6]  Clay P. Breshears The Art of Concurrency - A Thread Monkey's Guide to Writing Parallel Applications , 2009 .

[7]  James Reinders,et al.  High Performance Parallelism Pearls: Multicore and Many-core Programming Approaches , 2014 .

[8]  Samuel Williams,et al.  The Landscape of Parallel Computing Research: A View from Berkeley , 2006 .

[9]  Arch D. Robison,et al.  Structured Parallel Programming: Patterns for Efficient Computation , 2012 .

[10]  Jianwu Wang,et al.  Multidisciplinary Education on Big Data + HPC + Atmospheric Sciences , 2017 .

[11]  Jie Wu,et al.  NSF/IEEE-TCPP curriculum initiative on parallel and distributed computing: core topics for undergraduates , 2011, SIGCSE '11.

[12]  Abu Asaduzzaman,et al.  Teaching Parallel Programming for Time-Efficient Computer Applications , 2014 .

[13]  Roland Lindh,et al.  Utilizing high performance computing for chemistry: parallel computational chemistry. , 2010, Physical chemistry chemical physics : PCCP.

[14]  Pradeep Dubey,et al.  Analysis and Optimization of Financial Analytics Benchmark on Modern Multi- and Many-core IA-Based Architectures , 2012, 2012 SC Companion: High Performance Computing, Networking Storage and Analysis.