ABSTRACTING THE IDEA OF HARDWARE (SIMD) PARALLELISM
Professor Ken Birman CS4414 Lecture 8
CORNELL CS4414 - FALL 2020. 1
ABSTRACTING THE IDEA OF Professor Ken Birman HARDWARE (SIMD) - - PowerPoint PPT Presentation
ABSTRACTING THE IDEA OF Professor Ken Birman HARDWARE (SIMD) PARALLELISM CS4414 Lecture 8 CORNELL CS4414 - FALL 2020. 1 IDEA MAP FOR TODAY Understanding the parallelism inherent in There is a disadvantage to this, too. If we an application
Professor Ken Birman CS4414 Lecture 8
CORNELL CS4414 - FALL 2020. 1
CORNELL CS4414 - FALL 2020. 2
Understanding the parallelism inherent in an application can help us achieve high performance with less effort. Ideally, by “aligning” the way we express our code or solution with the way Linux and the C++ compiler discover parallelism, we obtain a great solution There is a disadvantage to this, too. If we write code knowing how that some version of the C++ compiler or the O/S will “discover” some opportunity for parallelism, that guarantee could erode over time. This tension between what we explicitly express and what we “implicitly” require is universal in computing, although people are not always aware of it
CORNELL CS4414 - FALL 2020. 3
CORNELL CS4414 - FALL 2020. 4
CORNELL CS4414 - FALL 2020. 5
CORNELL CS4414 - FALL 2020. 6
CORNELL CS4414 - FALL 2020. 7
Photo on disk: It spans many blocks of the
processing blocks already in memory? Block in the buffer pool was just read by the application. Next block is being prefetched… previously read blocks are cached, for a while The application has multiple threads and they are processing different blocks. The blocks themselves are arrays of pixels O/S kernel Storage device Application
CORNELL CS4414 - FALL 2020. 8
CORNELL CS4414 - FALL 2020. 9
CORNELL CS4414 - FALL 2020. 10
CORNELL CS4414 - FALL 2020. 11
CORNELL CS4414 - FALL 2020. 12
Thread A Thread B
node_count++ movq node_count,%rax inc %rax movq %rax,node_count node_count++ movq node_count,%rdx inc %rdx movq %rdx,node_count
CORNELL CS4414 - FALL 2020. 13
CORNELL CS4414 - FALL 2020. 14
CORNELL CS4414 - FALL 2020. 15
CORNELL CS4414 - FALL 2020. 16
CORNELL CS4414 - FALL 2020. 17
CORNELL CS4414 - FALL 2020. 18
X = Y*3;
CORNELL CS4414 - FALL 2020. 19
Rotate 3-D
CORNELL CS4414 - FALL 2020. 20
Rotate 3-D
CORNELL CS4414 - FALL 2020. 21
CORNELL CS4414 - FALL 2020. 22
CORNELL CS4414 - FALL 2020. 23
CORNELL CS4414 - FALL 2020. 24
CORNELL CS4414 - FALL 2020. 25
CORNELL CS4414 - FALL 2020. 26
CORNELL CS4414 - FALL 2020. 27
CORNELL CS4414 - FALL 2020. 28
CORNELL CS4414 - FALL 2020. 29
Example 1: int a[256], b[256], c[256]; foo () { int i; for (i=0; i<256; i++){ a[i] = b[i] + c[i]; } } https://gcc.gnu.org/projects/tree-ssa/vectorization.html
CORNELL CS4414 - FALL 2020. 30
https://gcc.gnu.org/projects/tree-ssa/vectorization.html Example 2: int a[256], b[256], c[256]; foo (int n, int x) { int i; /* feature: support for unknown loop bound */ /* feature: support for loop invariants */ for (i=0; i<n; i++) b[i] = x; } /* feature: general loop exit condition */ /* feature: support for bitwise operations */ while (n- -){ a[i] = b[i]&c[i]; i++; } }
CORNELL CS4414 - FALL 2020. 31
https://gcc.gnu.org/projects/tree-ssa/vectorization.html Example 8: int a[M][N]; foo (int x) { int i,j; /* feature: support for multidimensional arrays */ for (i=0; i<M; i++) { for (j=0; j<N; j++) { a[i][j] = x; } } }
CORNELL CS4414 - FALL 2020. 32
https://gcc.gnu.org/projects/tree-ssa/vectorization.html Example 9: unsigned int ub[N], uc[N]; foo () { int i; /* feature: support summation reduction. note: in case of floats use -funsafe-math-optimizations */ unsigned int diff = 0; for (i = 0; i < N; i++) { udiff += (ub[i] - uc[i]); }
CORNELL CS4414 - FALL 2020. 33
CORNELL CS4414 - FALL 2020. 34
CORNELL CS4414 - FALL 2020. 35
CORNELL CS4414 - FALL 2020. 36
CORNELL CS4414 - FALL 2020. 37
CORNELL CS4414 - FALL 2020. 38
CORNELL CS4414 - FALL 2020. 39
CORNELL CS4414 - FALL 2020. 40
CORNELL CS4414 - FALL 2020. 41
CORNELL CS4414 - FALL 2020. 42
CORNELL CS4414 - FALL 2020. 43
CORNELL CS4414 - FALL 2020. 44
CORNELL CS4414 - FALL 2020. 45
CORNELL CS4414 - FALL 2020. 46
An earlier “new age”
CORNELL CS4414 - FALL 2020. 47
CORNELL CS4414 - FALL 2020. 48
CORNELL CS4414 - FALL 2020. 49
CORNELL CS4414 - FALL 2020. 50
CORNELL CS4414 - FALL 2020. 51
CORNELL CS4414 - FALL 2020. 52
CORNELL CS4414 - FALL 2020. 53