Academic research and engineering challenge both require high performance computing (HPC), which can be achieved through parallel programming. The existing curricula of most universities do not properly address the major transition from single-core to multicore systems and sequential to parallel programming. They focus on applying application program interface (API) libraries and open multiprocessing (OpenMP), message passing interface (MPI), and compute unified device architecture (CUDA)/GPU techniques. This approach misses the goal of developing students’ long-term ability to solve real-life problems by ‘thinking in parallel’. In this article, a novel approach is proposed to teach parallel computing that will prepare computer application developers for present and future computation challenges. Using multicore/manycore architecture and popular challenging problems from areas like computer science, proposed approach teaches how to analyze and develop efficient solutions for the problems. As preliminary work, some multithreaded parallel programs are introduced to computer science and engineering students. Based on the feedbacks from information technology (IT) professionals and Student Outcomes Assessment Reports, proposed approach has potential to provide adequate knowledge so that students can fulfill the growing industry demands for HPC. Based on the Steady State Heat Equation experiment, CUDA/GPU parallel programming may achieve up to 241x speed up factor while simulating heat transfer on a 5000x5000 thin surface.
[1]
Hui Li,et al.
Parallel sorting by over partitioning
,
1994,
SPAA '94.
[2]
Ami Marowka.
Think Parallel: Teaching Parallel Programming Today
,
2008,
IEEE Distributed Systems Online.
[3]
Daniel E. Stevenson,et al.
Concurrent CS: preparing students for a multicore world
,
2008,
ITiCSE.
[4]
Harry F. Jordan,et al.
Overview of the Force Scientific Parallel Language
,
1994,
Sci. Program..
[5]
Guy E. Blelloch,et al.
A comparison of sorting algorithms for the connection machine CM-2
,
1991,
SPAA '91.
[6]
Steven Brawer,et al.
An Introduction to Parallel Programming
,
1989
.
[7]
Yifeng Zhu,et al.
REU Site: Supercomputing Undergraduate Program in Maine (SuperMe)
,
2013
.
[8]
Ron,et al.
The RSA Algorithm
,
2009
.
[9]
David Kaeli,et al.
Introduction to Parallel Programming
,
2013
.
[10]
Hsien-Hsin S. Lee.
Collaborative proposal: problem-based learning of multithreaded programming
,
2011
.
[11]
Christopher H. Nevison,et al.
Parallel computing to start the millennium
,
2000,
SIGCSE '00.
[12]
William Gropp,et al.
Teaching parallel programming
,
2010,
XRDS.
[13]
Nancy M. Amato,et al.
A Comparison of Parallel Sorting Algorithms on Different Architectures
,
1998
.