% 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