We may earn an affiliate commission when you visit our partners.
Course image
Udacity logo

High Performance Computing

Rich Vuduc and Catherine Gamboa

Take Udacity's high performance computing course and gain a solid foundation in developing, analyzing and implementing parallel and locality-efficient algorithms.

What's inside

Syllabus

Course Information
Introduction to High Performance Computing
Intro to the Work-Span Model
Intro to OpenMP
Read more
Comparison-based Sorting
Scans and List Ranking
Tree Computations
Shared Memory Parallel BFS
Sample Midterm
Intro to Dist. Memory Models
Intro to MPI
Topology
Dist. Dense Matrix Multiply
Dist. Memory Sorting
Distributed BFS
Graph Partitioning
Basic Model of Locality
Algorithmic Time, Energy and Power
I/O-Avoiding Algorithms
Cache-Oblivious Algorithms
Conclusion

Good to know

Know what's good
, what to watch for
, and possible dealbreakers
Teaches skills and knowledge that are highly relevant to industry
Builds a strong foundation for beginners
Strengthens an existing foundation for intermediate learners
Develops professional skills or deep expertise in a particular topic or set of topics
Offers hands-on labs and interactive materials
Covers unique perspectives and ideas that may add color to other topics and subjects

Save this course

Save High Performance Computing to your list so you can find it easily later:
Save

Activities

Be better prepared before your course. Deepen your understanding during and after it. Supplement your coursework and achieve mastery of the topics covered in High Performance Computing with these activities:
Develop a digital notebook or use a tool like Notion to organize lecture notes
Organizing your notes will help you retain concepts better, save time searching for information, and help you find patterns that you may not have otherwise seen.
Show steps
  • Decide on the organizational structure
  • Set up a template in your digital notebook or Notion
  • Add notes to your digital notebook or Notion after each lecture
Follow online tutorials on topics like OpenMP, MPI, and parallel algorithm techniques.
Following guided tutorials will provide you with hands-on experience and a deeper understanding of the concepts covered in this course.
Show steps
  • Find online tutorials on topics covered in the course
  • Follow the instructions provided in the tutorials
Solve practice problems on codeforces
Solving practice problems on codeforces.com will reinforce your understanding of parallel algorithm techniques.
Show steps
  • Create a user account on codeforces.com
  • Filter problems that are labelled with tags like parallel algorithm, dp, data structures etc.
  • Attempt to solve the problems
  • Review solutions when you are stuck
Three other activities
Expand to see all activities and additional details
Show all six activities
Solve sample problems from the course website
Solving sample problems will reinforce your understanding of the concepts covered in each lecture.
Show steps
  • Attempt to solve the problems on your own
  • Review solutions to the problems
Develop a simple parallel algorithm to solve a problem of your choice
Developing your own parallel algorithm will test your understanding of the concepts and principles covered in this course and strengthen your problem-solving abilities.
Show steps
  • Define the problem you want to solve
  • Design a parallel algorithm to solve the problem
  • Implement your algorithm in a programming language of your choice
  • Test and evaluate the performance of your algorithm
Study the book 'Parallel Programming: Techniques and Applications' by Barry Wilkinson and Michael Allen
This book delves deeply into different parallel programming paradigms which will complement the brief coverage of these paradigms in this course.
Show steps

Career center

