Computation offloading is the transfer of resource intensive computational tasks to a separate processor, such as a hardware accelerator, or an external platform, such as a cluster, grid, or a cloud. Offloading to a coprocessor can be used to accelerate applications including; image rendering and mathematical calculations. Offloading computing to an external platform over a network can provide computing power and overcome hardware limitations of a device, such as limited computational power, storage, and energy.
There are several advantages in offloading computation to an external processor:
External processing units can offer greater computational performance, storage, and flexibility when compared to a local computer.
Computational limitations of a device could be ignored by offloading the workload to other systems with better performance and resources. Other aspects of the device could be improved including; energy consumption, cost, and portability.
Enterprises that require hardware to perform business do not have to allocate resources towards information technology and infrastructure development.
Cluster computing is more cost-effective than a single computer and is much more flexible in terms of adding more processing units.
There are several limitations in offloading computation to an external processor:
Cloud computing services have issues regarding downtime, as outages can occur when service providers are overloaded with tasks.
External computing requires network dependency which could lead to downtime if a network connection runs into issues.
Computing over a network introduces latency which is not desired for latency-sensitive applications, including autonomous driving and video analytics.
Cloud Providers are not always secure, and in an event of a security breach, important information could be disclosed.
Modern computers integrate various technologies including; graphics, sound hardware, and networking within the main circuit board which makes many hardware accelerators irrelevant.
Using cloud services removes individual control over the hardware and forces users to trust that cloud providers will maintain infrastructure and properly secure their data.
Application software may not be available on the target processor or operating system. Software may need to be rewritten for the target environment. This can lead to additional software development, testing and costs.