Syl

- Parallel machines
- Basic concepts of parallel programs
- Partial orders as basic parallel programs
- Time diagrams
- Execution times of parallel programs
- Moving to a general parallel programming language
- Developing practical parallel algorithms
- Some basic properties of efficient parallel algorithms
- Reducing synchronization in practical parallel algorithms
- Some general methods for implementing the scalability of parallel algorithms
- Principles of Shared Memory Parallel Programming Using ParC
- System Structure
- Parallel Constructs
- Scoping Rules
- Static declarations
- Bypassing the scoping rules
- Parallel algorithms for finding the minimum: Divide and conquer min, Crash min, Random min, Divide and Crush, Asynchronous min
- Recursion and parallel loops: The parallel prefix example
- Minimum spanning tree
- Locality and Synchronization
- Locality of memory operations through partitioned arrays
- Synchronization through shared variables
- Fetch and add synchronization
- The sync instruction
- Controlling the execution by using the yield and switch instructions
- Fairness related issues
- Forced Termination
- Multicores machines
- The MESI protocol for memory cohernce in multicores machines
- The MESI protocol preservs Sequential Consistency
- The MOESI extension
- Optimizing over multicore machines
- Improving Performances of Parallel Programs: The Analytical Approach
- Speedup Notion for Programs and Using the speedup factors
- Optimizing speedup factors: Amdhal Law, Scheduling, Two processors machine, Sync based exercises.