||Multicore architectures offer the potential for performance gains, but also raise challenging research questions related to achieving all or most of that potential. In this course we will examine multicore computing from the perspectives of architecture, operating systems, and application performance. We will investigate both homogeneous multicore (e.g. Intel Core 2 Duo ) and heterogeneous multicore (e.g. Cell (Sony playstation) and GPGPU's (General Purpose Graphics Processing Units)). Then we will preview future systems currently under development that hope to achieve record-breaking computational speed by integrating the two. Readings include textbook, introductory materials, several research papers, and course handouts. Programming projects focus on performance evaluation of the various multicore strategies. Projects include programming GPUs. We will have several guest speakers through the term from industry and academia. This course is suitable for undergraduates and masters students. Ph.D. students interested in this course should speak to the instructor about additional project requirements.
||A basic understanding of compilers, operating systems, and computer architecture, for example by completing CS321, CS333, and CS341. Ability to program in C/C++ in a Unix/Linux environment, to use a debugger, and to read and understand C/C++ source code.