| SP Parallel Programming Workshop |
| p a r a l l e l m a t h l i b r a r i e s |
| Overview |
dgetrf(N, N, A, lda, pivots, ierror) dgetrs(trans, N, nrhs, A, lda, pivots, b, ldb, ierror)
pdgetrf(N, N, A, ia, ja, desc_A, pivots, ierror) pdgetrs(trans,N,nrhs,A,ia,ja,desc_A,pivots,b,ib,jb,desc_b,ierror)
| Linear Algebra for Dense Systems |
| The BLAS |
| BLAS Level |
BLAS routine | O(Ops) | O(Mem Refs) | Ratio |
|---|---|---|---|---|
| 1 | SAXPY z=ax+y |
2n | 3n | 2:3 |
| 2 | SGEMV z=aAx+by |
2n^2 | n^2 | 2:1 |
| 3 | SGEMM D=aAB+bC |
2n^3 | 4n^2 | n:2 |
| Linear Algebra for Dense Systems |
| LAPACK |
| Linear Algebra for Dense Systems |
| BLACS |
| Linear Algebra for Dense Systems |
| PBLAS |
| Linear Algebra for Dense Systems |
| ScaLAPACK |
| Sparse Linear Algebra |
| The Sparse BLAS |
| Sparse Linear Algebra |
| The PIM Library |
| Other Parallel Libraries |
| PESSL |
| Other Parallel Libraries |
| NAG Parallel Libraries |
| Other Parallel Libraries |
| PETsc |
| Summary of Features |
| Areas of Numerical Analysis | |||||||
|---|---|---|---|---|---|---|---|
| Area | ScaLAPACK | PESSL | PETSc | PIM | NAG | AZTEC | SYISDA |
| Linear Equations Direct methods | yes | yes | serial | no | yes | no | no |
| Linear Equations Iterative methods | no | no | yes | yes | yes | yes | no |
| Least Squares | yes | yes | yes (iterative) | no | yes | no | no |
| Eigensystem Analysis | yes | yes | no | no | yes | no | yes |
| Singular Value Analysis | yes | yes | no | no | yes | no | no |
| Random Number Generation | no | yes | no | no | yes | no | no |
| Quadrature | no | no | no | no | yes | no | no |
| Fast Fourier Transforms (FFTs) | no | yes | no | no | no | no | no |
| Nonlinear Equations | no | no | yes | no | no | no | no |
| Unconstrained minimization | no | no | yes | no | yes | no | no |
| PDE | no | no | yes | no | no | no | no |
| Table of Basic Features | |||||||
|---|---|---|---|---|---|---|---|
| Feature | ScaLAPACK | PESSL | PETSc | PIM | NAG | AZTEC | SYISDA |
| Application Languages | F77 | F77, C, C++ | C, C++,
F77 | F77 | F77 | C, F77 | C |
| Source Languages | F77 | F77 | C | F77 | F77 | C | C |
| Data types | Single precision, Double precision, Complex, Double complex | Double precision | Double precision, Double complex | Single precision, Double precision, Complex, Double complex | Single precision, Double precision | Double precision | Double precision |
| SP Communications Library | BLACS (MPI/MPL) | BLACS (MPI/MPL) | MPI | PVM, MPI | BLACS, PVM | MPI | PRISM, MPI |
| Availability | Public domain | Vendor | Public domain | Public domain | Vendor | Vendor with public research license | Public domain |
| Documentation | Technical reports & users guide | 750+ pages | Draft manual | Manual included | Intro. and Tutorial | 40 page manual | 29 page User's Guide |
| Data structure | Traditional | Traditional | Transp. to user. Several formats available | Provided by user. Transp. to PIM | Traditional | Distrib. Modified Sparse Row, Distrib. Variable Block Row | ? |
| Parallel Libraries at the MHPCC |
General guidelines:
| Matrix Size | Routine | BLAS library | ESSL library | ||
|---|---|---|---|---|---|
| Thin 64MB Node (Mflops) | Wide 256MB Node (Mflops) | Thin 64MB Node (Mflops) | Wide 256MB Node (Mflops) | ||
| 500 order | SGEMM | 158 | 154 | 224 | 224 |
| DGEMM | 146 | 160 | 242 | 245 | |
| CGEMM | 50 | 51 | 203 | 219 | |
| ZGEMM | 64 | 64 | 219 | 241 | |
| 1000 order | SGEMM | 162 | 165 | 228 | 238 |
| DGEMM | 147 | 160 | 166 | 227 | |
| CGEMM | 52 | 51 | 243 | 247 | |
| ZGEMM | 64 | 64 | 124 | 237 | |
Note: Multiplies were of square matricies.C=C+A*B (except in ZGEMM because of space problems on thin nodes they were C=C+A*A)
| problem-size 240x240 | problem-size 480x480 | ||||
|---|---|---|---|---|---|
| serial ESSL (sec) | #nodes | pESSL(sec) | serial ESSL(sec) | #nodes | pESSL(sec) |
| 1.5 | 1 | 2.4 | 11.2 | 1 | 9.8 |
| . | 2 | 2.2 | . | 2 | 7.3 |
| . | 4 | 1.6 | . | 4 | 4.9 |
| . | 9 | 1.5 | . | 9 | 3.8 |
| . | 16 | 1.5 | . | 16 | 3.5 |
Where they are:
setenv EBTRC /source/vendorcode/nag/odunx01nd/data/.ebtrc
alias dtext /source/vendorcode/nag/odunx01nd/bin/dtext
Then enter dtext at the Unix prompt.
| Example Programs |
LU Factor and Solve
FILES:
| References and More Information |