
On this lecture we make a brief introduction to the course.
On this lesson we make our first contact to the world of Parallelism.
On this lesson we introduce tasks and study an example to express tasks.
On this lesson we study dependences between tasks.
On this lesson we study the Task Dependency Graph and the basic metrics we can compute.
On this lesson we introduce the concept of granularity in the world of parallelism.
We also study the two main task decompositions: coarse-grain and fine-grain.
On this lesson we study the task definition.
On this lesson, we study in deep the granularity that we can achieve and we explore
different task decompositions with the same algorithm.
On this lesson we study the concepts of speedup and efficiency.
We also introduce the scalability.
On this lesson we study the Amdahl's Law.
On this lesson we study the overhead sources.
We also learn that Amdahl's Law is only applied when we maintain the problem size fixed.
On this lesson we study the most common overheads.
We also see a first approach to model the data sharing overhead.
On this lesson we solve the point A of the problem 1 of the problems section on parallelism fundamentals.
On this lesson we solve the point B of the problem 1 of the problems section on parallelism fundamentals.
On this lesson we solve the point C of the problem 1 of the problems section on parallelism fundamentals.
On this lesson we solve the problem 2 of the problems section on parallelism fundamentals.
On this lesson we solve the point A of the problem 3 of the problems section on parallelism fundamentals.
On this lesson we solve the point B of the problem 3 of the problems section on parallelism fundamentals.
On this lesson we solve the point C of the problem 3 of the problems section on parallelism fundamentals.
On this lesson we solve the point A of the problem 4 of the problems section on parallelism fundamentals.
IMPORTANT: on the code, at the initialization part, the inner loop is for (k = i; k < N; k++)
This is something we update along the lesson, important to have in mind.
On this lesson we solve the point B of the problem 4 of the problems section on parallelism fundamentals.
On this lesson we solve the point C of the problem 4 of the problems section on parallelism fundamentals.
On this lesson we solve the point A of the problem 5 of the problems section on parallelism fundamentals.
On this lesson we solve the point B of the problem 5 of the problems section on parallelism fundamentals.
On this lesson we solve the point C of the problem 5 of the problems section on parallelism fundamentals.
On this lesson we study the task decomposition strategies in programming.
On this lesson, we deeply study the Recursive Task Decomposition. We distinguish between the tree strategy and the leaf strategy.
In this lesson we introduce the OpenMP interface.
On this lesson we introduce mechanisms to control number of tasks and/or their granularity.
We begin studying the control we can set in an Iterative Task Decomposition Strategy.
In this lesson we study the Recursive Task Control Generation with OpenMP.
Specifically, we study the Leaf Strategy.
In this lesson we study the Tree Strategy in OpenMP.
On this lesson we study the generation control mechanisms of recursive tasks with Tree Strategy.
We study the Depth Recursion Control using a cut-off mechanism.
On this lesson we study the atomic directive in OpenMP.
On this lesson we study the critical directive in OpenMP.
On this lesson we study the reduction clause in OpenMP.
On this lesson we study Locks in OpenMP.
On this lesson we study the taskwait and taskgroup clauses in OpenMP to represent Task Ordering.
On this lesson we study the task dependency clauses in OpenMP to represent Task Ordering.
On this lesson we explain how we can use the task dependency clause of OpenMP to compute
the wavefront. We also learn how to use the clause in a matrix.
On this lesson we solve the point A of the problem 1 of the problems section on OpenMP.
On this lesson we solve the point B of the problem 1 of the problems section on OpenMP.
On this lesson we solve the point A of the problem 2 of the problems section on OpenMP.
On this lesson we solve the point B of the problem 2 of the problems section on OpenMP.
On this lesson we solve the point C of the problem 2 of the problems section on OpenMP.
On this lesson we solve the problem 3 of the problems section on OpenMP.
On this lesson we solve the problem 4 of the problems section on OpenMP.
On this lesson we solve the point A of the problem 5 of the problems section on OpenMP.
On this lesson we solve the point B of the problem 5 of the problems section on OpenMP.
On this lesson we solve the point A of the problem 6 of the problems section on OpenMP.
On this lesson we solve the point B of the problem 6 of the problems section on OpenMP.
On this lecture we make a brief introduction to MPI.
On this lecture we see how we can we can install MPI.
On this lecture we create our first MPI program.
On this lecture we study sending and receiving operations in MPI.
On this lecture we study aspects of blocking operations in MPI.
On this lecture we study collective operations in MPI and implement a practical example.
On this lecture we study the Gather and Scatter Operations in MPI.
On this lecture we solve a problem in which we need to use the functions MPI_Scatter and MPI_Gather.
On this lecture we introduce the collective communication function MPI_Allgather.
On this lecture we solve the Parallel Maximum Element Search problem using the function MPI_Allgather.
On this lecture we list the possible operations of MPI_Reduce.
You’ve just stumbled upon the most complete, in-depth Parallelism programming course online.
Whether you want to:
- build the skills you need to get your first computer science programming job
- move to a more senior software developer position
- become a computer scientist mastering in parallel programming
- or just learn Parallelism to be able to create your own parallel applications quickly.
...this complete Parallelism and Concurrency Masterclass is the course you need to do all of this, and more.
This course is designed to give you the Parallelism skills you need to become an expert developer on parallel applications. By the end of the course, you will understand Parallelism extremely well and be able to build your own Parallel apps and be productive as a computer scientist and software developer.
What makes this course a bestseller?
Like you, thousands of others were frustrated and fed up with fragmented Youtube tutorials or incomplete or outdated courses which assume you already know a bunch of stuff, as well as thick, college-like textbooks able to send even the most caffeine-fuelled coder to sleep.
Like you, they were tired of low-quality lessons, poorly explained topics, and confusing info presented in the wrong way. That’s why so many find success in this complete Parallel Programming developer course. It’s designed with simplicity and seamless progression in mind through its content.
This course assumes no previous coding experience and takes you from absolute beginner core concepts. You will learn the core Parallelism skills and master parallalel programming. It's a one-stop shop to learn Parallelism and Concurrency. If you want to go beyond the core content you can do so at any time.
Here’s just some of what you’ll learn
(It’s okay if you don’t understand all this yet, you will in the course)
Designing and Analysis of Parallel Applications
Tasks and Task Dependency Graph
Parallel Architectures
Basic metrics: parallelism, execution time, speedup and scalability
Programming with Shared Memory: OpenMP
Synchronization mechanisms between tasks and threads
Static/Dynamic Work Distribution
Granularity
Task Decomposition vs Data Decomposition
Parallelism Patterns: Iterative vs Divide and Conquer Task Decompositions
Data Decomposition (Geometric Decomposition vs Recursive Structures) for Architectures with Shared Memory
What if I have questions?
As if this course wasn’t complete enough, I offer full support, answering any questions you have 7 days a week.
This means you’ll never find yourself stuck on one lesson for days on end. With my hand-holding guidance, you’ll progress smoothly through this course without any major roadblocks.
There’s no risk either!
This course comes with a full 30-day money-back guarantee. Meaning if you are not completely satisfied with the course or your progress, simply let me know and I’ll refund you 100%, every last penny no questions asked.
You either end up with Parallelism skills, go on to develop great programs and potentially make an awesome career for yourself, or you try the course and simply get all your money back if you don’t like it…
You literally can’t lose.
Ready to get started, developer?
Enroll now using the “Add to Cart” button on the right, and get started on your way to creative, advanced Parallel Programming brilliance. Or, take this course for a free spin using the preview feature, so you know you’re 100% certain this course is for you.
See you on the inside (hurry, OpenMP is waiting!)