Shared Memory Programming
What is the processor speed of the shannon board
1.25
How many cores does the shannon have
8 CorePac
What are two types of parallelism
Data and Task parallelism
How do you get parallelism in software
Dceompose the program into into independent pieces
What are the two perspectives in eclipse
Debug and C/C++
What cannot be Parallelized?
Dependent computations However in some cases they can be, with mutexes on critical regions, at the expense of performance.
Describe the memory wall
Growing disparity between memory access times and CPU speed Cache size increases show diminishing returns
Problems with vector computers
High overhead in setting up pipeline, so only worthwhile if there is long chain of operands
What can be Parallelized?
Independent computations
Simultaneous Multithreading
Make better use of on-chip functional units by allowing multiple instruction streams While one thread (instruction stream) is waiting, another thread may continue to work
Why Does Shared Memory Programming Matter?
Multicore computers need shared memory parallel programming All sectors are moving in the same direction: General purpose marketplace and embedded systems are based on multiple cores
MCSDK
Multicore software development kit
NUMA
Non uniform memory access
Two language standards for parallel programming
Pthread (explicit) OpenMP implicit
Two steps in a configureation file
Selct eh connection (emulator or simulator) select gel file
What is a vector super computer
Single CPU but instructions are pipelined
SIMD:
Single Instruction Multiple Data. It describes computers with multiple processing elements that perform the same operation on multiple data points simultaneously
True Dependece
Statement S1, S2 S2 had true dependence of S1 iff S2 reads a value written by S1
Anti Dependence
Statement S1, S2 S2 had true dependence of S1 iff S2 writes a value written by S1
Output dependence
Statements S1, S2. S2 has an output dependence on S1 iff S2 writes a variable written by S1
Simple design of shared memory architecture provides for what?
Straightforward design provides uniform memory access and cache coherency
What is Parallelism?
The ability to execute different parts of a program concurrently Time-slicing is a kind of pseudo-parallelism (e.g. Java)
Granularity
The size of parallel pieces executed concurently.
What is the FUNDAMENTAL assumption about parallelism?
Threads execute independently on their assigned resources: no control over order of execution of instructions between threads unless specified using special programming constructs
What has Parallelism Been Used For?
To execute large or critical programs (much) faster To execute programs with very large data sets To handle many queries simultaneously
Why was parallelism introduced
To model more complext data. ie model a complete 3 system of a car crash. Model drung interactions.... etc.
what are threads
a set of resources capable of supporting execution of an instruction stream.
What does the performance of prallel applications depend on?
architectural features of parallel system, including processors and memory hierarchy, programming language and model of parallelism parallelization must be matched to the architecture.
What is a feature of the cache Memory on the shannon board
can be partitions as memory or cache
Data Parallelism
chop up data adn give each thread a portion of data
Task Parallelim
chop up work, give each thread a portion of work.
what is one of the most important tasks for the application developer
identifying dependencies.
How to determined if something can be executed in pararally
if the left side of the equation relies on data that is computed in the previous or subsequent iteration. Of if the same dat is set to two different values.
Simultaneous multithreading:
one core (CPU) executes instructions from two or more threads, or instruction streams
Describe threads in terms of SMP's
several threads in same process share the same memory
SMP
symmetric multiprocessor or shared memory parallel system