The pairing of traditional multicore processors with accelerators of various forms (e.g., graphics engines, reconfigurable logic) can be referred to generally as architecturally diverse systems. Our interest in this work is truly diverse systems, in which more than one accelerator is used in the execution of an application. These systems have the potential for substantial performance gains relative to multicores alone; however, they pose significant difficulties when it comes to application development.In spite of these difficulties, the use of accelerators in high performance computation, generally, has grown substantially over the past decade. This is primarily due to a pair of forces. First, with the demise of Dennard scaling, power has become a substantial limiting factor in systems development, pushing computations to be more power efficient (a strength of many accelerators). Second, the application development environments for accelerators have improved substantially in recent years.We review the use of multiple, distinct accelerators deployed in a individual system or, more to the point, used concurrently within an individual application. We give a history of architecturally diverse systems that use multiple accelerators, discuss the motivations for diversity in accelerators, and describe the approaches that both system designers and application developers have used to put accelerators to beneficial use.
Read full abstract