Created to help scientists and engineers write computer code, this practical book addresses the important tools and techniques that are necessary for scientific computing, but which are not yet commonplace in science and engineering curricula. This book contains chapters summarizing the most important topics that computational researchers need to know about. It leverages the viewpoints of passionate experts involved with scientific computing courses around the globe and aims to be a starting point for new computational scientists and a reference for the experienced. Each contributed chapter focuses on a specific tool or skill, providing the content needed to provide a working knowledge of the topic in about one day. While many individual books on specific computing topics exist, none is explicitly focused on getting technical professionals and students up and running immediately across a variety of computational areas.
Table of Contents
Operating Systems Overview
Machine Numbers and the IEEE 754 Floating Point Standard
Frank T. Willmore
Developing with Git and Github
Introduction to Bash Scripting
Debugging with gdb
Frank T. Willmore
Makefiles, Libraries, and Linking
Frank T. Willmore
Linking and Interoperability
Frank T. Willmore
Build Management with CMake
Ryan L. Marson and Eric Jankowski
Getting Started with Python 3
Brian C. Barnes and Michael S. Sellers
Introduction to High-Performance Computing Systems
Introduction to Parallel Programming with MPI
Introduction to OpenMP
Yaakoub El Khamra
Checkpointing Code for Restartability with HDF5
Frank T. Willmore
Libraries for Linear Algebra
Parallel Computing with Accelerators
İnanç Şenocak and Haoqiang Jin
Testing and Verification
Validation of Computational Models and Codes
Christopher R. Iacovella, Christoph Klein, Janos Sallai, and Ahmed E. Ismail
Software Licensing and Distribution
Frank Willmore completed his PhD in chemical engineering in 2006 at the University of Texas under the direction of Isaac C Sanchez, studying the role of free volume in small molecule diffusion. After a brief foray into the construction sector, Frank returned to research and began postdoctoral work using GPUs for molecular simulation. In May of 2010, he joined the high performance computing team at the Texas Advanced Computing Center as a consultant focused on chemical engineering and materials science software applications and developed their first short course on CUDA programming for their Summer Supercomputing Institute. Frank received a National Research Council award to study free volume in materials at the National Institute of Standards and Technology for all of 2011. Frank remained at TACC until 2014 and has since pursued consulting projects, including a project with the Glotzer group at the University of Michigan, building analytical and visual extensions to the HOOMD software package.
Eric Jankowski is an assistant professor of Materials Science and Engineering at Boise State University. His research group uses computer simulations to understand how the arrangements of molecules can be controlled through thermodynamic self-assembly. Eric was a Director’s Fellow at the National Renewable Energy Laboratory and a postdoctoral research associate at the University of Colorado, Boulder. He earned his PhD in chemical engineering in 2012 from the University of Michigan, Ann Arbor, working with Sharon Glotzer to develop efficient heuristics for predicting thermodynamically stable arrangements of small particles.
Coray Colina is Professor in the Department of Chemistry at the University of Florida with an affiliate appointment in Materials Science and Nuclear Engineering. She obtained her PhD in Chemical Engineering at North Carolina State University working with Keith E. Gubbins and was a Postdoctoral Research Associate in the Department of Chemistry at the University of North Carolina at Chapel Hill, working with Lee Pedersen. She was previously a faculty member at Simón Bolívar University, Venezuela, and joined the Department of Materials Science and Engineering at The Pennsylvania State University as Associate Professor in 2007. Her group strives to understand and predict structure-property relations in functional materials, such as polymeric membranes, hydrogels, biomolecules, and alternative ionic liquids. They use a variety of simulation techniques to gain further understanding of these systems by providing unique insight into structural aspects and phenomena. Complementary to experimental investigations, their work is helping to analyze and interpret experimental results, as well as to predict performance of new materials to guide future experimental design efforts.
"…a long overdue and badly needed resource for beginning students of scientific, technical, and high-performance computing. It provides within a single concise volume tutorials and primers in all of the fundamental elements required to become a competent scientific programmer. Its style is extremely accessible and user friendly and employs illuminating examples to illustrate the key concepts and tools. I only wish that this book had been available to me when I was first learning scientific computing—I can only imagine the time that it would have saved me, the good habits that it would have instilled, and the elevated level of competence that I would have developed!"
–Andrew Ferguson, University of Illinois, Urbana-Champaign, USA
"…touches topics that every practitioner in the field of scientific and technical computing has to learn at some point in his/her career. It provides an overview over software tools and coding infrastructure that form the basis of every computational research project. This book is a useful learning tool and reference for everybody serious about starting in computational research."
–Michael Engel, Friedrich-Alexander-Universität, Erlangen-Nürnberg, Germany
"… a unique book that fills [a] gap in the existing scientific computing literature landscape. This book focuses on the necessary aspects of creating and maintaining a scientific code today."
–Chris D. Lorenz, King’s College, London, UK
"The material this book covers is a good summary of what I learned piece-by-piece over a decade of research. I wish this book had existed when I was a first-year (or fifth-year) graduate student. It could have saved me a lot of time and taught me how to create reliable and reproducible computational science far earlier."
–Carolyn Phillips, Computation Institute, University of Chicago; Neurensic, Inc., Chicago, Illinois, USA
"This book is a must-have for any physicist, chemist or engineer grad student, postdoc and academic wishing to use modern computers for their research…. the spellbook that unravels the mysteries of professional-style computation tools, making them accessible and useful to non-computer majors."
–Erich A. Müller, Imperial College, London, UK