This document provides an overview of heterogeneous architectures and the challenges they present for developers. It discusses how hardware is becoming more specialized and complex as Moore's Law slows. This leads to difficulties delivering high performance and efficiency in applications. The document then summarizes several available compute devices from easiest to hardest to program, including GPUs, MICs, FPGAs, and automata. It proposes that software and tools are needed to abstract this complexity and automatically realize performance gains across heterogeneous systems. Bifusion technology aims to do this through remote virtualization that scales applications horizontally, vertically, and across different device types in a transparent manner.