Computation Offloading
   HOME

TheInfoList



OR:

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 may refer to: Science and technology Astronomy * Cluster (spacecraft), constellation of four European Space Agency spacecraft * Cluster II (spacecraft), a European Space Agency mission to study the magnetosphere * Asteroid cluster, a small ...
,
grid Grid, The Grid, or GRID may refer to: Space partitioning * Regular grid, a tessellation of space with translational symmetry, typically formed from parallelograms or higher-dimensional analogs ** Grid graph, a graph structure with nodes connec ...
, or a
cloud In meteorology, a cloud is an aerosol consisting of a visible mass of miniature liquid droplets, frozen crystals, or other particles, suspended in the atmosphere of a planetary body or similar space. Water or various other chemicals may ...
. 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.


History

The first concepts of
stored-program computer A stored-program computer is a computer that stores program instructions in electronically, electromagnetically, or optically accessible memory. This contrasts with systems that stored the program instructions with plugboards or similar mechani ...
s were developed in the design of the
ENIAC ENIAC (; Electronic Numerical Integrator and Computer) was the first Computer programming, programmable, Electronics, electronic, general-purpose digital computer, completed in 1945. Other computers had some of these features, but ENIAC was ...
, the first general-purpose digital computer. The ENIAC was limited in performance to single tasks which led to the development of the
EDVAC EDVAC (Electronic Discrete Variable Automatic Computer) was one of the earliest electronic computers. It was built by Moore School of Electrical Engineering at the University of Pennsylvania. Along with ORDVAC, it was a successor to the ENIAC. ...
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 In computing, channel I/O is a high-performance input/output (I/O) architecture that is implemented in various forms on a number of computer architectures, especially on mainframe computers. In the past, channels were generally implemented with cu ...
. 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 In computing, floating-point arithmetic (FP) is arithmetic on subsets of real numbers formed by a ''significand'' (a Sign (mathematics), signed sequence of a fixed number of digits in some Radix, base) multiplied by an integer power of that ba ...
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 John McCarthy may refer to: Government * John George MacCarthy (1829–1892), Member of Parliament for Mallow constituency, 1874–1880 * John McCarthy (Irish politician) (1862–1893), Member of Parliament for the Mid Tipperary constituency, ...
. 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 International Business Machines Corporation (using the trademark IBM), nicknamed Big Blue, is an American Multinational corporation, multinational technology company headquartered in Armonk, New York, and present in over 175 countries. It is ...
. 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 Scalability is the property of a system to handle a growing amount of work. One definition for software systems specifies that this may be done by adding resources to the system. In an economic context, a scalable business model implies that ...
.


Concept

Computational tasks are handled by a
central processor A central processing unit (CPU), also called a central processor, main processor, or just processor, is the primary processor in a given computer. Its electronic circuitry executes instructions of a computer program, such as arithmetic, log ...
which executes instructions by carrying out rudimentary
arithmetic Arithmetic is an elementary branch of mathematics that deals with numerical operations like addition, subtraction, multiplication, and division. In a wider sense, it also includes exponentiation, extraction of roots, and taking logarithms. ...
, control logic, and input/output operations. The efficiency of computational tasks is dependent on the
instructions per second Instructions per second (IPS) is a measure of a computer's Central processing unit, processor speed. For complex instruction set computers (CISCs), different Machine code, instructions take different amounts of time, so the value measured depen ...
s 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 A coprocessor is a computer processor used to supplement the functions of the primary processor (the CPU). Operations performed by the coprocessor may be floating-point arithmetic, graphics, signal processing, string processing, cryptography or ...
while other processes might require an external processing platform.


Hardware acceleration

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.


Direct memory access

