Writing optimized code will help you to become a more productive computational scientist and reduce your time to solution, while making more efficient use of advanced cyberinfrastructure and reducing the carbon footprint of your workload. We start with a brief overview of software profiling, which allows you to identify portions of the code that account for most of the run time. We then cover some of the key principles of writing fast code, with an emphasis on loop level transformations and making effective use of your processor’s cache. We also address commonly used techniques such as force reduction (replacement of expensive operations with equivalent, faster options), time-space tradeoffs (pre-computation and reuse of results), short circuiting (avoiding operations in compound logical tests) and one-off optimizations based on the specific features of your code.
Robert Sinkovits, Ph.D.
Director of Education and Training, SDSC
Robert leads the education and training efforts at the San Diego Supercomputer Center, where he also serves as the industry program liaison. He has collaborated with researchers spanning many fields including physics, chemistry, astronomy, structural biology, finance, ecology, climate, immunology, and the social sciences, always with an emphasis on making the most effective use of high-end computing resources. He is the PI of the NSF-funded Space Use Ecology Gateway, co-PI of the Voyager supercomputer award, co-PI of several NSF training projects and former director of XSEDE’s Extended Collaborative Support Service (ECSS). He is also an avid cyclist and mountain climber, having summited more than 400 peaks.