Fundamentals of Parallelism on Intel Architecture
- 4.6
Course Summary
Learn how to write parallel programs using modern parallel architectures, such as multicore CPUs and GPUs.Key Learning Points
- Understand the fundamental concepts of parallelism and how to apply them in programming.
- Learn how to write efficient and scalable parallel programs using OpenMP and CUDA.
- Explore real-world applications of parallelism in fields such as image processing and scientific computing.
Related Topics for further study
Learning Outcomes
- Develop a solid understanding of parallelism and its applications
- Write efficient and scalable parallel programs using OpenMP and CUDA
- Apply parallelism to real-world problems in image processing and scientific computing
Prerequisites or good to have knowledge before taking this course
- Basic knowledge of programming in C/C++ or Python
- Familiarity with computer architecture and operating systems
Course Difficulty Level
IntermediateCourse Format
- Online self-paced
- Video lectures
- Assignments and quizzes
- Programming assignments
Similar Courses
- Parallel programming in Java
- Parallel programming in Python
Related Education Paths
Notable People in This Field
- John Hennessy
- David Patterson
Related Books
Description
This course will introduce you to the multiple forms of parallelism found in modern Intel architecture processors and teach you the programming frameworks for handling this parallelism in applications. You will get access to a cluster of modern manycore processors (Intel Xeon Phi architecture) for experiments with graded programming exercises.
Outline
- Modern Code
- 1.0 Introduction
- 1.1 Why this course?
- 1.2 How Computers Get Faster
- 1.3 Intel Architecture
- 1.4 Modern Code
- 1.5 What You Are Going To Learn
- 1.6 Remote Access
- Modern Code
- Modern code
- Vectorization
- 2.1 Vector Operations
- 2.2 Vectorizing Your Code
- 2.3.1 Automatic Vectorization
- 2.3.2 Will This Vectorize?
- 2.4 Guided Automatic Vectorization
- 2.8.1 Stencil Introduction
- 2.8 Stencil
- 2.5 SIMD-Enabled Functions
- 2.6 Vector Dependence
- 2.7 Strip Mining
- Numerical Integration Introduction
- 2.9 Integral Vectorization
- 2.10 Learn More
- Vectorization
- Code Download
- Code Download
- Vectorization
- Multithreading with OpenMP
- 3.1 Cores and Threads
- Demo: Forks
- 3.2 Creating Threads
- 3.3 Variable Sharing
- 3.4 Parallel Loops
- 3.5 Data Races Mutexes
- 3.7 Parallel Reduction
- Stencil Introduction
- Stencil Demonstration
- Learn More
- Multithreading with OpenMP
- Code Download
- Code Download
- OpenMP
- Memory Traffic
- 4.1 Cheap Flops
- 4.2 Memory Hierarchy
- 4.3 High Bandwidth Memory
- 4.4 Memory Allocation
- Stencil Introduction
- Demo: Stencil with numactl
- Demo: Stencil with Memkind
- 4.5 Bypassing Caches
- Stencil Demonstration-Nontemporal
- Stencil Demonstration-Char
- 4.6 Locality in Space
- 4.7 Locality in Time
- Integral Introduction
- Integral Demonstration
- Memory Traffic
- Code Download
- Code Download
- Memory traffic
- Clusters and MPI
- 5.1 Computing Clusters
- 5.2 Message Passing Interface
- 5.3 Programming with MPI
- 5.4 Compiling and Running with MPI
- 5.5 Peer-to-Peer Messaging
- 5.6 Collective Communication
- Stencil Introduction
- Stencil Demonstration-MPI
- Integral Introduction
- Integral Demonstration
- Learn More
- Clusters and MPI
- Code Download
- Code Download
- MPI
Summary of User Reviews
This course on parallelism is highly recommended for anyone interested in improving their knowledge in this area. The course has received positive reviews from many users due to its comprehensive content and hands-on approach.Key Aspect Users Liked About This Course
The hands-on approach of the course was praised by many users as it allowed them to apply the concepts they learned in real-world scenarios.Pros from User Reviews
- Comprehensive content that covers a wide range of topics related to parallelism
- The course is well-structured and easy to follow, even for beginners
- The instructors are knowledgeable and provide clear explanations
- The course provides ample opportunities for practice and application of concepts
- The course is updated regularly to reflect the latest trends and technologies in the field
Cons from User Reviews
- Some users found the course to be too theoretical and would have preferred more practical examples
- Some users felt that the course could have been more challenging, especially for those with prior experience in parallelism
- The course requires a significant time commitment, which may not be feasible for everyone
- Some users found the course to be somewhat repetitive, especially in the early modules
- The course may not be suitable for those looking for a quick introduction to parallelism