SCIENTIFIC COMPUTING AND VISUALIZATION (Fall 09)
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, SGM 601
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
- Hybrid MPI+OpenMP programming
- Build-it-yourself PC cluster
- Multicore parallel programming (e.g., Cell, GPU)
- 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;
object-oriented MD; Python wrappers
- Other simulation methods
- Stochastic simulations: Monte Carlo method
- Continuum simulations: Schrodinger equation in quantum mechanics
Announcements
- 8/26/09 (W): You may be interested in a Webnar on
parallel computing with Matlab on Sep. 22 (T).
- 9/2/09 (W): For assignments, both electronic submission via email and a hard copy
at the class will be accepted.
- 9/2/09 (W): You may use any computer with a C compiler for assignment 1.
- 9/14/09 (M): Please see information on
Oklahoma Supercomputing Symposium 2009.
- 9/16/09 (W): Tour of HPCC--please bring your photo ID;
we will meet at the classroom and will take a tram together. Thank you very much, Maureen,
for the great tour.
- 9/28/09 (M): Please see a sample PBS script
for assignment 2.
- 10/1/09 (Th): See artiles on parallel molecular-dynamics simulations on
GPU and
special-purpose hardware
in the Communications of the ACM.
- The submission date of assignment 2 has been extended to Friday, Oct. 2.
- 10/7/09 (W): For advanced communication schemes for MD simulation, see:
K. J. Bowers, et al.,
J. Chem. Phys. 124, 184109 ('06).
- 10/7/09 (W): For "metascalable" parallel molecular dynamics, see:
K. Nomura, et al.,
Proc. of IPDPS 2009.
- 10/14/09 (W): Tour of VizLab (SSL 104) + building PC.
- 10/19/09 (M): Special lecture on
large scale computing at Linkedin
by Bhupesh Bansal (Linkedin); also see (1)
Linkedin Grads Guide:
How to leverage linkedin to the max for students; and (2)
Linkedin job/internship openings.
- 10/26/09 (M): For tensor-field visualization mentioned in assignment 5, see:
L. Hesselink, et al.,
IEEE Computer Graphics & Applications 14, 76 ('93);
W. Ribarsky, et al.,
IEEE Computer 27(7), 57 ('94);
A. Sigfridsson, et al.,
IEEE Visualization 2002, (IEEE, 2002) p. 371.
- 11/2/09 (M): Discussion session for assignment 5 at 5:00pm in VHE 610.
- 11/2/09 (M): If you are woking in a group for the final project, please participate in
the
survey at the Annenberg School of Communication; for questions regarding the survey,
please email Li Lu.
- 11/4/09 (W): Special lecture on
"FPGA on-chip debugging tools and methodologies"
by Dr. Jingzhao Ou of Xilink, Inc.
- 11/16/09 (M): See Google's new programming language Go.
- 11/16/09 (M): See ten questions for students taking a
qualifying examination
by Prof. Nenod Medvidovic (USC/CS).
- 11/18/09 (W): Special lecture on NeuARt project
by Prof. Gully Burns (USC/ISI).
- 11/23/09 (M): Please see the syllabus of:
(1) EE657, Parallel and Distributed Computing
by Prof. Kai Hwang; and
(2) CS 503,
Parallel Programming by Prof. Bob Lucas and Prof. Jacque Chame in Spring 2010.
- 12/2/09 (W): Due to time limitation, the final presentation is only oral presentation
(no PowerPoint presentation) limited to 1 minute.
Lecture Notes
- Introduction
- Basic molecular dynamics algorithms
- Linked-list cell MD algorithm
- Message Passing Interface;
viewgraphs
- Parallel Computation of Pi
- Parallel MD algorithm;
introduction
- Visualizing molecular dynamics
- Virtual-reality programming
- Massive data visualization, see also:
A. Sharma, et al.,
Presence 12, 85 ('03);
C. Zhang, et al.,
Comput. Phys. Commun. 175, 339 ('06)
- OpenMP
- Hybrid MPI+OpenMP parallel MD
- CUDA
- Optimizing molecular dynamics
- Advanced topics in parallel molecular dynamics
- Metascalable divide-and-conquer algorithms
- Miscellaneous lectures
- Least-square fitting
- installing OpenGL and GLUT; see also
how to use OpenGL and GLUT with Microsoft Visual Studio
- Lecture note by Prof. James Demmel (UC Berkeley) on
high performance programming on a single processor: memory hierarchies,
matrix multiplication, and automatic performance tuning
- See J. Mellor-Crummey, et al.,
Int'l J. Parallel Prog. 29, 217 ('01);
B. Moon, et al.,
IEEE Trans. Knowledge Data Eng. 13, 124 ('01);
M. Frigo, et al., in
Proc. of 40th Symp. on Foundation of Computer Science (FOCS) (IEEE, '99)
Assignments
- 1: Molecular dynamics (due Monday, Sep. 14)
- 2: Message Passing Interface (due Wednesday, Sep. 30; extended to Friday, Oct. 2)
- 3: Parallel computation of Pi (due Friday, Oct. 9; extended to Monday, Oct. 12)
- 4: Parallel molecular dynamics (due Monday, Oct. 19)
- 5: Animating molecular dynamics (due Wednesday, Nov. 4)
- 6: Hybrid MPI+OpenMP parallel molecular dynamics
(due Monday, Nov. 23; optional competition due Monday, Nov. 30)
- Final project (due Wednesday, Dec. 16); required presentation
at the class on Wednesday, Dec. 2.
Source Codes
- Sequential MD program: md.c, md.h, md.in
- Linked-list cell MD program: lmd.c, lmd.h, lmd.in
- MPI basics: mpi_simple.c, mpi_comm.c, irecv_comm.c, mpi_simple_sample.pbs
- 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_example_set.c, omp_pi_critical.c, omp_pi.c
- Hybrid MPI+OpenMP: hpi.c
- CUDA basics: pi.cu
Useful Links
- Message Passing Interface (MPI)
- OpenMP
- OpenGL
- CUDA
- Parallel Computing
- Network/Grid Scientific Computing
- Virtual Reality/Visualization
- CAVE programming
at Electronic Visualization Laboratory at University of Illinois at Chicago
- IEEE Virtual Reality Conference
- ACM SIGGRAPH Conference
- IEEE Visualization Conference
- VMD:
Visual Molecular Dynamics at University of Illinois at Urbana-Champaign
-
Atomsviewer: A scalable molecular visualization code
- VisIT visualization tool
at Lawrence Livermore National Laboratory
- ParaView parallel visualization application
at Los Alamos National Laboratory
- VISTA scalable volume renderer
at Sandiego Supercomputing Center
- Scientific Object Oriented Programming
- Linux Cluster
- Network/Interconnect
- Supercomputing & Information Technology for Science & Engineering
- Computational Science
- Numerical Methods