(HPC) Pratik
(HPC) Pratik
(HPC) Pratik
Ans ::
The need for ever-increasing performance is driven by the demand for faster and
more powerful technology that can handle increasingly complex tasks and process
larger amounts of data. This is particularly important in fields such as artificial
intelligence, scientific research, and gaming.
For example, in the field of artificial intelligence, neural networks require significant
computing power to analyze vast amounts of data and make accurate predictions. As
the complexity of these networks increases, so does the need for more powerful
hardware to process the data.
Overall, the need for ever-increasing performance is driven by the demand for
technology that can handle increasingly complex tasks and process larger amounts
of data, which is essential for progress in fields such as artificial intelligence,
scientific research, and gaming.
2) Explain need of writing parallel programs with appropriate example.
Ans::
Suppose you are developing a video editing software that needs to apply several
image filters (e.g., brightness, contrast, saturation, etc.) to each frame of a high-
resolution video. Applying these filters can be a computationally intensive task and
may take a long time to process the entire video, especially if done sequentially on
a single core.
By writing a parallel program, you can distribute the workload of applying the
filters across multiple processing units, thereby reducing the processing time
significantly. For example, you could assign each processing unit to handle a
different section of the video and apply the filters concurrently. This would allow
you to complete the video processing in a fraction of the time it would take to do it
sequentially on a single core.
Overall, the need for parallel programming arises from the increasing demand for
high-performance computing and the availability of hardware with multiple
processing units. By breaking down complex tasks into smaller subtasks and
running them concurrently, parallel programming can significantly improve the
performance of software applications.
3) Write a short note on cluster computing with neat architecture diagram.
Ans:
Cluster computing is a type of parallel computing that divides a complex problem
into smaller pieces and distributes them across a network of computers to be solved
simultaneously. It is a form of distributed computing in which a group of
interconnected processors (nodes) combine their resources to perform a specific
task.
Cluster computing offers a wide array of benefits. Some of these include the
following.
Processing Speed – The processing speed of cluster computing is justified with that
of the mainframe systems and other supercomputers present in the world.
1. High cost :
It is not so much cost-effective due to its high hardware and its design.
Infrastructure may increase as more servers are needed to manage and monitor.
The CPU is the central processing unit, which is responsible for executing
instructions and processing data. It contains an arithmetic logic unit (ALU) and a
set of registers. The memory stores the instructions and data for the CPU. It can be
divided into two components: main memory, which is the primary storage for
programs and data, and secondary storage, which is used for long-term storage.
The input/output device is used to provide a means for the user to communicate
with the computer. The control unit is responsible for coordinating the activities of
the other components.
The bottleneck in the Von Neumann architecture is the speed at which data can be
transferred between the CPU and the memory. The speed of this data transfer is
limited by the speed of the bus, which connects the CPU and the memory. This
limits the amount of data that can be processed at any given time, as the CPU has
to wait for the data to be transferred before it can process it. This can lead to delays
and can be a major cause of performance issues.
6) Explain in detail concept of Process, multitasking and threads?
Ans::
Process:
A process is an instance of a computer program that is being executed by a
computer processor. It contains the program code, data being operated on, and
other resources such as open files and network connections. A process is created
when a program is loaded into memory or when a new instance of an existing
program is started. Each process has its own memory address space and one or
more threads of execution.
Multitasking:
Multitasking is the ability of an operating system to run multiple programs or
threads concurrently. In a multitasking system, multiple threads of execution are
interleaved on a single processor so that each thread gets some time to execute its
instructions. This allows multiple programs or processes to run at the same time,
improving the overall system performance.
Threads:
A thread is a lightweight process that allows multiple tasks to be executed
concurrently within a single process. A thread is a unit of execution within a
process, and each process can have multiple threads. A thread shares the same
address space and resources with other threads in the same process. Threads can be
used to improve the performance of a process by allowing different tasks to be
executed in parallel. Threads also allow for synchronization between tasks, as they
can communicate with each other using shared variables.
7) What is page fault? When it occurs and what is its effect on computational
performance?
Ans::
Static threads are threads that are fixed in number when the
program is first created. The number of threads does not change
during the life of the program. This makes it easier to debug and
optimize the code, since it is always known how many threads are
running in the program.
Dynamic threads are threads that are created and destroyed as the
program runs. This makes it possible to scale the program to adapt
to changing workloads, but can make it more difficult to debug and
optimize the code.