Scalable Computing Over The Internet
Scalable Computing Over The Internet
From 1970 to 1990, we saw widespread use of personal computers built with
VLSI microprocessors. From 1980 to 2000, massive numbers of portable
computers and pervasive devices appeared in both wired and wireless
applications. Since 1990, the use of both HPC and HTC systems hidden in
Clusters, grids, or Internet clouds has proliferated. These systems are
employed by both consumers and high-end web-scale computing and
information services.
The general computing trend is to leverage shared web resources and
massive amounts of data over the Internet. Figure 1.1 illustrates the
evolution of HPC and HTC systems. On the HPC side, supercomputers
(massively parallel processors or MPPs) are gradually replaced by clusters of
cooperative computers out of a desire to share computing resources. The
cluster is often a collection of homogeneous compute nodes that are
physically connected in close range to one another.
On the HTC side, peer-to-peer (P2P) networks are formed for distributed
file sharing and content delivery applications. A P2P system is built over
many client machines (a concept we will discuss further in Chapter 5). Peer
machines are globally distributed in nature. P2P, cloud computing, and web
service platforms are more focused on HTC applications than on HPC
applications. Clustering and P2P technologies lead to the development of
computational grids or data grids.
a.2 High-Performance Computing
For many years, HPC systems emphasize the raw speed performance. The
speed of HPC systems has increased from Gflops in the early 1990s to now
Pflops in 2010. This improvement was driven mainly by the demands from
scientific, engineering, and manufacturing communities. For example, the
Top 500 most powerful computer systems in the world are measured by
floating-point speed in Linpack benchmark results. However, the number of
supercomputer users is limited to less than 10% of all computer users.
Today, the majority of computer users are using desktop computers or large
servers when they conduct Internet searches and market-driven computing
tasks.
a.3 High-Throughput Computing
The development of market-oriented high-end computing systems is
undergoing a strategic change from an HPC paradigm to an HTC paradigm.
This HTC paradigm pays more attention to high-flux computing. The main
application for high-flux computing is in Internet searches and web services
by millions or more users simultaneously. The performance goal thus shifts
to measure high throughput or the number of tasks completed per unit of
time. HTC technology needs to not only improve in terms of batch processing
speed, but also address the acute problems of cost, energy savings, security,
and reliability at many data and enterprise computing centers. This book will
address both HPC and HTC systems to meet the demands of all computer
users.
a.4 Three New Computing Paradigms
As Figure 1.1 illustrates, with the introduction of SOA, Web 2.0 services
become available. Advances in virtualization make it possible to see the
growth of Internet clouds as a new computing paradigm. The maturity
of radio-frequency identification (RFID), Global Positioning System (GPS), and
sensor technologies has triggered the development of the Internet of Things
(IoT). These new paradigms are only briefly introduced here.
When the Internet was introduced in 1969, Leonard Klienrock of UCLA
declared: “As of now, computer networks are still in their infancy, but as they
grow up and become sophisticated, we will probably see the spread of
computer utilities, which like present electric and telephone utilities, will
service individual homes and offices across the country.” Many people have
redefined the term “computer” since that time. In 1984, John Gage of Sun
Microsystems created the slogan, “The net-work is the computer.” In 2008,
David Patterson of UC Berkeley said, “The data center is the compu-ter.
There are dramatic differences between developing software for millions to
use as a service versus distributing software to run on their PCs.” Recently,
Rajkumar Buyya of Melbourne University simply said: “The cloud is the
computer.”
2. High Performance Computing and High Throughput Computing
High-Performance Computing(HPC) is a computing technique to process
computational problems, and complex data and to perform scientific
simulations. HPC systems consist of considerably more number of
processors or computer nodes, high-speed interconnects, and specialized
libraries and tools. In order to use HPC systems effectively users must have
a proper knowledge of parallel computing and optimization techniques. HPC
is used in various fields such as engineering, finance, commercial
applications, weather forecasting, and automotive design.
Advantages of HPC
Faster computation: HPC systems can process large and complex
calculations and processes faster end efficiently than the traditional
approach.
Scalability: HPC systems are more scalable because they can handle
many processors and computing nodes according to their applications.
Parallel processing: HPC systems make use of parallel processing in
order to divide the computations into smaller tasks so that they can be
processed simultaneously.
Improved accuracy: HPC system performs and gives more accurate
simulations and calculations.
High Throughput Computing (HTC) is defined as a type of computing that
aims to run a large number of computational tasks using resources in
parallel. HTC systems consist of a distributed network of computers known
as computing clusters. These systems are used to schedule a large number
of jobs effectively. HTC majorly focuses on increasing the overall
throughput of the system by running many smaller size tasks parallelly.
HTC is commonly used in scientific research and engineering applications in
order to process large data sets or perform simulations that require
extensive computational power.
Advantages of HTC
Flexibility: HTC is more flexible and can be used for many computing
tasks related to business analytics and scientific research.
Cost-Effectiveness: HTC is more cost-effective as compared to the
solutions offered by High-Performance Computing(HTC) as it makes use
of hardware and software that is available and less expensive and
performs more tasks.
Reliability: HTC systems are mostly designed to provide high reliability
and make sure that all tasks run efficiently even if any one of the
individual components fails.
Resource Optimization: HTC also does proper resource allocation by
ensuring that all the resources that are available are efficiently used and
accordingly increases the value of computing resources that are
available.
Difference between HPC and HTC
Parameter HPC HTC
HPC consists of
HPC consists of
running a large
running large-scale,
number of tasks that
complex, and
are independent and
computationally
Workload small in size and does
intensive applications
not require a large
that need significant
amount of memory
resources and
and resources.
memory.
HTC is designed to
It is designed to increase the number of
provide maximum tasks that needs to be
Processing Power
performance and completed in a given
speed for large tasks. specific amount of
time.
systems have a
to the failure of an
complex fault
individual task.
tolerance mechanism.
Conclusion
In conclusion, High-Performance Computing(HPC) and High Throughput
Computing(HTC) are two different types of computing systems in order to
handle multiple processes simultaneously. Both HPC and HTC have their
own advantages and limitations accordingly. In some of the applications,
both HPC and HTC can be used in combination in order to achieve their own
specific advantages and improve the functioning of the systems.
3. Parallel Computing
Before taking a toll on Parallel Computing, first, let’s take a look at the
background of computations of computer software and why it failed for the
modern era.
Computer software was written conventionally for serial computing. This
meant that to solve a problem, an algorithm divides the problem into smaller
instructions. These discrete instructions are then executed on the Central
Processing Unit of a computer one by one. Only after one instruction is
finished, next one starts.
A real-life example of this would be people standing in a queue waiting for a
movie ticket and there is only a cashier. The cashier is giving tickets one by
one to the persons. The complexity of this situation increases when there are
2 queues and only one cashier.
So, in short, Serial Computing is following:
In this, a problem statement is broken into discrete instructions.
Then the instructions are executed one by one.
Only one instruction is executed at any moment of time.
This was causing a huge problem in the computing industry as only one
instruction was getting executed at any moment of time. This was a huge
waste of hardware resources as only one part of the hardware will be running
for particular instruction and of time. As problem statements were getting
heavier and bulkier, so does the amount of time in execution of those
statements. Examples of processors are Pentium 3 and Pentium 4.
Now let’s come back to our real-life problem. We could definitely say that
complexity will decrease when there are 2 queues and 2 cashiers giving
tickets to 2 persons simultaneously. This is an example of Parallel
Computing.
Parallel Computing:
It is the use of multiple processing elements simultaneously for solving any
problem. Problems are broken down into instructions and are solved
concurrently as each resource that has been applied to work is working at
the same time.
Advantages of Parallel Computing over Serial Computing are as follows:
1. It saves time and money as many resources working together will reduce
the time and cut potential costs.
2. It can be impractical to solve larger problems on Serial Computing.
3. It can take advantage of non-local resources when the local resources are
finite.
4. Serial Computing ‘wastes’ the potential computing power, thus Parallel
Computing makes better work of the hardware.
Types of Parallelism:
1. Bit-level parallelism –
It is the form of parallel computing which is based on the increasing
processor’s size. It reduces the number of instructions that the system
must execute in order to perform a task on large-sized data.
Example: Consider a scenario where an 8-bit processor must compute the
sum of two 16-bit integers. It must first sum up the 8 lower-order bits,
then add the 8 higher-order bits, thus requiring two instructions to
perform the operation. A 16-bit processor can perform the operation with
just one instruction.
2. Instruction-level parallelism –
A processor can only address less than one instruction for each clock cycle
phase. These instructions can be re-ordered and grouped which are later
on executed concurrently without affecting the result of the program. This
is called instruction-level parallelism.
3. Task Parallelism –
Task parallelism employs the decomposition of a task into subtasks and
then allocating each of the subtasks for execution. The processors
perform the execution of sub-tasks concurrently.
4. Data-level parallelism (DLP) –
Instructions from a single stream operate concurrently on several data –
Limited by non-regular data manipulation patterns and by memory
bandwidth