CSC HPC Workshop 2018
Sessions
Session 5: Introduction to Programming Concepts
Writing shell scripts
Scripting vs. shell/GUI
Variables
Arithmetic
Conditionals
Loops
Functions
Session 6: Scripting with Bash and Python
Getting started
Linux Processes
Running in the background
Backgrounding a foreground process
Listing processes
Killing a process
Bash scripts
Python scripts
Executing shell scripts
Scripting exercise
Session 7: Compiling Programs
Compiled programs
Compiling programs
Compiling “typical” Linux packages
Makefiles
How can a Makefile help?
Makefile variables
Advanced usage
Makefile exercise
Session 8: Version Control Systems
Version control systems
Why use a VCS?
General definitions
Standard VCS programs
Comparison with Dropbox/Google Drive/OneDrive/etc.
Session 9: Debugging Programs
Getting started
Debugging and debuggers
Enabling Debugging Information
Fixing the Bug
Advanced debuggers
Session 10: Profiling and Optimizing Programs
Getting started
Profiling and performance analysis
Generating a profile
Identifying bottlenecks
Optimizing code
Compiler optimizations
Session 13: Introduction to Parallel Programming Concepts
Why go parallel?
The demise of Moore’s law has been greatly exaggerated? Or has it?
We can performance calculations faster than we can transfer the data! Oh the humanity!
Let’s go parallelize something!
Anatomy of a Cluster
Parallelism Defined
To Decompose or Not to Decompose
It’s choose your own adventure time!
Be a Freeloader, Mooch… or Don’t Reinvent the Wheel!
Session 14: Shared Memory Parallel Programming with OpenMP
General information
Getting started
Shared-memory programs
Enabling OpenMP
Compiling with OpenMP
Running with OpenMP
OpenMP exercise
Session 15: Distributed Memory Parallel Programming with MPI
Distributed-memory programs
Getting started
MPI overview
Compiling MPI code
Running MPI code
MPI exercise
Hybrid Shared/Distributed-memory programs
Compiling Hybrid MPI+OpenMP code
Running Hybrid MPI+OpenMP code
Hybrid MPI+OpenMP exercise
Session 16: Debugging and Profiling Parallel Programs
Debugging Shared Memory Programs Using GDB
Debugging Distributed Memory Programs Using GDB
Session 17: Introduction to Heterogeneous Programming Concepts
Motivation
Modern GPGPU Computing and Associated Languages
Heterogeneous Architectures
Heterogeneous Programming Tools
High-Level Languages
R
Python
MATLAB
Mathematica
Libraries
Advantages
Disadvantages
Many Libraries Available
OpenACC
Advantages
Disadvantages
OpenCL
Advantages
Disadvantages
OpenCL Workflow
Example
References
Sections
Index
Symbols
|
A
|
B
|
C
|
D
|
E
|
F
|
G
|
H
|
I
|
J
|
K
|
L
|
M
|
N
|
O
|
P
|
R
|
S
|
T
|
V
|
W
Symbols
& (run in background)
-fprofile-arcs -ftest-coverage
profiling
-g
debugging
-p
profiling
.tar.gz extension
.tgz extension
^c (kill a process)
A
a.out
,
[1]
arithmetic
Bash
arithmetic operators
Bash
arithmetic operators
Python
array
Bash
Python
assembly language
B
background
process
Bash
arithmetic
arithmetic operators
array
comment
function
function arguments
if-elif-else
list
logic operators
loop
resources
shell script
variable
variable reference
build commands
Makefile
bus error
debugging
,
[1]
C
C++
resources
chmod
command-line compilation
comment
Bash
Makefile
Python
compiled programs
compiler
compiler optimizations
configure
CPU vs memory/disk speed
cvs
add
admin
checkout
commit
diff
history
import
remove
resources
status
tag
update
D
debugging
-g
advanced debuggers
bus error
,
[1]
gdb
segmentation fault
,
[1]
dependencies
Makefile
E
execute permissions
F
FFTW
file
foreground
process
Fortran
resources
function
Bash
Python
function arguments
Bash
Python
G
gdb
debugging
git
clone
commands
pull
push
resources
web hosting
gmon.out
profiling
GNU compiler collection
g++
g77
gcc
gfortran
GNUmakefile
see also Makefile
gprof
profiling
grep
gunzip
gzip
H
Hello world
hg
add
clone
commands
commit
diff
merge
pull
push
resources
status
up
web hosting
HYPRE
I
if-elif-else
Bash
Python
info
integrated development environment
interactive session
Python
J
jobs
K
kill
process
L
LAMMPS
linking
,
[1]
list
Bash
Python
logic operators
Bash
Python
loop
Bash
Python
loop control statements
Python
M
make
make check
make clean
,
[1]
make install
Makefile
,
[1]
build commands
comment
dependencies
explicit rule
resources
target
makefile
see also Makefile
mercurial
see also hg
Moore's law
MPI
resources
running batch jobs
running interactive jobs
wrapper scripts
MPI wrapper scripts
mpiCC
mpic++
mpicc
mpicxx
mpif77
mpif90
openmpicc
openmpicxx
openmpif77
openmpif90
MPI+OpenMP
compilation
running batch jobs
mpiP
N
numerical array
Python
O
object file
object files
OpenMP
OMP_NUM_THREADS
compiler flags
resources
running at the command line
running batch jobs
P
parallel concurrency
parallel decomposition
parallel granularity
parallel processes
parallel task interaction
parallel tasks
ParMETIS
PARPACK
PETSc
PGI compiler suite
pgc++
pgcc
pgfortran
PHDF5
PID
PLAPACK
process
background
foreground
kill
suspend
profiling
-fprofile-arcs -ftest-coverage
-p
gmon.out
gprof
ps
Python
arithmetic operators
array
comment
function
function arguments
if-elif-else
interactive session
list
logic operators
loop
loop control statements
numerical array
resources
shell script
variable
variable reference
R
reproducibility
resources
Bash
C++
Fortran
MPI
Makefile
OpenMP
Python
cvs
git
hg
S
ScaLAPACK
segmentation fault
debugging
,
[1]
shell script
Bash
Python
running
SUNDIALS
SuperLU
suspend
process
svn
add
checkout
ci
co
commit
del
delete
diff
help
log
move
mv
remove
ren
rename
resolve
revert
rm
stat
status
up
update
web hosting
web resources
T
tar
target
Makefile
Trilinos
V
variable
Python
VCS
see also version control systems
version control systems
W
web hosting
git
hg
svn
web resources
svn
wget