Parallel Spectral Methods Fast Fourier Transform FFT with

  • Slides: 81
Download presentation
Parallel Spectral Methods: Fast Fourier Transform (FFT) with Applications James Demmel www. cs. berkeley.

Parallel Spectral Methods: Fast Fourier Transform (FFT) with Applications James Demmel www. cs. berkeley. edu/~demmel/cs 267_Spr 15

Motifs The Motifs (formerly “Dwarfs”) from “The Berkeley View” (Asanovic et al. ) Motifs

Motifs The Motifs (formerly “Dwarfs”) from “The Berkeley View” (Asanovic et al. ) Motifs form key computational patterns Topic of this lecture 04/17/2012 CS 267 Lecture 2 25 2

Ouline and References ° Outline • • • Definitions A few applications of FFTs

Ouline and References ° Outline • • • Definitions A few applications of FFTs Sequential algorithm Parallel 1 D FFT Parallel 3 D FFT Autotuning FFTs: FFTW and Spiral projects ° References • • • Previous CS 267 lectures FFTW project: http: //www. fftw. org Spiral project: http: //www. spiral. net Log. P: UCB EECS Tech Report UCB/CSD-92 -713 Lecture by Geoffrey Fox: http: //grids. ucs. indiana. edu/ptliupages/presentations/PC 2007/cps 615 fft 00. ppt 04/14/2015 CS 267 Lecture 23 3

Definition of Discrete Fourier Transform (DFT) ° Let i=sqrt(-1) and index matrices and vectors

Definition of Discrete Fourier Transform (DFT) ° Let i=sqrt(-1) and index matrices and vectors from 0. ° The (1 D) DFT of an m-element vector v is: F*v where F is an m-by-m matrix defined as: F[j, k] = v (j*k), 0 ≤ j, k ≤ m-1 and where v is: v = e (2 i/m) = cos(2 /m) + i*sin(2 /m) ° v is a complex number with whose mth power vm =1 and is therefore called an mth root of unity ° E. g. , for m = 4: v = i, v 2 = -1, v 3 = -i, v 4 = 1 ° The 2 D DFT of an m-by-m matrix V is F*V*F • Do 1 D DFT on all the columns independently, then all the rows ° Higher dimensional DFTs are analogous 4

Motivation for Fast Fourier Transform (FFT) ° Signal processing ° Image processing ° Solving

Motivation for Fast Fourier Transform (FFT) ° Signal processing ° Image processing ° Solving Poisson’s Equation nearly optimally • O(N log N) arithmetic operations, N = #unknowns • Competitive with multigrid ° Fast multiplication of large integers °… 04/14/2015 CS 267 Lecture 23 5

Using the 1 D FFT for filtering ° Signal = sin(7 t) +. 5

Using the 1 D FFT for filtering ° Signal = sin(7 t) +. 5 sin(5 t) at 128 points ° Noise = random number bounded by. 75 ° Filter by zeroing out FFT components <. 25 CS 267 Lecture 25 6

Using the 2 D FFT for image compression ° Image = 200 x 320

Using the 2 D FFT for image compression ° Image = 200 x 320 matrix of values ° Compress by keeping largest 2. 5% of FFT components ° Similar idea used by jpeg 04/14/2015 CS 267 Lecture 23 7

Recall: Poisson’s equation arises in many models 3 D: 2 u/ x 2 +

Recall: Poisson’s equation arises in many models 3 D: 2 u/ x 2 + 2 u/ y 2 + 2 u/ z 2 = f(x, y, z) 2 D: 2 u/ x 2 + 2 u/ y 2 = f(x, y) 1 D: d 2 u/dx 2 = f(x) f represents the sources; also need boundary conditions ° Electrostatic or Gravitational Potential: Potential(position) ° Heat flow: Temperature(position, time) ° Diffusion: Concentration(position, time) ° Fluid flow: Velocity, Pressure, Density(position, time) ° Elasticity: Stress, Strain(position, time) ° Variations of Poisson have variable coefficients 04/14/2015 CS 267 Lecture 23 8

Solving Poisson Equation with FFT (1/2) ° 1 D Poisson equation: solve L 1

Solving Poisson Equation with FFT (1/2) ° 1 D Poisson equation: solve L 1 x = b where 2 -1 -1 2 L 1 = Graph and “stencil” -1 2 -1 ° 2 D Poisson equation: solve L 2 x = b where 4 -1 -1 4 -1 L 2= Graph and “ 5 point stencil” -1 -1 -1 4 -1 -1 -1 4 -1 -1 4 3 D case is analogous (7 point stencil) 9

Solving 2 D Poisson Equation with FFT (2/2) ° Use facts that • L

Solving 2 D Poisson Equation with FFT (2/2) ° Use facts that • L 1 = F · D · FT is eigenvalue/eigenvector decomposition, where - F is very similar to FFT (imaginary part) – F(j, k) = (2/(n+1))1/2 · sin(j k /(n+1)) - D = diagonal matrix of eigenvalues – D(j, j) = 2(1 – cos(j / (n+1)) ) • 2 D Poisson same as solving L 1 · X + X · L 1 = B where - X square matrix of unknowns at each grid point, B square too ° Substitute L 1 = F · D · FT into 2 D Poisson to get algorithm • Perform 2 D “FFT” on B to get B’ = FT ·B · F, or B = F ·B’ · FT Get FDFTX+XFDFT=FB’FT or F[D(FTXF)+(FTXF)D]FT = F[B’]FT or DX’+X’D=B’ 2. Solve D X’ + X’ D = B’ for X’: X’(j, k) = B’(j, k)/ (D(j, j) + D(k, k)) 3. Perform inverse 2 D “FFT” on X’= FT·X·F to get X = F·X’·FT ° Cost = 2 2 D-FFTs plus n 2 adds, divisions = O(n 2 log n) ° 3 D Poisson analogous 04/14/2015 10 CS 267 Lecture 23