A peripheral device can utilize direct memory access to read or write
system memory Computer data storage or digital data storage is a technology consisting of computer components and Data storage, recording media that are used to retain digital data. It is a core function and fundamental component of computers. The cent ...
, without involving CPU. A peripheral device can use direct memory access to offload certain workloads from CPU. While hardware acceleration is usually vendor-specific, direct memory access can be used by the
class driver {{no footnotes, date=May 2015 In computing, a class driver is a type of hardware device driver that can operate a large number of different devices of a broadly similar type. Class drivers are very often used with USB based devices, which share the ...
.


Cloud computing

Cloud computing Cloud computing is "a paradigm for enabling network access to a scalable and elastic pool of shareable physical or virtual resources with self-service provisioning and administration on-demand," according to International Organization for ...
refers to both the applications transported over the Internet and the hardware and software in the data centers that provide services; which include data storage and computing. This form of computing is reliant on high-speed internet access and infrastructure investment. Through network access, a computer can migrate part of its computing to the cloud. This process involves sending data to a network of data centers that have access to computing power needed for computation.


Cluster computing

Computer cluster A computer cluster is a set of computers that work together so that they can be viewed as a single system. Unlike grid computers, computer clusters have each node set to perform the same task, controlled and scheduled by software. The newes ...
is a type of parallel processing system which combines interconnected stand-alone computers to work as a single computing resource. Clusters employ a
parallel programming Parallel computing is a type of computing, computation in which many calculations or Process (computing), processes are carried out simultaneously. Large problems can often be divided into smaller ones, which can then be solved at the same time. ...
model which requires fast interconnection technologies to support high-
bandwidth Bandwidth commonly refers to: * Bandwidth (signal processing) or ''analog bandwidth'', ''frequency bandwidth'', or ''radio bandwidth'', a measure of the width of a frequency range * Bandwidth (computing), the rate of data transfer, bit rate or thr ...
and low latency for communication between nodes. In a shared memory model, parallel processes have access to all memory as a global address space. Multiple processors have the ability to operate independently but they share the same memory, therefore, changes in memory by one processor are reflected on all other processors.


Grid Computing

Grid computing Grid computing is the use of widely distributed computer resources to reach a common goal. A computing grid can be thought of as a distributed system with non-interactive workloads that involve many files. Grid computing is distinguished fro ...
is a group of networked computers that work together as a virtual supercomputer to perform intensive computational tasks, such as analyzing huge sets of data. Through the cloud, it is possible to create and use computer grids for purposes and specific periods. Splitting computational tasks over multiple machines significantly reduces processing time to increase efficiency and minimize wasted resources. Unlike with parallel computing, grid computing tasks usually have no time dependency associated with them, but instead, they use computers that are part of the grid only when idle, and users can perform tasks unrelated to the grid at any time.


Advantages

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.


Limitations

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.


Application


Cloud services

Cloud services can be described by 3 main cloud service models:
SaaS Software as a service (SaaS ) is a cloud computing service model where the provider offers use of application software to a client and manages all needed physical and software resources. SaaS is usually accessed via a web application. Unlike oth ...
,
PaaS Platform as a service (PaaS) or application platform as a service (aPaaS) or platform-based service is a cloud computing service model where users provision, instantiate, run and manage a modular bundle of a computing platform and applications, w ...
, and
IaaS Infrastructure as a service (IaaS) is a cloud computing service model where a cloud services vendor provides computing resources such as storage, network, servers, and virtualization (which emulates computer hardware). This service frees users fro ...
. Software as a service (SaaS) is an externally hosted service which can be easily accessed by a consumer through a web browser. Platform as a service (PaaS) is a development environment where software can be built, tested, and deployed without the user having to focus on building and maintaining computational infrastructure. Infrastructure as a service (IaaS) is access to an infrastructure's resources, network technology, and security compliance which can be used by enterprises to build software. Cloud computing services provide users with access to large amounts of computational power and storage not viable on local computers without having significant expenditure.


Mobile cloud computing

Mobile devices, such as smartphones and wearable devices, are limited in terms of computational power, storage, and energy. Despite the constant development in key components including; CPU, GPU, memory, and wireless access technologies; mobile devices need to be portable and energy efficient.
Mobile cloud computing Mobile Cloud Computing (MCC) is the combination of cloud computing and mobile computing to bring rich computational resources to mobile users, network operators, as well as cloud computing providers.Fangming Liu, Peng Shu, Hai Jin, Linjie Ding, Jie ...
is the combination of cloud computing and mobile computing, in which mobile devices perform computation offloading to balance the power of the cloud for accelerating application execution and saving energy consumption. In this computation offloading, a mobile device migrates part of its computing to the cloud. This process involves application partitioning, offloading decision, and distributed task execution.


Video gaming

Video games are electronic games that involve input, an interaction with a user interface, and generate output, usually visual feedback on a video display device. These input/output operations rely on a computer and its components, including the CPU, GPU, RAM, and storage. Game files are stored in a form of
secondary memory Computer data storage or digital data storage is a technology consisting of computer components and recording media that are used to retain digital data. It is a core function and fundamental component of computers. The central processin ...
which is then loaded into the
main memory Computer data storage or digital data storage is a technology consisting of computer components and recording media that are used to retain digital data. It is a core function and fundamental component of computers. The central processin ...
when executed. The CPU is responsible for processing input from the user and passing information to the GPU. The GPU does not have access to a computer's main memory so instead, graphical assets have to be loaded into
VRAM Video random-access memory (VRAM) is dedicated computer memory used to store the pixels and other graphics data as a framebuffer to be rendered on a computer monitor. It often uses a different technology than other computer memory, in order to ...
which is the GPU's memory. The CPU is responsible for instructing the GPU while the GPU uses the information to render an image on to an output device. CPU's are able to run games without a GPU through software rendering, however, offloading rendering to a GPU which has specialized hardware results in improved performance.


See also

*
TLS offloading A TLS termination proxy (or SSL termination proxy, or SSL offloading) is a proxy server that acts as an intermediary point between client and server applications, and is used to terminate and/or establish TLS (or DTLS) tunnels by decrypting and/ ...
*
TCP offloading TCP may refer to: Science and technology * Transformer coupled plasma * Tool Center Point, see Robot end effector *Topologically close pack (TCP) phases, also known as Frank-Kasper phases Computing * Transmission Control Protocol, a fundamental I ...


References

{{Reflist Distributed computing architecture ja:オフロード (コンピュータ用語)