You're working for Acme Surface Materials (ASM), which designs and fabricates patterns on surfaces using repeated application of low-energy interference e-beam lithography. ASM has built a model of how these patterns are fabricated; the model employs two-dimensional cellular automata, such as was used in Homework 3. Unlike Homework 3, ASM's automata are not symmetric, and are very fine grained with billions or even trillions of cells and many generations. Cell attributes are very simple, typically a small integer (perhaps signed, perhaps not), or a single-precision floating point value.
ASM has used a Java-based simulator, much like Homework 3, to simulate these automata, but they want something faster and cheaper. Your boss has heard that NVIDIA has put out new programming languages or technologies called Cg and CUDA that generate code for GPUs instead of CPUs. Your boss asks you to check out these technologies to see whether this would provide a more cost-effective way to simulate your automata.
Learn enough about Cg and CUDA to assess their suitability for the task of writing large 2D cellular automata simulations in which cells typically have simple numerical attributes such as described above. It wouldn't hurt to write a simple program or two to check your assessments. Write a one-page executive summary assessing Cg's and CUDA's suitabilities. The summary should be in 10-point font or larger. You can put references on a second page, if there's not enough room on one page. Your summary should focus on Cg's and CUDA's effects on reliability, portability (to future hardware), efficiency, flexibility, and ease of use, compared to the Java-oriented solution used in Homework 3. Please keep the resources for written reports in mind.
Submit a file hw6.pdf containing your summary.