% Week 2 Progress Report
% Abdulmajed Dakkak
% June 13th, 2008
Saturday/Sunday
===============
Familiarized myself with CUDA concepts by going through some online tutorials,
the CUDA manual, and some videos that were posted online. Attempts were also
made to familiarize myself with parallel algorithms in the theoretical sense
and draw distinction between theory and implementation.
I have read a few papers about Google's **map reduce** and Apache's **hadoop**
in the past month, and many of the concepts can be extended to CUDA. In fact,
on the CUDA website, they link to a paper that discusses attempts to write a
translator from map/reduce to CUDA with reported 157x increase in performance.
Lectures Watched
----------------
The internet is littered with quality video lectures that are easier to
understand than standard documentation. I usually opt for such forms of media
whenever possible.
I was able to locate video lectures relating to CUDA that were originally
meant for people attending [Workshop on General Purpose Computation on
Graphics Processing Units in Astronomy and Astrophysics] at **Institute for
Advanced Study** in Princeton. I thus watched the following lectures:
* David Luebke: CUDA Introduction
* Mark Harris: Data Parallel Algorithms
* Lars Nyland: N-Body on GPU
I plan on completing the video lectures after dabbling with CUDA on my own. As
an aside, video lectures exist from UIUC and can be found at the bottom of the
[CUDA website].
Monday
======
In an attempt to "**liberate**" myself from the SUN machine, I configured a
virtual machine on my system to my liking. I have installed the CUDA toolkit
and its visual profiler, Syszgy, and the WiiMote. The virtual machine was
placed on `b1`.
I have also contacted Dr. _Zoi Rapiti_ and got a TeX copy of the notes she
promised. I plan to dissect the notes over the next few days and write a
summary of what she talked about.
Dr. Francis also provided me with the IGL programs that needed to be ported to
OGL. He also explained OpenGL's lighting model.
Tuesday
=======
Started migrating the IGL program to OGL.
Wednesday
=========
Finished porting [ltor-solo.c] to OpenGL. This required using OpenGL
materials. I am currently writing how I did that in a separate document. I
also found references to Navier Stokes Equations in Wolfram's **New Kind of
Science**, as well as some of the papers Wolfram has published.
Went to Dr. Francis's house an enjoyed quality barbecue. Thank you.
Thursday
========
Most of the time was spent looking at the Navier Stokes equation, understand
its parameters.
Papers Read
-----------
* Wolfram, S. 1988. _Cellular automation supercomputing_. In High-Speed
Computing: Scientific Applications and Algorithm Design, R. B. Wilhelmson, Ed.
University of Illinois Press, Champaign, IL, 40-48.
Friday
======
Read a few more pages about Navier Stokes equation, went through its
derivation, and I am planning on writing the algorithm detailed in the Solid
Fluids paper by Jos Stam. I have already read and understood the algorithm.
All that is left is implementing it.
First CUDA group meeting (minus Chase) is today, and we plan on writing the
matrix addition program.
Lectures Watched
----------------
* Lecture on Navier Stokes equation at the [Clay Mathematical Institute]
* OpenGL Course at Siggraph 2007[^1]. I finally understand projections in
OpenGL!!
* Fluids Course at Siggraph 2006[^2].
Papers Read
-----------
* Grid-based Realtime Fluid Dynamics. Stefan Marek 0026455. Institute of
Computer Graphics and Algorithms, TU Vienna, Austria.
* Chapter 38. Fast Fluid Dynamics Simulation on the GPU.
Mark J. Harris.
University of North Carolina at Chapel Hill.
Fernando, Randima. Gpu Gems. Boston: Addison-Wesley, 2004
* CUDA/OpenGL Fluid Simulation
* Jos Stam, "Stable Fluids", In SIGGRAPH 99 Conference Proceedings, Annual
Conference Series, August 1999, 121-128.
* U. Frisch, B. Hasslacher & Y. Pomeau, Lattice-gas automata for the
Navier-Stokes equation, Phys. Rev. Lett. 56 (1986), pp. 1505-1508. (Did not
understand anything beyond the 1.5 page mark)
Plan for Weekend
================
* Write a matrix multiplier, 1D cellular automata, and 2D cellular automata in
CUDA.
* Read papers on cellular automata.
* Read Wolfram's papers on Navier Stokes equations.
* Rewrite the project proposal.
* Write notes for Dr. _Zoi_'s presentation, and place it on the website.
Questions
=========
What is the policy on printing. I did print many pages, but that is because I
have yet to activate my library card (they need two forms of ID and a copy of
the sublease). Even if I do activate my library account, I doubt I would find
_antique_ or recent articles in the library.
[^1]: Angel, E., Shreiner, D., and Shreiner, V. 2007. An interactive
introduction to OpenGL programming. In ACM SIGGRAPH 2007 Courses (San Diego,
California, August 05 - 09, 2007). SIGGRAPH '07. ACM, New York, NY, 1-124.
DOI= http://doi.acm.org/10.1145/1281500.1281596
[^2]: Bridson, R., Fedkiw, R., and Muller-Fischer, M. 2006. Fluid
simulation: SIGGRAPH 2006 course notes In ACM SIGGRAPH 2006 Courses (Boston,
Massachusetts, July 30 - August 03, 2006). SIGGRAPH '06. ACM, New York, NY,
1-87. DOI= http://doi.acm.org/10.1145/1185657.1185730
[ltor-solo.c]: code/ltor-solo.c
[Clay Mathematical Institute]: http://www.claymath.org/millennium/Navier-Stokes_Equations/
[Workshop on General Purpose Computation on Graphics Processing Units in Astronomy and Astrophysics]: http://www.astrogpu.org/videos.php
[CUDA website]: http://www.nvidia.com/object/cuda_develop.html