Algorithms for 2 D (3 D) Poisson Equation (N = n 2 (n 3)

Algorithms for 2 D (3 D) Poisson Equation (N = n 2 (n 3) vars) Algorithm Serial PRAM Memory #Procs ° Dense LU N 3 N N 2 ° Band LU N 2 (N 7/3) N N 3/2 (N 5/3) N (N 4/3) ° Jacobi N 2 (N 5/3) N (N 2/3) N N ° Explicit Inv. N 2 log N N 2 ° Conj. Gradients N 3/2 (N 4/3) N 1/2(1/3) *log N N N ° Red/Black SOR N 3/2 (N 4/3) N 1/2 (N 1/3) N N ° Sparse LU N 3/2 (N 2) N 1/2 N*log N (N 4/3) N ° FFT N*log N N N ° Multigrid N log 2 N N N log N N ° Lower bound N PRAM is an idealized parallel model with zero cost communication Reference: James Demmel, Applied Numerical Linear Algebra, SIAM, 1997. 04/14/2015 CS 267 Lecture 23 11

Related Transforms ° Most applications require multiplication by both F and F -1 •

Related Transforms ° Most applications require multiplication by both F and F -1 • F(j, k) = exp(2 ijk/m) ° Multiplying by F and F-1 are essentially the same. • F-1 = complex_conjugate(F) / m ° For solving the Poisson equation and various other applications, we use variations on the FFT • The sin transform -- imaginary part of F • The cos transform -- real part of F ° Algorithms are similar, so we will focus on F 04/14/2015 CS 267 Lecture 23 12

Serial Algorithm for the FFT ° Compute the FFT (F*v) of an m-element vector

Serial Algorithm for the FFT ° Compute the FFT (F*v) of an m-element vector v m-1 (F*v)[j] = S k = 0 F(j, k) * v(k) m-1 = S k = 0 v (j*k) * v(k) m-1 = S k = 0 (v j)k * v(k) = V(v j) where V is defined as the polynomial m-1 V(x) = S k = 0 xk * v(k) 04/14/2015 CS 267 Lecture 23 13

Divide and Conquer FFT ° V can be evaluated using divide-and-conquer m-1 V(x) =

Divide and Conquer FFT ° V can be evaluated using divide-and-conquer m-1 V(x) = S k = 0 xk * v(k) = v[0] + x 2*v[2] + x 4*v[4] + … + x*(v[1] + x 2*v[3] + x 4*v[5] + … ) = Veven(x 2) + x*Vodd(x 2) ° V has degree m-1, so Veven and Vodd are polynomials of degree m/2 -1 ° We evaluate these at m points: (v j)2 for 0 ≤ j ≤ m-1 ° But this is really just m/2 different points, since (v (j+m/2) )2 = (v j *v m/2 )2 = v 2 j *v m = (v j)2 ° So FFT on m points reduced to 2 FFTs on m/2 points • Divide and conquer! 04/14/2015 CS 267 Lecture 23 14

Divide-and-Conquer FFT (D&C FFT) FFT(v, v, m) … assume m is a power of

Divide-and-Conquer FFT (D&C FFT) FFT(v, v, m) … assume m is a power of 2 if m = 1 return v[0] else veven = FFT(v[0: 2: m-2], v 2, m/2) vodd = FFT(v[1: 2: m-1], v 2, m/2) precomputed v-vec = [v 0, v 1, … v (m/2 -1) ] return [veven + (v-vec. * vodd), veven - (v-vec. * vodd) ] ° Matlab notation: “. *” means component-wise multiply. Cost: T(m) = 2 T(m/2)+O(m) = O(m log m) operations. 04/14/2015 CS 267 Lecture 23 15

An Iterative Algorithm ° The call tree of the D&C FFT algorithm is a

An Iterative Algorithm ° The call tree of the D&C FFT algorithm is a complete binary tree of log m levels FFT(0, 1, 2, 3, …, 15) = FFT(xxxx) even odd FFT(0, 2, …, 14) = FFT(xxx 0) FFT(xx 00) FFT(xx 10) FFT(1, 3, …, 15) = FFT(xxx 1) FFT(xx 01) FFT(xx 11) FFT(x 000) FFT(x 100) FFT(x 010) FFT(x 110) FFT(x 001) FFT(x 101) FFT(x 011) FFT(x 111) FFT(0) FFT(8) FFT(4) FFT(12) FFT(10) FFT(6) FFT(14) FFT(1) FFT(9) FFT(5) FFT(13) FFT(11) FFT(7) FFT(15) ° An iterative algorithm that uses loops rather than recursion, does each level in the tree starting at the bottom • Algorithm overwrites v[i] by (F*v)[bitreverse(i)] ° Practical algorithms combine recursion (for memory hierarchy) and iteration (to avoid function call overhead) – more later 16

Parallel 1 D FFT Data dependencies in a 16 -point FFT ° Data dependencies

Parallel 1 D FFT Data dependencies in a 16 -point FFT ° Data dependencies in 1 D FFT • Butterfly pattern • From veven w. * vodd ° A PRAM algorithm takes O(log m) time • each step to right is parallel • there are log m steps ° What about communication cost? ° (See UCB EECS Tech report UCB/CSD-92 -713 for details, aka “Log. P paper”) 04/14/2015 CS 267 Lecture 23 17

Block Layout of 1 D FFT ° Using a block layout (m/p contiguous words

Block Layout of 1 D FFT ° Using a block layout (m/p contiguous words per processor) Block Data Layout of an m=16 -point FFT on p=4 Processors ° No communication in last log m/p steps ° Significant communication in first log p steps 04/14/2015 CS 267 Lecture 23 Communication Required log(p) steps No communication log(m/p) steps 18

Cyclic Layout of 1 D FFT Cyclic Data Layout of an m=16 -point FFT

Cyclic Layout of 1 D FFT Cyclic Data Layout of an m=16 -point FFT on p=4 Processors ° Cyclic layout (consecutive words map to consecutive processors) ° No communication in first log(m/p) steps ° Communication in last log(p) steps No communication log(m/p) steps 04/14/2015 CS 267 Lecture 23 Communication Required log(p) steps 19

Parallel Complexity ° m = vector size, p = number of processors ° f

Parallel Complexity ° m = vector size, p = number of processors ° f = time per flop = 1 ° a = latency for message ° b = time per word in a message ° Time(block_FFT) = Time(cyclic_FFT) = 2*m*log(m)/p … perfectly parallel flops + log(p) * a . . . 1 message/stage, log p stages + m*log(p)/p * b … m/p words/message 04/14/2015 CS 267 Lecture 25 20

FFT With “Transpose” ° If we start with a cyclic layout for first log(m/p)

FFT With “Transpose” ° If we start with a cyclic layout for first log(m/p) steps, there is no communication Transpose Algorithm for an m=16 -point FFT on p=4 Processors ° Then transpose the vector for last log(p) steps ° All communication is in the transpose ° Note: This example has log(m/p) = log(p) • If log(m/p) < log(p) more phases/layouts will be needed • We will assume log(m/p) ≥ log(p) for simplicity 04/14/2015 CS 267 Lecture 23 No communication log(m/p) steps Transpose No communication log(p) steps 21

Why is the Communication Step Called a Transpose? ° Analogous to transposing an array

Why is the Communication Step Called a Transpose? ° Analogous to transposing an array ° View as a 2 D array of m/p by p ° Note: same idea is useful for caches 04/14/2015 CS 267 Lecture 23 22

Parallel Complexity of the FFT with Transpose ° If no communication is pipelined (overestimate!)

Parallel Complexity of the FFT with Transpose ° If no communication is pipelined (overestimate!) ° Time(transpose. FFT) = 2*m*log(m)/p same as before + (p-1) * a was log(p) * a + m*(p-1)/p 2 * b was m* log(p)/p * b ° If communication is pipelined, so we do not pay for p -1 messages, the second term becomes simply a, rather than (p-1)a ° This is close to optimal. See Log. P paper for details. ° See also following papers • A. Sahai, “Hiding Communication Costs in Bandwidth Limited FFT” • R. Nishtala et al, “Optimizing bandwidth limited problems using onesided communication” 04/14/2015 CS 267 Lecture 23 23

Sequential Communication Complexity of the FFT ° How many words need to be moved

Sequential Communication Complexity of the FFT ° How many words need to be moved between main memory and cache of size M to do the FFT of size m, where m > M? ° Thm (Hong, Kung, 1981): #words = (m log m / log M) ° Proof follows from each word of data being reusable only log M times ° Attained by transpose algorithm ° Sequential algorithm “simulates” parallel algorithm ° Imagine we have P = m/M processors, so each processor stores and works on O(M) words ° Each local computation phase in parallel FFT replaced by similar phase working on cache resident data in sequential FFT ° Each communication phase in parallel FFT replaced by reading/writing data from/to cache in sequential FFT ° Attained by recursive, “cache-oblivious” algorithm (FFTW) 24

Parallel Communication Complexity of the FFT ° How many words need to be moved

Parallel Communication Complexity of the FFT ° How many words need to be moved between p processors to do the FFT of size m? ° Thm (Aggarwal, Chandra, Snir, 1990): #words = (m log m / (p log m/p)) ° Proof assumes no recomputation ° Holds independent of local memory size (which must exceed m/p) ° Does Transpose. FFT attain lower bound? ° Recall assumption: log (m/p) ≥ log(p) ° So 2 ≥ log(m) / log(m/p) ≥ 1 ° So #words = (m / p) ° Attained by transpose algorithm 25

Comment on the 1 D Parallel FFT ° The above algorithm leaves data in

Comment on the 1 D Parallel FFT ° The above algorithm leaves data in bit-reversed order • Some applications can use it this way, like Poisson • Others require another transpose-like operation ° Other parallel algorithms also exist • A very different 1 D FFT is due to Edelman - http: //www-math. mit. edu/~edelman • Based on the Fast Multipole algorithm • Less communication for non-bit-reversed algorithm • Approximates FFT 04/14/2015 CS 267 Lecture 23 26

Higher Dimensional FFTs ° FFTs on 2 or more dimensions are defined as 1

Higher Dimensional FFTs ° FFTs on 2 or more dimensions are defined as 1 D FFTs on vectors in all dimensions. • 2 D FFT does 1 D FFTs on all rows and then all columns ° There are 3 obvious possibilities for the 2 D FFT: • (1) 2 D blocked layout for matrix, using parallel 1 D FFTs for each row and column • (2) Block row layout for matrix, using serial 1 D FFTs on rows, followed by a transpose, then more serial 1 D FFTs • (3) Block row layout for matrix, using serial 1 D FFTs on rows, followed by parallel 1 D FFTs on columns • Option 2 is best, if we overlap communication and computation ° For a 3 D FFT the options are similar • 2 phases done with serial FFTs, followed by a transpose for 3 rd • can overlap communication with 2 nd phase in practice 04/14/2015 CS 267 Lecture 23 27

Bisection Bandwidth ° FFT requires one (or more) transpose operations: • Every processor sends

Bisection Bandwidth ° FFT requires one (or more) transpose operations: • Every processor sends 1/p-th of its data to each other one ° Bisection Bandwidth limits this performance • Bisection bandwidth is the bandwidth across the narrowest part of the network • Important in global transpose operations, all-to-all, etc. ° “Full bisection bandwidth” is expensive • • Fraction of machine cost in the network is increasing Fat-tree and full crossbar topologies may be too expensive Especially on machines with 100 K and more processors SMP clusters often limit bandwidth at the node level ° Goal: overlap communication and computation 04/14/2015 CS 267 Lecture 23 28

Modified Log. GP Model ° Log. GP: no overlap ° Log. GP: with overlap

Modified Log. GP Model ° Log. GP: no overlap ° Log. GP: with overlap P 0 osend g L orecv P 1 EEL: end to end latency (1/2 roundtrip) g: minimum time between small message sends G: gap per byte for larger messages 04/14/2015 CS 267 Lecture 23 29

Historical Perspective ½ round-trip latency • Potential performance advantage for fine-grained, one-sided programs •

Historical Perspective ½ round-trip latency • Potential performance advantage for fine-grained, one-sided programs • Potential productivity advantage for irregular applications 04/14/2015 CS 267 Lecture 23 30

General Observations ° “Overlap” means computing and communicating simultaneously, (or communication with other communication,

General Observations ° “Overlap” means computing and communicating simultaneously, (or communication with other communication, aka pipelining) ° Rest of slide about comm/comp overlap ° The overlap potential is the difference between the gap and overhead • No potential if CPU is tied up throughout message send - E. g. , no send-side DMA • Potential grows with message size for machines with DMA (per byte cost is handled by network, i. e. NIC) • Potential grows with amount of network congestion - Because gap grows as network becomes saturated ° Remote overhead is 0 for machine with RDMA ° Need good SW support to take advantage of this 04/14/2015 CS 267 Lecture 23 31

GASNet Communications System GASNet offers put/get communication ° One-sided: no remote CPU involvement required

GASNet Communications System GASNet offers put/get communication ° One-sided: no remote CPU involvement required in API (key difference with MPI) • Message contains remote address • No need to match with a receive • No implicit ordering required Compiler-generated code ° Used in language runtimes (UPC, etc. ) ° Fine-grained and bulk transfers Language-specific runtime GASNet ° Split-phase communication Network Hardware 04/14/2015 CS 267 Lecture 23 32

Performance of 1 -Sided vs 2 -sided Communication: GASNet vs MPI ° Comparison on

Performance of 1 -Sided vs 2 -sided Communication: GASNet vs MPI ° Comparison on Opteron/Infini. Band – GASNet’s vapi-conduit and OSU MPI 0. 9. 5 ° Up to large message size (> 256 Kb), GASNet provides up to 2. 2 X improvement in streaming bandwidth ° Half power point (N/2) differs by one order of magnitude 04/20/2013 CS 267 Lecture 23 33

(up is good) GASNet: Performance for mid-range message sizes GASNet usually reaches saturation bandwidth

(up is good) GASNet: Performance for mid-range message sizes GASNet usually reaches saturation bandwidth before MPI - fewer costs to amortize Usually outperforms MPI at medium message sizes - often by a large margin 04/14/2015 CS 267 Lecture 23 34

NAS FT Benchmark Case Study ° Performance of Exchange (All-to-all) is critical • Communication

NAS FT Benchmark Case Study ° Performance of Exchange (All-to-all) is critical • Communication to computation ratio increases with faster, more optimized 1 -D FFTs (used best available, from FFTW) • Determined by available bisection bandwidth • Between 30 -40% of the application’s total runtime ° Assumptions • 1 D partition of 3 D grid • At most N processors for N^3 grid • HPC Challenge benchmark has large 1 D FFT (can be viewed as 3 D or more with proper roots of unity) ° Reference for details • “Optimizing Bandwidth Limited Problems Using One-side Communication and Overlap”, C. Bell, D. Bonachea, R. Nishtala, K. Yelick, IPDPS’ 06 (www. eecs. berkeley. edu/~rajashn) • Started as CS 267 project 04/14/2015 CS 267 Lecture 23 35

Performing a 3 D FFT (1/3) ° NX x NY x NZ elements spread

Performing a 3 D FFT (1/3) ° NX x NY x NZ elements spread across P processors ° Will Use 1 -Dimensional Layout in Z dimension • Each processor gets NZ / P “planes” of NX x NY elements per plane Example: P = 4 NZ NZ/P 1 D Partition NX p 3 p 2 NY Source: R. Nishtala, C. Bell, D. Bonachea, K. Yelick p 1 p 0 36

Performing a 3 D FFT (2/3) ° Perform an FFT in all three dimensions

Performing a 3 D FFT (2/3) ° Perform an FFT in all three dimensions ° With 1 D layout, 2 out of the 3 dimensions are local while the last Z dimension is distributed Step 1: FFTs on the columns (all elements local) Step 2: FFTs on the rows (all elements local) Step 3: FFTs in the Z-dimension (requires communication) Source: R. Nishtala, C. Bell, D. Bonachea, K. Yelick 37

Performing the 3 D FFT (3/3) ° Can perform Steps 1 and 2 since

Performing the 3 D FFT (3/3) ° Can perform Steps 1 and 2 since all the data is available without communication ° Perform a Global Transpose of the cube • Allows step 3 to continue Transpose Source: R. Nishtala, C. Bell, D. Bonachea, K. Yelick 38

The Transpose ° ° Each processor has to scatter input domain to other processors

The Transpose ° ° Each processor has to scatter input domain to other processors • Every processor divides its portion of the domain into P pieces • Send each of the P pieces to a different processor Three different ways to break it up the messages 1. Packed Slabs (i. e. single packed “All-to-all” in MPI parlance) 2. Slabs 3. Pencils Going from approach Packed Slabs to Pencils leads to • An order of magnitude increase in the number of messages • An order of magnitude decrease in the size of each message Why do this? Slabs and Pencils allow overlapping communication and computation and leverage RDMA support in modern networks Source: R. Nishtala, C. Bell, D. Bonachea, K. Yelick 39

Algorithm 1: Packed Slabs Example with P=4, NX=NY=NZ=16 put to proc 0 1. Perform

Algorithm 1: Packed Slabs Example with P=4, NX=NY=NZ=16 put to proc 0 1. Perform all row and column FFTs put to proc 1 2. Perform local transpose • data destined to a remote processor are grouped together put to proc 2 3. Perform P puts of the data put to proc 3 Local transpose • For 5123 grid across 64 processors – Send 64 -1 messages of 512 k. B each Source: R. Nishtala, C. Bell, D. Bonachea, K. Yelick

Bandwidth Utilization ° NAS FT (Class D) with 256 processors on Opteron/Infini. Band •

Bandwidth Utilization ° NAS FT (Class D) with 256 processors on Opteron/Infini. Band • Each processor sends 256 messages of 512 k. Bytes • Global Transpose (i. e. all to all exchange) only achieves 67% of peak point-to-point bidirectional bandwidth • Many factors could cause this slowdown - Network contention - Number of processors with which each processor communicates ° Can we do better? Source: R. Nishtala, C. Bell, D. Bonachea, K. Yelick

Algorithm 2: Slabs ° Waiting to send all data in one phase bunches up

Algorithm 2: Slabs ° Waiting to send all data in one phase bunches up communication events ° Algorithm Sketch plane 0 • for each of the NZ/P planes - Perform all column FFTs - for each of the P “slabs” put to proc 0 put to proc 1 (a slab is NX/P rows) put to proc 2 – Perform FFTs on the rows in the slab – Initiate 1 -sided put of the slab put to proc 3 • Wait for all puts to finish • Barrier ° Non-blocking RDMA puts allow data movement to be overlapped with computation. ° Puts are spaced apart by the amount of time to perform FFTs on NX/P rows Source: R. Nishtala, C. Bell, D. Bonachea, K. Yelick Start computation for next plane • For 5123 grid across 64 processors – Send 512 -8 messages of 64 k. B each

Algorithm 3: Pencils ° Further reduce the granularity of communication • Send a row

Algorithm 3: Pencils ° Further reduce the granularity of communication • Send a row (pencil) as soon as it is ready plane 0 0 0 1 1 2 2 3 3 ° Algorithm Sketch • For each of the NZ/P planes - Perform all 16 column FFTs - For r=0; r<NX/P; r++ – For each slab s in the plane • Perform FFT on row r of slab s • Initiate 1 -sided put of row r • Wait for all puts to finish Start computation for next plane • Barrier ° Large increase in message count ° Communication events finely diffused through computation • Maximum amount of overlap • Communication starts early • For 5123 grid across 64 processors – Send 4096 -64 messages of 8 k. B each Source: R. Nishtala, C. Bell, D. Bonachea, K. Yelick

Communication Requirements ° 5123 across 64 processors With Slabs GASNet is slightly faster than

Communication Requirements ° 5123 across 64 processors With Slabs GASNet is slightly faster than MPI • Alg 1: Packed Slabs - Send 64 messages of 512 k. B • Alg 2: Slabs - Send 512 messages of 64 k. B • Alg 3: Pencils� - Send 4096 messages of 8 k. B GASNet achieves close to peak bandwidth with Pencils but MPI is about 50% less With the message sizes in Packed Slabs both efficient at 8 k More overlap possible with 8 k messages comm systems reach the same peak bandwidth Source: R. Nishtala, C. Bell, D. Bonachea, K. Yelick

Platforms Name Processor Network Software Opteron/Infiniband “Jacquard” @ NERSC Dual 2. 2 GHz Opteron

Platforms Name Processor Network Software Opteron/Infiniband “Jacquard” @ NERSC Dual 2. 2 GHz Opteron (320 nodes @ 4 GB/node) Mellanox Cougar Infini. Band 4 x HCA Linux 2. 6. 5, Mellanox VAPI, MVAPICH 0. 9. 5, Pathscale CC/F 77 2. 0 Alpha/Elan 3 “Lemieux” @ PSC Quad 1 GHz Alpha 21264 (750 nodes @ 4 GB/node) Quadrics Qs. Net 1 Elan 3 /w dual rail (one rail used) Tru 64 v 5. 1, Elan 3 libelan 1. 4. 20, Compaq C V 6. 5 -303, HP Fortra Compiler X 5. 5 A-408548 E 1 K Itanium 2/Elan 4 “Thunder” @ LLNL Quad 1. 4 Ghz Itanium 2 (1024 nodes @ 8 GB/node) Quadrics Qs. Net 2 Elan 4 Linux 2. 4. 21 -chaos, Elan 4 libelan 1. 8. 14, Intel ifort 8. 1. 025, icc 8. 1. 029 P 4/Myrinet “FSN” @ UC Berkeley Millennium Cluster Dual 3. 0 Ghz Pentium 4 Xeon (64 nodes @ 3 GB/node) Myricom Myrinet 2000 M 3 S-PCI 64 B Linux 2. 6. 13, GM 2. 0. 19, Intel ifort 8. 120050207 Z, icc 8. 120050207 Z Source: R. Nishtala, C. Bell, D. Bonachea, K. Yelick 45

Comparison of Algorithms ° Compare 3 algorithms against original NAS FT • All versions

Comparison of Algorithms ° Compare 3 algorithms against original NAS FT • All versions including Fortran use FFTW for local 1 D FFTs • Largest class that fit in the memory (usually class D) • One-sided semantics allow even exchange based implementations to improve over MPI implementations • Overlap algorithms spread the messages out, easing the bottlenecks • ~1. 9 x speedup in the best case Source: R. Nishtala, C. Bell, D. Bonachea, K. Yelick up is good ° All UPC flavors outperform original Fortran/MPI implantation by at least 20%

Time Spent in Communication 28. 6 ° Implemented the 3 algorithms in MPI using

Time Spent in Communication 28. 6 ° Implemented the 3 algorithms in MPI using Irecvs and Isends ° Compare time spent initiating or waiting for communication to finish down is good 34. 1 MPI Crash (Pencils) 312. 8 • UPC consistently spends less time in communication than its MPI counterpart • MPI unable to handle pencils algorithm in some cases Source: R. Nishtala, C. Bell, D. Bonachea, K. Yelick

Performance Summary up is good Source: R. Nishtala, C. Bell, D. Bonachea, K. Yelick

Performance Summary up is good Source: R. Nishtala, C. Bell, D. Bonachea, K. Yelick 48

FFT Performance on Blue. Gene/P • • PGAS implementations consistently outperform MPI Leveraging communication/computation

FFT Performance on Blue. Gene/P • • PGAS implementations consistently outperform MPI Leveraging communication/computation overlap yields best performance • More collectives in flight and more communication leads to better performance • At 32 k cores, overlap algorithms yield 17% improvement in overall application time Numbers are getting close to HPC record • Future work to try to beat the record 04/14/2015 HPC Challenge Peak as of July 09 is ~4. 5 Tflops on 128 k Cores 3500 Slabs (Collective) Packed Slabs (Collective) MPI Packed Slabs 3000 2500 GFlops • 2000 1500 1000 500 0 256 512 1024 2048 4096 8192 16384 Num. of Cores CS 267 Lecture 23 49 32768

FFT Performance on Cray XT 4 (Franklin) ° 1024 Cores of the Cray XT

FFT Performance on Cray XT 4 (Franklin) ° 1024 Cores of the Cray XT 4 • Uses FFTW for local FFTs • Larger the problem size the more effective the overlap 50 04/14/2015

FFTW – Fastest Fourier Transform in the West ° www. fftw. org ° Produces

FFTW – Fastest Fourier Transform in the West ° www. fftw. org ° Produces FFT implementation optimized for • • Your version of FFT (complex, real, …) Your value of n (arbitrary, possibly prime) Your architecture Very good sequential performance (competes with Spiral) ° Similar in spirit to PHIPAC/ATLAS/OSKI/Sparsity ° Won 1999 Wilkinson Prize for Numerical Software ° Widely used • Latest version 3. 3. 4 (Mar 2014), includes threads, Open. MP • Added MPI versions in v 3. 3 Beta 1 (June 2011) • Layout constraints from users/apps + network differences are hard to support 04/14/2015 CS 267 Lecture 23 51

FFTW the “Fastest Fourier Tranform in the West” • C library for real &

FFTW the “Fastest Fourier Tranform in the West” • C library for real & complex FFTs (arbitrary size/dimensionality) (+ parallel versions for threads & MPI) • Computational kernels (80% of code) automatically generated • Self-optimizes for your hardware (picks best composition of steps) = portability + performance free software: http: //www. fftw. org/ 04/14/2015 CS 267 Lecture 23 52

FFTW performance power-of-two sizes, double precision 833 MHz Alpha EV 6 2 GHz AMD

FFTW performance power-of-two sizes, double precision 833 MHz Alpha EV 6 2 GHz AMD Opteron 04/17/2012 2 GHz Power. PC G 5 500 MHz Ultrasparc IIe 53

FFTW performance non-power-of-two sizes, double precision unusual: non-power-of-two sizes receive as much optimization as

FFTW performance non-power-of-two sizes, double precision unusual: non-power-of-two sizes receive as much optimization as powers of two 833 MHz Alpha EV 6 2 GHz AMD Opteron …because we let the code do the optimizing 04/17/2012 54

FFTW performance double precision, 2. 8 GHz Pentium IV: 2 -way SIMD (SSE 2)

FFTW performance double precision, 2. 8 GHz Pentium IV: 2 -way SIMD (SSE 2) powers of two exploiting CPU-specific SIMD instructions (rewriting the code) is easy non-powers-of-two …because we let the code write itself 04/14/2015 55

Why is FFTW fast? three unusual features FFTW implements many FFT algorithms: A planner

Why is FFTW fast? three unusual features FFTW implements many FFT algorithms: A planner picks the best composition by measuring the speed of different combinations. The resulting plan is executed with explicit recursion: enhances locality The base cases of the recursion are codelets: highly-optimized dense code automatically generated by a special-purpose “compiler” 04/14/2015 CS 267 Lecture 23 56

FFTW is easy to use { complex x[n]; plan p; p = plan_dft_1 d(n,

FFTW is easy to use { complex x[n]; plan p; p = plan_dft_1 d(n, x, x, FORWARD, MEASURE); . . . execute(p); /* repeat as needed */. . . destroy_plan(p); } 04/14/2015 Key fact: usually, many transforms of same size are required. 57

Why is FFTW fast? three unusual features 3 FFTW implements many FFT algorithms: A

Why is FFTW fast? three unusual features 3 FFTW implements many FFT algorithms: A planner picks the best composition by measuring the speed of different combinations. 1 The resulting plan is executed with explicit recursion: enhances locality The base cases of the recursion are codelets: highly-optimized dense code automatically generated by a special-purpose “compiler” 2 04/14/2015 CS 267 Lecture 23 58

FFTW Uses Natural Recursion Size 8 DFT p = 2 (radix 2) Size 4

FFTW Uses Natural Recursion Size 8 DFT p = 2 (radix 2) Size 4 DFT Size 2 DFT But traditional implementation is non-recursive, breadth-first traversal: log 2 n passes over whole array 04/14/2015 CS 267 Lecture 23 59

Traditional cache solution: Blocking Size 8 DFT p = 2 (radix 2) Size 4

Traditional cache solution: Blocking Size 8 DFT p = 2 (radix 2) Size 4 DFT Size 2 DFT breadth-first, but with blocks of size = cache …requires program specialized for cache size 04/14/2015 CS 267 Lecture 23 60

Recursive Divide & Conquer is Good [Singleton, 1967] (depth-first traversal) Size 8 DFT p

Recursive Divide & Conquer is Good [Singleton, 1967] (depth-first traversal) Size 8 DFT p = 2 (radix 2) Size 4 DFT Size 2 DFT 04/14/2015 Size 2 DFT Size 4 DFT Size 2 DFT eventually small enough to fit in cache …no matter what size the cache is 61

Cache Obliviousness • A cache-oblivious algorithm does not know the cache size — it

Cache Obliviousness • A cache-oblivious algorithm does not know the cache size — it can be optimal for any machine & for all levels of cache simultaneously • Exist for many other algorithms, too [Frigo et al. 1999] — all via the recursive divide & conquer approach 04/14/2015 CS 267 Lecture 23 62

Why is FFTW fast? three unusual features 3 FFTW implements many FFT algorithms: A

Why is FFTW fast? three unusual features 3 FFTW implements many FFT algorithms: A planner picks the best composition by measuring the speed of different combinations. 1 The resulting plan is executed with explicit recursion: enhances locality The base cases of the recursion are codelets: highly-optimized dense code automatically generated by a special-purpose “compiler” 2 04/14/2015 CS 267 Lecture 23 63

Spiral ° Software/Hardware Generation for DSP Algorithms ° Autotuning not just for FFT, many

Spiral ° Software/Hardware Generation for DSP Algorithms ° Autotuning not just for FFT, many other signal processing algorithms ° Autotuning not just for software implementation, hardware too ° More details at • www. spiral. net • On-line generators, papers available 04/14/2015 CS 267 Lecture 23 64

Motifs – so far this semester The Motifs (formerly “Dwarfs”) from “The Berkeley View”

Motifs – so far this semester The Motifs (formerly “Dwarfs”) from “The Berkeley View” (Asanovic et al. ) Motifs form key computational patterns 04/17/2012 CS 267 Lecture 65 25 65

Rest of the semester ° Computational Astrophysics (Julian Borrill, LBNL) ° Dynamic Load Balancing

Rest of the semester ° Computational Astrophysics (Julian Borrill, LBNL) ° Dynamic Load Balancing (TBD) ° Climate Modeling (Michael Wehner, LBNL) ° Computational Materials Science (Kristin Persson, LBNL) ° Future of Exascale Computing (Kathy Yelick, UCB & LBNL) 04/14/2015 CS 267 Lecture 23 66

Extra slides 04/14/2015 CS 267 Lecture 23 67

Extra slides 04/14/2015 CS 267 Lecture 23 67

Rest of the semester ° Parallel Graph Algorithms (Aydin Buluc) ° Frameworks for multiphysics

Rest of the semester ° Parallel Graph Algorithms (Aydin Buluc) ° Frameworks for multiphysics problems (John Shalf) ° Climate modeling (Michael Wehner) ° Parallel Sorting; Dynamic Load Balancing (Jim Demmel) ° ? ? ° Computational Astrophysics (Julian Borrill) ° The future of Exascale Computing (Kathy Yelick) 04/17/2012 CS 267 Lecture 25 68

Rest of the semester ° Architecting Parallel Software with Patterns, Kurt Keutzer (2 lectures)

Rest of the semester ° Architecting Parallel Software with Patterns, Kurt Keutzer (2 lectures) ° Cloud Computing (Matei Zaharia) ° Parallel Graph Algorithms (Kamesh Madduri) ° Frameworks for multiphysics problems (John Shalf) ° Climate modeling (Michael Wehner) ° Parallel Sorting; Dynamic Load Balancing (Kathy Yelick) ° Petascale simulation of blood flow on 200 K cores and heterogeneous processors (Richard Vuduc – 2010 Gordon Bell Prize winner) ° Computational Astrophysics (Julian Borrill) ° The future of Exascale Computing (Kathy Yelick) 04/17/2012 CS 267 Lecture 25 69

3 D FFT Operation with Global Exchange 1 D-FFT Columns 1 D-FFT (Columns) Transpose

3 D FFT Operation with Global Exchange 1 D-FFT Columns 1 D-FFT (Columns) Transpose + 1 D-FFT (Rows) Cachelines send to Thread 0 Transpose + 1 D -FFT send to Thread 1 send to Thread 2 1 D-FFT Rows Exchange (Alltoall) Divide rows among threads Last 1 D-FFT (Thread 0’s view) ° Single Communication Operation (Global Exchange) sends THREADS large messages ° Separate computation and communication phases 04/17/2012 CS 267 Lecture 25 70

Communication Strategies for 3 D FFT chunk = all rows with same destination °

Communication Strategies for 3 D FFT chunk = all rows with same destination ° Three approaches: • Chunk: - Wait for 2 nd dim FFTs to finish - Minimize # messages • Slab: - Wait for chunk of rows destined for 1 proc to finish - Overlap with computation • Pencil: - Send each row as it completes - Maximize overlap and - Match natural layout Source: Kathy Yelick, Chris Bell, Rajesh Nishtala, Dan Bonachea 04/17/2012 pencil = 1 row slab = all rows in a single plane with same destination CS 267 Lecture 25 71

Decomposing NAS FT Exchange into Smaller Messages ° Three approaches: • Chunk: - Wait

Decomposing NAS FT Exchange into Smaller Messages ° Three approaches: • Chunk: - Wait for 2 nd dim FFTs to finish • Slab: - Wait for chunk of rows destined for 1 proc to finish • Pencil: - Send each row as it completes ° Example Message Size Breakdown for • Class D (2048 x 1024) • at 256 processors Exchange (Default) Slabs (set of contiguous rows) Pencils (single row) 04/17/2012 CS 267 Lecture 25 512 Kbytes 65 Kbytes 16 Kbytes 72

Overlapping Communication ° Goal: make use of “all the wires” • Distributed memory machines

Overlapping Communication ° Goal: make use of “all the wires” • Distributed memory machines allow for asynchronous communication • Berkeley Non-blocking extensions expose GASNet’s non-blocking operations ° Approach: Break all-to-all communication • Interleave row computations and row communications since 1 DFFT is independent across rows • Decomposition can be into slabs (contiguous sets of rows) or pencils (individual row) • Pencils allow: - Earlier start for communication “phase” and improved local cache use - But more smaller messages (same total volume) 04/17/2012 CS 267 Lecture 25 73

NAS FT: UPC Non-blocking MFlops ° Berkeley UPC compiler support non-blocking UPC extensions °

NAS FT: UPC Non-blocking MFlops ° Berkeley UPC compiler support non-blocking UPC extensions ° Produce 15 -45% speedup over best UPC Blocking version ° Non-blocking version requires about 30 extra lines of UPC code 04/17/2012 CS 267 Lecture 25 74

NAS FT Variants Performance Summary ° Shown are the largest classes/configurations possible on each

NAS FT Variants Performance Summary ° Shown are the largest classes/configurations possible on each test machine ° MPI not particularly tuned for many small/medium size messages in flight (long message matching queue depths) 04/17/2012 CS 267 Lecture 25 75

Pencil/Slab optimizations: UPC vs MPI ° Same data, viewed in the context of what

Pencil/Slab optimizations: UPC vs MPI ° Same data, viewed in the context of what MPI is able to overlap ° “For the amount of time that MPI spends in communication, how much of that time can UPC effectively overlap with computation” ° On Infiniband, UPC overlaps almost all the time the MPI spends in communication ° On Elan 3, UPC obtains more overlap than MPI as the problem scales up 04/17/2012 CS 267 Lecture 25 76

Summary of Overlap in FFTs ° One-sided communication has performance advantages • Better match

Summary of Overlap in FFTs ° One-sided communication has performance advantages • Better match for most networking hardware - Most cluster networks have RDMA support - Machines with global address space support (Cray X 1, SGI Altix) shown elsewhere • Smaller messages may make better use of network - Spread communication over longer period of time - Postpone bisection bandwidth pain • Smaller messages can also prevent cache thrashing for packing - Avoid packing overheads if natural message size is reasonable 04/17/2012 CS 267 Lecture 25 77

Solving Poisson Equation with FFT (1/2) ° 1 D Poisson equation: solve L 1

Solving Poisson Equation with FFT (1/2) ° 1 D Poisson equation: solve L 1 x = b where 2 -1 -1 2 L 1 = Graph and “stencil” -1 2 -1 ° 2 D Poisson equation: solve L 2 x = b where 4 -1 -1 4 -1 L 2= Graph and “ 5 point stencil” -1 -1 -1 4 -1 -1 -1 4 -1 -1 4 3 D case is analogous (7 point stencil) 78

Solving 2 D Poisson Equation with FFT (2/2) ° Use facts that • L

Solving 2 D Poisson Equation with FFT (2/2) ° Use facts that • L 1 = F · D · FT is eigenvalue/eigenvector decomposition, where - F is very similar to FFT (imaginary part) – F(j, k) = (2/(N+1))1/2 · sin(j k /(N+1)) - D diagonal matrix of eigenvalues – D(j, j) = 2(1 – cos(j / (N+1)) ) • 2 D Poisson same as solving L 1 · X + X · L 1 = B where - X square matrix of unknowns at each grid point, B square too ° Substitute L 1 = F · D · FT into 2 D Poisson to get algorithm • Perform 2 D “FFT” on B to get B’ = FT ·B · F • Solve D X’ + X’ D = B’ for X’: X’(j, k) = B’(j, k)/ (D(j, j) + D(k, k)) • Perform inverse 2 D “FFT” on X’ to get X: get X = F ·X’ · FT ° 3 D Poisson analogous 04/17/2012 CS 267 Lecture 25 79

Solving Poisson’s Equation with the FFT ° Express any 2 D function defined in

Solving Poisson’s Equation with the FFT ° Express any 2 D function defined in 0 x, y 1 as a series (x, y) = Sj Sk jk sin( jx) sin( ky) • Here jk are called Fourier coefficient of (x, y) ° The inverse of this is: jk = 4 (x, y) sin( jx) sin( ky) ° Poisson’s equation 2 / x 2 + 2 / y 2 = f(x, y) becomes Sj Sk (- 2 j 2 - 2 k 2) jk sin( jx) sin( ky) = Sj Sk fjk sin( jx) sin( ky) ° where fjk are Fourier coefficients of f(x, y) ° and f(x, y) = Sj Sk fjk sin( jx) sin( ky) ° This implies PDE can be solved exactly algebraically jk = fjk / (- 2 j 2 - 2 k 2) 04/17/2012 CS 267 Lecture 25 80

Solving Poisson’s Equation with the FFT ° So solution of Poisson’s equation involves the

Solving Poisson’s Equation with the FFT ° So solution of Poisson’s equation involves the following steps ° 1) Find the Fourier coefficients fjk of f(x, y) by performing integral ° 2) Form the Fourier coefficients of by jk = fjk / (- 2 j 2 - 2 k 2) ° 3) Construct the solution by performing sum (x, y) ° There is another version of this (Discrete Fourier Transform) which deals with functions defined at grid points and not directly the continuous integral • Also the simplest (mathematically) transform uses exp(-2 ijx) not sin( jx) • Let us first consider 1 D discrete version of this case • PDE case normally deals with discretized functions as these needed for other parts of problem 04/17/2012 CS 267 Lecture 25 81