SCIENTIFIC COMPUTING AND VISUALIZATION (Fall 07)
Course Number: CSCI 596
Class Number: 30173R
Instructor:
Aiichiro Nakano;
office: VHE 610; phone: (213) 821-2657; email: anakano@usc.edu
Lecture: 3:30-4:50pm M W, VHE 206
Office Hours: 3:30-4:50pm F
Prerequisites: Basic knowledge of programming, data structures,
linear algebra, and differential equations.
Textbooks:
W. D. Gropp, E. Lusk, and A. Skjellum, "Using MPI, 2nd Ed."
(MIT Press, 1999)--recommended
M. Woo, et al., "OpenGL Programming Guide, Version 2.1, 6th Ed."
(Addison-Wesley, 2007)--recommended
A. Grama, A. Gupta, G. Karypis, and V. Kumar, "Introduction to Parallel Computing, 2nd Ed."
(Addison-Wesley, 2003)--recommended
Course Description
Particle and continuum simulations are used as a vehicle to learn basic elements of high
performance scientific computing and visualization. Students will obtain
hands-on experience in: 1) formulating a mathematical model to describe a physical
phenomenon; 2) discretizing the model, which often consists of continuous differential
or integral equations, into algebraic forms in order to allow numerical solution on
computers; 3) designing/analyzing numerical algorithms to solve the algebraic equations
efficiently on parallel computers; 4) translating the algorithms into a program;
5) performing a computer experiment by executing the program;
6) visualizing simulation data in an immersive and interactive virtual environment;
and 7) managing/mining large datasets.

Visualization of 209 million-atom simulation of hypervelocity impact on
a high-strength ceramic plate on a tiled display.
Syllabus
- Basic molecular dynamics (MD) algorithms
- Integration of ordinary differential equations; periodic boundary
condition; linked-list cells
- Parallel MD
- Spatial decomposition (interprocessor caching and migration);
load balancing; scalability analysis; asynchronous MD
- Message passing interface (MPI) vs. shared memory (OpenMP) programming
- Build-it-yourself PC cluster
- Scientific visualization
- OpenGL programming
- Virtual environment programming--CAVE Library, ImmersaDesk, tiled display
- Scientific data management/mining
- Data compression for scalable I/O
- Graph-based knowledge discovery
- Grid scientific computing
- Computation steering on the Grid-integrated parallel computing, data
storage, and visualization resources via high-speed networks
- Grid enabling parallel applications
- Object-oriented scientific programming
- Parallel software tools for irregular data structures
(e.g., KeLP C++ runtime library); object-oriented MD (e.g., NAMD);
Python wrappers
- Other simulation methods
- Stochastic simulations: Monte Carlo method
- Continuum simulations: Schrodinger equation in quantum mechanics
Announcements
- 8/27/07: Please email your answers to the
questionnaire to anakano@usc.edu by Friday, August 31; it will be used to set up
your account on USC's
High Performance Computing cluster.
- 8/27/07: Information on
Master of Science degree in Computer Science with specialization
in High Performance Computing & Simulations (MSCS-HPCS).
- 9/12/07: A note on least-square fitting of a line
is available, which is needed to complete question 2 of assignment 1.
- 9/19/07: For the use of MPI Communicators in Grid computing, see
Kikuchi et al., SC02, which is a natural
migration path to hybrid MPI/GridRPC Grid computing that allows dynamic resource
allocation on demand, see
Takemiya et al., SC06.
- 9/21/07 (F): Discussion session for HW 1 from 1:00pm in VHE 610.
- 9/28/07 (F): Special lecture on PlayStation3 cluster and Graphics Processing Unit (GPU)
programming at 10:00 am in SSL 104 (CACS Visualization Lab); discussion session for HW 2
from 4:00pm in VHE 610.
- 10/1/07 (M): Please see Gideon's Shell script for
performing multiple performance-test runs.
- 10/5/07 (F): Discussion session for HW 3 from 5:00pm in VHE 610.
- 10/8/07: An instruction on installing OpenGL and GLUT
is available; see also
how to use OpenGL and GLUT with Microsoft Visual Studio.
- 10/10/07 (W): Tour of the high performance computing (HPC) facility; we will meet at the
regular class and take a shuttle together to the HPC.
- 10/22/07 (M): Class will be held in SSL 104 and will cover:
(1) tiled display + virtual reality (Yi-Chun Chen); and (2) Playstation3 cluster (Liu Peng).
- 10/24/07: A coloring scheme for visualizing complex electronic wave functions is found in
J. L. Richardson, Comput. Phys. Commun. 63, 84 (1991).
- 11/2/07 (F): Discussion session for HW 5 from 3:30pm in VHE 610.
- 11/14/07 (W): Lecture on
(1) multidimensional parallel QD (see p. 3),
(2) stationary and
dynamic Green's function boundary conditions, and
(3) load balancing.
- 11/19/07 (M): Supplementary papers for the lecture on "optimizing molecular dynamics":
(1) "improving memory hierarchy performance for irregular applications,"
J. Mellor-Crummey et al., ICS99 (ACM, '99);
(2) "analysis of the clustering properties of the Hilbert space-filling curve,"
B. Moon et al., IEEE TKDE 13, 124 ('01);
(3) "optimization of sparse matrix-vector multiplication on emerging multicore platforms,"
S. Williams et al., SC07 (ACM, '07).
- 11/20/07 (T): Discussion session for HW 6 from 5:00pm in VHE 610.
- 11/20/07 (T):
(1) if you have not got the supplementary reading, "Performance Optimization of Numerically
Intensive Codes" by S. Goedecker and A. Hoisie (SIAM, 2001), please pick it up at my office
before Wednesday's lecture;
(2) you are encouraged to present your final project (just a plan or preliminary report of
progress will suffice, but it is required) at any class before Nov. 28 (Wed),
so that you do not need to stay until Dec. 19.
Lecture Notes
Assignments
Source Codes
- Sequential MD program: md.c, md.h, md.in
- MPI basics: mpi_simple.c, mpi_comm.c, irecv_comm.c
- Parallel MD program: pmd.c, pmd.h, pmd.in
- Visualizing MD simulation: atomv.c, atomv.h, md.conf
- Quantum dynamics: qd.c, qd.h, qd.in; qd1.c, qd1.h, qd1.in
- OpenMP basics: omp_example.c, omp_pi_critical.c, omp_pi.c
- Hybrid MPI+OpenMP: hpi.c
Useful Links
- Message Passing Interface (MPI)
- OpenMP
- OpenGL
- Virtual Reality/Visualization
- Network/Grid Scientific Computing
- Scientific Object Oriented Programming
- Linux Cluster
- Network/Interconnect
- Supercomputing & Information Technology for Science & Engineering
- Computational Science
- Numerical Methods