0% found this document useful (0 votes)
164 views7 pages

Advantages and Challenges of Parallel Computing

Parallel computing uses multiple processors simultaneously to solve problems more quickly. It works by breaking problems into discrete parts that can be solved concurrently by different processors. This allows multiple instructions to be executed at the same time, reducing the overall time to solution. However, parallel computing faces challenges including transporting programs between different computing environments, data dependencies that require waiting for other processes to complete, and complex algorithms that are difficult to parallelize effectively. Overcoming these challenges will be important to continue advancing high performance computing.

Uploaded by

muhammad
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
164 views7 pages

Advantages and Challenges of Parallel Computing

Parallel computing uses multiple processors simultaneously to solve problems more quickly. It works by breaking problems into discrete parts that can be solved concurrently by different processors. This allows multiple instructions to be executed at the same time, reducing the overall time to solution. However, parallel computing faces challenges including transporting programs between different computing environments, data dependencies that require waiting for other processes to complete, and complex algorithms that are difficult to parallelize effectively. Overcoming these challenges will be important to continue advancing high performance computing.

Uploaded by

muhammad
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd

In parallel computing multiple compute resources are used simultaneously to solve computational

problems. For such computations, multiple processes execution and calculations are carried out
simultaneously. To achieve parallel computing the compute resource should fulfill the following
requirement:

• The computing resource necessarily a solitary computer containing various Cores.


• A network that would connect an arbitrary number of such computers together.

The computational problems need to be executed should be:

• Broken down into discrete fragments of work that will be performed simultaneously.
• Execute multiple instructions at same moment of time.
• In less span of time due to multiple computational resources.

The above diagram illustrates the idea of parallel computing, for this a problem is broken down in
chunks that will be further on solved concurrently. Then each problem is further on divided into series of
instruction, now each of these instructions are simultaneously processed by different cores. This whole
mechanism Is performed with overall coordination and control.

Merits of parallel computing:


Advantages offered by parallel computing include:

• Efficient execution of code and applications in a shorter time.


• Parallel programming offers concurrency, particularly performing simultaneously multiple
actions at the same time.
• Parallel computational devices can be easily built from cheap and commodity components.
• It can effectively deal with issue of solving large and complex problems which cannot be solved
by the simple computers for example web search engines need to execute millions of
transactions every second.
• It takes advantage from non-local resources.
• As illustrated in the diagram given below Network has connected multiple stand-alone
computers to make larger parallel computer clusters.

Challenges In parallel computing:


The task of achieving the parallelization of program or software for the multicore processor is difficult
task for programmers and algorithm developers. Some task cannot be converted into parallel
completely. It occurs because of the unavailability of the subject expertise or algorithms. It can create
the challenges of time complexity and space complexity. But it can easily better the throughput time of
program. Hence, the output of the parallel program can be obtained in less time as compared to
sequential program. In the past the parallel programming idea was not accessible to the designers. For,
changing over the accessible calculations into parallel, the subject master is required to check that the
recently created calculation is working fine in the parallel programming. The specialists of the specific
area need to create parallel calculation for parallel programming, generally the yield of the parallel
calculation might be change, or the yield of the parallel program may not be right.

The programs which are mostly developed are sequential i.e. these programs are very lengthy due to
which such programs are developed by multiple developers. Such developers of the sequential
programs are available easily. But in the case of parallel programming the developers are not available
easily. The parallel program developers are self-learned. These are not the well trained professional
developers. This creates a large gap between parallel program and sequential program developers. It is
difficult to convert large sequential program into parallel program. For that special training is required
by the developers which will make them expert so that they can write their own parallel programs .This
is one of the important challenge faced in parallel computing.

Several challenges are faced during parallel computing which are as under:

Transportability:
Transportability is the transfer of the parallel program from one computing environment to another for
instance considers a parallel program written for 5 core processor will not perform well on different
number of core processor.

Compatibility

The compatibility amongst the program with hardware or software also causes issues for user.

Unavailability of resources:
The scarcity of techniques and tools required for debugging, testing and tracing the parallel programs.
This requires lot of research work.

Data dependence:
Data dependence in the subprogram of the parallel programs. In this scenario the output of a
subprogram may be input for other program, and then this subprogram has to wait until the first
program is not completely executed. This condition increases the throughput time of the program. The
other problem in data dependencies may be parallel accessing of the data from a single sequential
storage. So, the vector storage or several parallel storages are required to store and to retrieve the data
parallel in the parallel programming.

Cache memory:
For multicore processors parallel computing is a difficult task if all the cores are sharing up the similar
cache memory. On the other hand if each core is having its own cache memory then the computation
process is accelerated.

Algorithmic overhead

Some processes require more efforts to perform in parallel fashion e.g. Parallel Prefix (Scan).

Speculative Loss
Consider a scenario in which two task are supposed to be done in parallel For example task X and task Y
but ultimately task Y is not needed.

Load imbalance:
It requires all the cores to wait for the lowest one to get fully processed i.e. dynamic behavior.

Communication overhead:
Increasing proportion of time is spent on communication.
Critical Paths:

Dependencies amongst computations spread across processors.

Bottlenecks:

Single processor holding all processes up.

Complex Algorithms:

