Ian Markwood - 2010 illiMath REU

[If your screen is greater than 800px wide, click here.]

REU on Geometric Visualization in Virtual Environments

The 2010 REU in Mathematics directed by Dr. George K. Francis at the University of Illinois Urbana/Champaign involves visualization of interesting topics, mathematical and otherwise, with the end result of their display in three-dimensional virtual environments such as the Cube at the Illinois Simulator Laboratory.

CubeMathematica, originally caveMathematica, is an effort to use the visualization capabilities of Wolfram Mathematica to make a simple front end for users to display geometrical objects in the Cube (and CAVE). My work this summer in this capacity involved simplifying and documenting some of the aspects of this process so as to make it more readily understandable by users familiar with Mathematica but not necessarily the workings of the Cube.

Wolfram Mathematica is publicly in its 7th edition but version 8 is coming to completion. The other students in the REU and I were given prerelease copies of Mathematica 8 Beta and told to play with the new aspects of the program, most notably the integration of parallel processing via NVIDIA graphics processing units. Due to the massive expansion of the GPU in comparison to the CPU and the logical ease of parallelizing repetitive aspects of programs, it is evident the future involves extensive use of massively parallel processing. Mathematica 8 allows the user to input a program written in CUDA C (the language used by NVIDIA GPUs) and have it execute CUDA kernels on the GPU. Much of my time this summer was spent learning how to use this functionality and in preparation of examples illustrating its many applications.

To see more about these topics and their varying successes, scroll down. Also present is a general idea of who I am.

CubeMathematica - Rendering Notebooks in the Cube

The caveMathematica project was started by Ulisses Pimentel of and Mimi Tsuruga. The program uses MathLink, which is part of the Mathematica package, to link Mathematica to Syzygy for display originally in the CAVE and now in the Cube. We established that caveMathematica.exe is compatible with Mathematica 8 Beta, and adapted a couple examples that Dr. Francis had wanted to see in the Cube. However, we still found that it would be desirable to recompile a new version of the program. This would hopefully involve the addition of consistent coloring (color displays in the Cube only at times) and perhaps include additional functionality for the GPU-related aspects of Mathematica 8. I was given the Visual Studio files for caveMathematica and put some reasonable effort into recompiling it. After fixing a few dozen linking issues with the aid of Abdul Dakkak from Wolfram Research, I came upon several dozen errors in the code which were prohibitive to resolve in the time available.

The project was then shifted to make the existing setup clearer for the typical user comfortable with Mathematica but not the Cube apparatus. I simplified, clarified, and applied some cosmetic improvements to the caveMathematica notebook, in the form of a new notebook called CubeMathematica. I then formulated another notebook of examples, illustrating the Mathematica functions that caveMathematica can handle, with a basic tutorial for Mathematica users to modify their graphics for display in the Cube. Following is a screenshot of caveMathematica in standalone mode (click for larger version):


Mathematica 8 Beta - New GPU Integration with CUDALink

At the beginning of the REU, all of us were given prerelease versions of Mathematica 8 to try out especially its new CUDALink capabilities. Required for this to work is a proper graphics card (late model NVIDIA GPU), Visual Studio 2008 (available free for students from Microsoft Dreamspark, and the CUDA Toolkit (available free on the NVIDIA CUDAZone web site). Due to the fact that I was the only member with a sufficient graphics card (1GB PNY GeForce 9600GT), I would be the one in charge of testing CUDALink.

Our long term interest was a 3D example that would employ CUDALink and display in the Cube. Due to some complexities with the different versions of the beta, the immediate interest soon became to find something that worked, with the hope that it could be applied to a 3D example we could display in the Cube. With the help of Abdul Dakkak, we did obtain several examples and a method of adaptation so that they may work. The 3D example we were aiming for was an Ising Model, which illustrates electron spins during a variation in temperature. However I determined that caveMathematica was not yet capable of displaying listed objects in the Cube (it currently can handle only surfaces) so an Ising Model, which is essentially a 3D array, would not be work with this framework. This is another aspect which we would like to improve in a new version of CubeMathematica. Here is a screenshot of the CUDAMandlebrotMorph example (click for larger version):

About Me

I will be a senior in the fall at Hillsdale College, a small liberal arts school founded in 1844 in southern Michigan. There I am majoring in mathematics and minoring in physics and computer science. I am a member of two honor societies, Sigma Zeta (Math and Science) and Kappa Mu Epsilon (Math). In my free time I enjoy racquetball, graphic and LEGO design, and some video games. I was recently promoted to Black Belt in Tae Kwon Do, and I love hiking in the Great Smoky Mountains. I am contemplating intelligence work for the government but am currently uncertain as to whether that will be before or after graduate school. Below is me (click for larger version):

Last edited by Ian Markwood - August 3, 2010