From your smartphone to your laptop, today's tech devices glean their computing power from multi-core processors. Supercomputers contain thousands of cores, and within three to four years a computer with 100 million cores -- and the capacity to do a billion billion calculations per second -- is expected to launch.
To write code that runs on all these cores simultaneously, software engineers use a technique called parallel programming -- and a high-level model called OpenACC makes it easier. Now, Sunita Chandrasekaran, an assistant professor of computer and information sciences at the University of Delaware professor, has co-edited the first printed textbook on the subject: OpenACC for Programmers: Concepts and Strategies along with her colleague Dr. Guido Juckeland, Head of computational science at Helmholtz-Zentrum Dresden-Rossendorf (HZDR) in Germany.
Writing the book on OpenACC
At many universities, including UD, the computer science curriculum includes at least one mandatory course on parallel programming.
"It's important to train the next generation of scientists on how to use this," said Chandrasekaran who runs her Computational Research and Programming Lab at UD.
Parallel programming, and OpenACC, is used in high-performance computing in the fields of bioinformatics, quantum chemistry, astrophysics and more.
"The model was made to ensure that scientists spend more time on science, less on programming," said Chandrasekaran.
OpenACC is portable and platform-agnostic, so it should be able to keep up even as computer architectures undergo rapid change, said Chandrasekaran.
OpenACC for Programmers: Concepts and Strategies can easily be incorporated into the syllabus of a course on parallel programming, and it can also serve as a template for a new syllabus, said Chandrasekaran. The book can also be used for self-study.
Each chapter is written by a different set of authors and includes examples in the programming languages C, C++, and Fortran. Source code is available in GitHub. The book also contains exercises, including multiple choices questions and coding challenges.
"OpenACC as a high-level programming interface offers the ability to describe the inherent parallelism of a program and as such is a wonderful gentle introduction for students and scientists to the intricacies of parallel programming," said Dr. Guido Juckeland, the book's co-editor. "This book provides a clear path through that parallel programming maze."
When OpenACC came out in 2011, Chandrasekaran was an early adopter. Now, she is Director of User Adoption for OpenACC, a nonprofit organization.
"This puts me at the forefront of contacting users and asking them what is missing in OpenACC and what they want," she said.
Chandrasekaran has worked on development of OpenACC support, compilers, and runtime. She has also worked on parallelizing application benchmarks.