User Tools

Site Tools


skill-tree:sd:1:2:2:b

SD1.2.2 Shared Memory Systems

The parallel concepts of threads and processes are introduced and their impacts on performance are outlined.

Learning objectives

  • Detect race conditions and use synchronization mechanisms to avoid them.
  • Estimate the problems that may result from erroneous use of synchronization mechanisms (e.g. deadlocks).
  • Assess data dependency situations, i.e. an instruction reading the data written by a preceding instruction in the source code, and anti dependencies, i.e. an instruction having to read data before a succeeding instruction overwrites it, and output dependencies, i.e. instructions writing to the same memory location.
  • Use data parallelism, e.g. applying parallel streams of identical instructions to different elements of appropriate data structures such as arrays.
  • Apply the concept of functional parallelism, i.e. executing a set of distinct functions possibly using the same data.
  • Assess the applicability of parallel language extensions like OpenMP.
  • Assess concepts like software pipelining, e.g. to optimize loops by out-of-order execution.
  • Assess the applicability of parallel language extensions like CUDA as well as their interoperability (e.g. combining OpenACC and CUDA).
  • Assess parallel concepts typically used for shared memory systems, e.g. to exploit temporal locality by data reuse with efficient utilization of the memory hierarchy.
  • Assess concepts like software pipelining and vectorization principles.
  • Assess the influence of control dependencies by jumps, branches, and function calls, e.g. on pipeline filling.
  • Assess the applicability of parallel language extensions like OpenACC, and C++ AMP.
  • Understand Single Instruction Multiple Data (SIMD)
  • Understand Synchronization
  • Understand Memory Hierarchy and Data Reuse
  • Understand Software Pipelining
  • Understand Dependency Pattern and remember
    • Data Dependencies
    • Control Dependencies
  • Understand Language Extensions and remember
    • Processes
    • CUDA
    • OpenACC
    • Threading with OpenMP and Pthreads
    • C++ AMP
    • Vectorization

Subskills

skill-tree/sd/1/2/2/b.txt · Last modified: 2024/09/11 12:30 by 127.0.0.1