CS 5984 Accelerator-Based Parallel Computing Today, the world is running towards parallel programming for accelerator-based systems, sometimes called systems on a chip (SoC). From traditional multicore architectures (e.g., Intel's Core Duo and AMD's dual-core Opteron) to hybrid multi-core (e.g., Cell Broadband Engine) to many-core (e.g., NVIDIA Tesla), this trend in computer architecture is both an opportunity and a challenge for computer scientists. Examples of systems that use such parallel architectures include PCs, laptops, game consoles, mobile handsets, servers, and network routers to name just a few. However, these systems have also resulted in a nightmare for programmers to take full advantage of multiple processing cores; these problems will only worsen as the number of cores per processor continues to increase, most notably, today's many-core architectures from NVIDIA which now have 240 cores per graphics processing unit (GPU). Thus, the challenge and objective of this course is to develop applications software that effectively uses the parallel processing cores to achieve efficiency and performance goals. Prerequisite: CS 3204 (CS 4504 is recommended, but not mandatory)