Hubbry Logo
search
logo

Computation offloading

logo
Community Hub0 Subscribers
Write something...
Be the first to start a discussion here.
Be the first to start a discussion here.
See all
Computation offloading

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.

The first concepts of stored-program computers were developed in the design of the ENIAC, the first general-purpose digital computer. The ENIAC was limited in performance to single tasks which led to the development of the EDVAC which would become the first computer designed to perform instructions of various types. Developing computing technologies facilitated the increase in performance of computers, and subsequently has led to a variety of configurations and architecture.

The first instances of computation offloading were the use of simple sub-processors to handle Input/output processing through a separate system called Channel I/O. This concept improved overall system performance as the mainframe only needed to set parameters for the operations while the channel processors carried out the I/O formatting and processing. During the 1970s, coprocessors began being used to accelerate floating-point arithmetic faster than earlier 8-bit and 16-bit processors which used software. As a result, math coprocessors became common for scientific and engineering calculations. Another form of coprocessor was the graphics coprocessor. As image processing became more popular, specialized graphics chips began being used to offload the creation of images from the CPU. Coprocessors were common in most computers, however, declined in usage due to the development in microprocessor technologies which integrated many coprocessor functions. Dedicated graphics processing units, however, are still widely used for their effectiveness in many tasks including; image processing, machine learning, parallel computing, computer vision, and physical simulation.

The concept of time-sharing, the sharing of computing resources, was first implemented by John McCarthy. At the time, mainframe computing was not practical due to the costs associated with purchasing and maintaining mainframe computers. Time-sharing was a viable solution for this problem as computing time could be available to smaller companies. In the 1990s telecommunications companies started offering virtual private network (VPN) services. This allowed companies to balance traffic on servers which resulted in an effective use of bandwidth. The cloud symbol became synonymous with the interaction between providers and users. This computing extended past network servers and allowed computing power to be available to users through time-sharing. The availability of virtual computers allowed users to offload tasks from a local processor.

In 1997 distributed.net sought to obtain volunteer computing to solve computational intensive tasks by using the performance of networked PCs. This concept known as grid computing was associated with cloud computing systems.

The first concept of linking large mainframes to provide an effective form of parallelism was developed in the 1960s by IBM. Cluster computing was used by IBM was to increase hardware, operating system, and software performance while allowing users to run existing applications. This concept gained momentum during the 1980s as high-performance microprocessors and high-speed networks, tools for high performance distributed computing, emerged. Clusters could efficiently split and offload computation to individual nodes for increased performance while also gaining scalability.

Computational tasks are handled by a central processor which executes instructions by carrying out rudimentary arithmetic, control logic, and input/output operations. The efficiency of computational tasks is dependent on the instructions per seconds that a CPU can perform which vary with different types of processors. Certain application processes can be accelerated by offloading tasks from the main processor to a coprocessor while other processes might require an external processing platform.

Hardware offers greater possible performance for certain tasks when compared to software. The use of specialized hardware can perform functions faster than software processed on a CPU. Hardware has the benefit of customization which allows for dedicated technologies to be used for distinct functions. For example, a graphics processing unit (GPU), which consists of numerous low-performance cores, is more efficient at graphical computation than a CPU which features fewer, high power, cores. Hardware accelerators, however, are less versatile when compared to a CPU.

See all
User Avatar
No comments yet.