The algorithms for the computation have been developed for the sequential programming. The
algorithm developers need to create parallel algorithms for parallel programming. It’s difficult to achieve
as execution steps of parallel program are change as compared to the execution steps of sequential
programs .This increases the complexities but the algorithm developers have to ignore the complexities
of the algorithm on the cost of the faster throughput. In the case of mathematical computations one
module is dependent upon other module this adds up to the complexities. So, this implementation can
be performed by using the asynchronous communication in the subprograms, and it may increase the
computation time.

Vistualization

Principle
Complex
of
algorithm
presistance

Challanges
of parallel
Measurement computing
Memory
of
performance
load balancing

Parallel
Communication
performance
cost
issues.
Vendors producing parallel computers:
Various vendors are producing computers supporting the feature of parallel computing. This is the
growing field and vendors are competing to provide users with the best computers in minimum cost.

Future goals:
Over the past 20 years parallelism is the future of computing as indicated by the ever fast networks,
distributed systems and multi-processor computer architecture. Over the same time period it has been
noticed that greater than 500,000x betterment in the performance of supercomputer has been
encountered.

“The race is already on for Exascale Computing!”


Where,

Exaflop = 1018 calculations per second.

CONCLUSIONS:

These challenges exhibit several limitations for the available range of Hardware and Software. To
reduce these challenges, there is a dire need that developers and researchers have to work in
coordination for developing the research software for the researchers. So, the researcher can acquire
research result efficiently with parallel computing. With the technologies and software advancement,
the algorithm developers are needed to implement parallel algorithms. So, that developer can easily
able to implement those algorithms. For this purpose the experts of that field are required to develop
the parallel algorithm and the researchers are needed to motivate for developing the parallel algorithm
to deal with existing challenges and future challenges.

Common questions

Powered by AI

To achieve parallel computing, a computing resource must consist of multiple cores within a solitary computer and a network connecting several such computers, which facilitates the simultaneous execution of processes and calculations. By breaking problems into discrete, concurrent tasks that are performed by different cores, and linking these multiple standalone systems into a larger cluster, parallel computing efficiently makes use of non-local resources, shortens the time for code execution, and effectively tackles large and complex problems that are beyond the capacity of a single processor .

Parallel computing offers several advantages over sequential computing in large-scale computational tasks. It allows concurrent execution of multiple instructions, significantly reducing time required for complex calculations. By utilizing multiple cores and combining resources from several computers, parallel computing can solve large and complex problems more efficiently. This is particularly beneficial for applications like web search engines, which require rapid execution of millions of transactions per second .

Load imbalance occurs when not all cores are utilized effectively, where bottlenecks cause some cores to remain idle while the slowest core completes its task. This impacts efficiency as it results in longer processing times. To alleviate its effects, load balancing techniques must be implemented, ensuring equitable distribution of tasks across all cores to prevent idle time and optimize usage of computing resources. Measurement of load balancing and adjustments to the task allocation may also be employed to enhance performance .

In parallel computing, communication overhead arises due to the time spent coordinating between processors as they share information, impacting the overall performance negatively. To minimize communication overhead, optimized network architectures that limit the need for extensive inter-processor communications can be implemented. Furthermore, communication-efficient parallel algorithms are designed to reduce frequency and size of inter-processor messages, thus decreasing overhead and improving computation efficiency .

Converting sequential programs to parallel ones is challenging due to the complexity of reworking algorithms to function concurrently rather than sequentially, and the requirement for specialized training for developers. Strategies to overcome these issues include designing and implementing parallel algorithms specifically for these tasks and ensuring developers undergo special training to write parallel programs effectively. Coordination between researchers and algorithm developers is crucial to address these conversion challenges .

Cache sharing among cores in multicore processors can become a bottleneck in parallel computing, leading to contention and slowing down the computation process. Performance can be improved by providing each core with its own cache memory, reducing contention and accelerating computations. Techniques such as optimized cache coherence protocols and memory management strategies are also essential to manage shared memory access effectively .

Speculative loss in parallel computing occurs when computational resources are wasted on executing tasks that are ultimately unnecessary, as illustrated when two tasks are executed in parallel, but only one is needed. To mitigate speculative loss, rigorous analysis of task dependencies before execution and optimizing task scheduling can prevent unnecessary computations. Implementing speculative execution with mechanisms to roll back unnecessary tasks can also help reduce resource wastage .

Data dependencies affect parallel computing by forcing subprograms to wait for the output of others, thereby increasing program throughput time. When one subprogram's output serves as input for another, the waiting causes inefficiencies. Solutions include using vector storage or parallel storage systems to store and retrieve data in parallel, thus reducing delays. Employing asynchronous communication between subprogram modules can also help mitigate computation time increases caused by these dependencies .

Research collaborations play a critical role in overcoming challenges in parallel computing by pooling expertise to develop efficient algorithms and frameworks necessary for advanced computing projects. They facilitate sharing of resources, insights, and technical innovations, essential for tackling issues like algorithmic complexity and compatibility challenges. These collaborations enable coordinated development efforts to create research software tailored for parallel environments, fostering advancements in technology and addressing both current and future challenges in parallel computing .

Developers face challenges in devising parallel algorithms due to the inherent differences in execution steps compared to sequential programming, requiring innovative designs to manage task dependencies, data sharing, and resource allocation. This leads to complexities like critical paths and bottlenecks, increasing algorithmic overhead. Algorithm developers must ignore some complexities for faster throughput. Such challenges necessitate expertise and extensive coordination between developers and researchers to advance parallel computing applications effectively .

You might also like