Learners who complete High Performance Computing will develop knowledge and skills that may be useful to these careers:
Computational Scientist
Computational Scientists use computers to solve problems in science and engineering. These problems can be very complex and require the use of high performance computing systems. Computational Scientists may use parallel and locality-efficient algorithms to improve the performance of their simulations. The Udacity high performance computing course may be useful for someone in this role because it would provide them with a foundation in parallel and locality-efficient algorithms.
High Performance Computing Analyst
A High Performance Computing Analyst is a type of Computer Systems Analyst who specializes in high-performance computing environments. High Performance Computing Analysts may design, develop, and test parallel and locality-efficient algorithms in order to improve the performance of computing systems. They must also analyze and interpret data to identify performance bottlenecks and develop solutions to improve system efficiency. The Udacity high performance computing course would be helpful for someone in this role because it would provide them with a solid foundation in parallel and locality-efficient algorithms.
Machine Learning Engineer
Machine Learning Engineers design, develop, and test machine learning models. These models are used to make predictions or to improve the performance of a system. Machine Learning Engineers may use high performance computing systems to train large models quickly. The Udacity high performance computing course may be useful for someone in this role because it would provide them with a foundation in parallel and locality-efficient algorithms.
Business Analyst
Business Analysts analyze business processes and identify ways to improve efficiency. They may use high performance computing systems to process large amounts of data quickly. The Udacity high performance computing course may be useful for someone in this role because it would provide them with a foundation in parallel and locality-efficient algorithms.
Operations Research Analyst
Operations Research Analysts use mathematical models to solve problems in business and industry. These problems can be very complex and require the use of high performance computing systems. Operations Research Analysts may use parallel and locality-efficient algorithms to improve the performance of their models. The Udacity high performance computing course may be useful for someone in this role because it would provide them with a foundation in parallel and locality-efficient algorithms.
Statistician
Statisticians collect, analyze, and interpret data. This data can be used to make predictions or to improve the performance of a system. Statisticians may use high performance computing systems to process large amounts of data quickly. The Udacity high performance computing course may be useful for someone in this role because it would provide them with a foundation in parallel and locality-efficient algorithms.
Software Engineer
Software Engineers design, develop, and test software systems. These systems can be used for a variety of purposes, including high performance computing. Software Engineers may use parallel and locality-efficient algorithms to improve the performance of their software systems. The Udacity high performance computing course may be useful for someone in this role because it would provide them with a foundation in parallel and locality-efficient algorithms.
Management Consultant
Management Consultants help organizations improve their performance. They may use high performance computing systems to process large amounts of data quickly. The Udacity high performance computing course may be useful for someone in this role because it would provide them with a foundation in parallel and locality-efficient algorithms.
Financial Analyst
Financial Analysts use financial data to make predictions about the future performance of companies or markets. These predictions can be used to make investment decisions or to develop financial plans. Financial Analysts may use high performance computing systems to process large amounts of data quickly. The Udacity high performance computing course may be useful for someone in this role because it would provide them with a foundation in parallel and locality-efficient algorithms.
Product Manager
Product Managers develop and manage products. They may use high performance computing systems to process large amounts of data quickly. The Udacity high performance computing course may be useful for someone in this role because it would provide them with a foundation in parallel and locality-efficient algorithms.
Actuary
Actuaries use mathematical and statistical models to assess risk. This risk can come from a variety of sources, such as natural disasters, accidents, or financial losses. Actuaries may use high performance computing systems to process large amounts of data quickly. The Udacity high performance computing course may be useful for someone in this role because it would provide them with a foundation in parallel and locality-efficient algorithms.
Computer Scientist
Computer Scientists perform research on new computing technologies. This can include high performance computing systems. They may also design, develop, implement, test, or maintain computer applications or software systems. The Udacity high performance computing course may be useful for someone in this role because it would provide them with a foundation in parallel and locality-efficient algorithms.
Systems Engineer
Systems Engineers design, develop, and test systems that include hardware, software, and networks. These systems can be used for a variety of purposes, including high performance computing. Systems Engineers may use parallel and locality-efficient algorithms to improve the performance of their systems. The Udacity high performance computing course may be useful for someone in this role because it would provide them with a foundation in parallel and locality-efficient algorithms.
Data Analyst
Data Analysts collect, analyze, and interpret data. This data can be used to make predictions or to improve the performance of a system. Data Analysts may use high performance computing systems to process large amounts of data quickly. The Udacity high performance computing course may be useful for someone in this role because it would provide them with a foundation in parallel and locality-efficient algorithms.
Data Scientist
Data Scientists gather, analyze, interpret, and present data. This data is often used to make predictions or to improve the performance of a system. Data Scientists may use high performance computing systems to process large amounts of data quickly. The Udacity high performance computing course may be useful for someone in this role because it would provide them with a foundation in parallel and locality-efficient algorithms.

Reading list

We've selected 14 books that we think will supplement your learning. Use these to develop background knowledge, enrich your coursework, and gain a deeper understanding of the topics covered in High Performance Computing.
Provides an introduction to the field of high-performance computing, particularly focusing on scientific and engineering applications. This book would be useful as a textbook for the course.
Introduces concepts of high performance computing by presenting fundamentals and important recent advances through a balanced treatment of computer architectures and algorithm design.
Provides a comprehensive overview of MPI, a popular message passing interface. It valuable resource for anyone who wants to learn more about this topic.
Presents the fundamentals of parallel programming and high-performance computing, with a focus on modern architectures and programming models.
Provides coverage of the field of parallel computing and is commonly used as a textbook or reference at academic institutions.
Provides a comprehensive overview of performance optimization for high-performance computing. It valuable resource for anyone who wants to learn more about this topic.
Provides a comprehensive overview of high-performance computing, focusing on algorithms and applications. This book would be a good reference for the course.
Provides a comprehensive overview of advanced programming techniques in the UNIX environment. It valuable resource for anyone who wants to learn more about this topic.
Provides a comprehensive overview of numerical recipes in C++. It valuable resource for anyone who wants to learn more about this topic.
Provides a comprehensive overview of parallel programming with MPI. It valuable resource for anyone who wants to learn more about this topic.
Provides a comprehensive overview of OpenMP. It valuable resource for anyone who wants to learn more about this topic.
Introduces the fundamentals and implementation of OpenMP. OpenMP popular programming model for shared memory systems. This book would be useful as supplemental reading for the course.
Provides a comprehensive overview of computer architecture. It valuable resource for anyone who wants to learn more about this topic.
Provides a comprehensive overview of operating system concepts. It valuable resource for anyone who wants to learn more about this topic.

Share

Help others find this course page by sharing it with your friends and followers:
Our mission

OpenCourser helps millions of learners each year. People visit us to learn workspace skills, ace their exams, and nurture their curiosity.

Our extensive catalog contains over 50,000 courses and twice as many books. Browse by search, by topic, or even by career interests. We'll match you to the right resources quickly.

Find this site helpful? Tell a friend about us.

Affiliate disclosure

We're supported by our community of learners. When you purchase or subscribe to courses and programs or purchase books, we may earn a commission from our partners.

Your purchases help us maintain our catalog and keep our servers humming without ads.

Thank you for supporting OpenCourser.

© 2016 - 2024 OpenCourser