Course Overview

Welcome

Penn State Astro 528 High-Performance Scientific Computing for Astrophysics Eric Ford


Course goals

Enhance your skills for scientific computing

  • Increase your productivity

    • Choose right tool for right task

    • Reduce time debugging

    • Improve reproducibility

  • Help you to write more efficient code, so you can:

    • Build intuition more rapidly

    • Analyze larger datasets ("Big Data")

    • Increase resolution of simulations

    • Include more complex physics

    • Perform more analyses/simualtions to explore sensitivity to parameters/assumptions

    • Increase impact of your software


Course outline

  • Software Development Practices

  • Writing efficient serial code

  • Parallelizing code efficiently


Software Development Practices

⚠ Note
Ask what students think of when they hear "software development practices".

Software Development Practices

  • Common programming paterns

  • Version control

  • Writing Tests

  • Continuous Integration

  • Debugging

  • Documentation/Literate Programming

  • Coding standards

  • Reviewing code

  • Reproducibility

  • Workflow


Writing efficient serial code

  • Processor architectures

  • Memory hierarchy

  • Networking

  • Programming languages

  • Choosing algorithms

  • Benchmarking

  • Profiling

  • Compiler optimizations

  • Optimizing


Parallelizing code efficiently

  • Shared-memory (e.g., one workstation)

  • Distributed-memory (e.g., cluster)

  • Accelerators

    • GPUs

    • TPUs (volunteers?)

  • Cloud

⚠ Note
Ask if any students already using parallel codes. If so, how were they parallelized?

Specific Objectives

  • Increase technical knowledge

    • Readings, online lessons & class discussion

  • Practice fundamentals on a small scale

    • Lab/homework exercises

    • Make lots of mistakes quickly & learn from them

    • Make good habits routine

  • Transfer skills into real work environment

    • Class project

    • Apply new skills to your research

    • Build deeper expertise in topics most relevant to you

    • Share what you learn with the class


Readings, presentation

  • Textbooks

    • Writing Scientific Software: A Guide to Good Style

    • ThinkJulia: How to Think like a Computer Scientist

    • Introduction to High Performance Computing for Scientists and Engineers (definitely optional)

  • Online PDFs

  • Online tutorials

  • Recordings (will try, no guaranty)

"textbooks"

Safety

  • Students are welcome/encouraged to wear masks, but are not required to mask at this time. (Policy may change based on government/university guidance.)

  • Please err on the side of caution:

    • If not feeling well, please stay home. (You can still earn full credit.)

    • If have reason to believe may have been exposed recently, please stay home or at least wear a high-quality, well-fitting mask.

    • If engage in risky activities outside of class, please consider taking precautions to mitigate risk.

  • I'll be wearing a mask in class.

  • I'll send announcement via Canvas if any classes need to move online


Class discussions

  • Let's learn from each other

  • Introductions

    • Name (& pronouns if you like)

    • Department (if not Astro)

    • Year of your program

    • What skill you hope to strengthen through this course