An Introductory Overview Of High Computing Performance (HPC)
When we say High Computing Performance (HPC) one might think that if the computer is performing task faster than a human brain then it is effectively doing High Computing Performance (HPC). This is however wrong, since computers are doing their tasks in a different way than humans do. High Computing Performance (HPC) is the technique in which we use super computers and similar or parallel processing techniques to solve highly complex computational problems. HPC is typically used for solving highly complex problems through computer modeling, simulation and techniques. The term HPC and super computers are sometime used interchangeably. HPC was developed to meet the increasing demands for processing speed. HPC brings along many technologies like pc design, algorithms, programs and natural philosophy, and system software system underneath one cover to unravel advanced issues effectively and quickly. A highly efficient HPC system requires a high-bandwidth, low-latency network to connect multiple nodes and clusters. HPC has been deployed into many areas including:
- Biosciences
- Geographical data
- Oil and gas industry modeling
- Electronic design automation
- Climate modeling
- Media and entertainment.
Computer: A computer is a device which is used to carry out arithmetic and logical operations on a function. A computer can solve many kinds of operations on a given function. In order to understand the role of computer in HPC we divide computer into three main components:
- Processor
- Memory
- Data storage.
One will consider processors as employees and programs because the workers’ work flow instruction manual. Programs define a sequence of directions and processors per-form the directions one when another at the defined sequence. This inherently means that a processor will solely do one factor at a time. Memory could be a volatile storage medium wherever the dataset that the program has to do operations on resides. Though volatile, its access is very quick. Any memory residing knowledge set either may be Associate in nursing initial state generated by the program itself or could also be loaded from a data store. An information store is that the place wherever datasets get keep for good and can be scan at any time. Like everything, this comes at a cost: its access is significantly slower than memory’s. Most of the computers today have multi-processor architectures. Basically, a multi-processor is a computer system having two or more processing units called the Multi-Processor each sharing main memory and devices in order to simultaneously process programs.
Computer Cluster: A computer cluster consists of a collection of loosely or tightly connected computers that work along in order that in several respects they'll be viewed as one system. On most trendy computer clusters, computers are loosely connected. A computer cluster is a single logical unit that consists of several computers connected together via LAN. These network computers act as a more powerful machine. A computer clusters provide users with much faster processing speed, larger storage capacity, better data accessibility, superior reliability, and wider availability of data. Many companies and organization uses computer clusters to minimize the processing time, increase the data capacity and faster rates of implementation and retrieval techniques. There are many types of clusters:
- Load Balancing Clusters
- High Availability Clusters (HA)
- High Performance Clusters (HP).
We have mentioned the advantages of clusters when used by any organization. When used this way clusters offer us following points:
- Cost efficiency: The cluster technique is price effective for the number of power and process speed being made. It’s additional economical and far cheaper compared to alternative solutions like putting in mainframe computers.
- Processing speed: Multiple high-speed computers work along to provide unified process, and so quicker process overall.
- Flexibility: Unlike mainframe computers, computer clusters can be upgraded to enhance the existing specifications or add extra components to the system.
- High availability of resources: If any single element fails during a laptop cluster, the opposite machines still give uninterrupted process. This redundancy is lacking in mainframe systems.
- Parallel Computing: It’s a type of computer architecture in which many processors execute or process a program or an application at the same time. Parallel computing helps in playing giant computations by dividing the work between over one processor, all of that work through computation at the same time. Most supercomputers use parallel computing principles to control.
Parallel computing is also called parallel processing. Parallel process is mostly enforced in operational environments/scenarios that need large computation or processing power. The main objective of parallel computing is to extend the offered computation power for quicker application process or task resolution. Typically, parallel computing infrastructure is housed at intervals one facility wherever several processors are put in in a very server rack or separate servers are connected along. The appliance server sends a computation or process request that's distributed in little chunks or elements that are at the same time executed on every processor/server. Parallel computation is classified as bit-level, educational level, information and task similarity.
Types of parallelism:
- Bit-Level parallelism: In the Bit-level parallelism every task is running on the processor level and depends on processor word size (32-bit, 64-bit, etc. ) and we need to divide the maximum size of instruction into multiple series of instructions in the tasks. For Example, if we want to do an operation on 16-bit numbers in the 8-bit processor, then we would require dividing the process into two 8 bit operations.
- Instruction level parallelism: ILP is a measurement of the number of operations that can be performed simultaneously in a computer program. Microprocessors exploit ILP by executing multiple instructions from a single program in a single cycle. It is the measure of how many operations a computer can perform at the same time.
- Data parallelism: The multiprocessor system can execute a single set of instructions (SIMD), data parallelism achieved when several processors simultaneously perform the same task on the separate section of the distributed data.
- Task parallelism: Task parallelism is the parallelism in which tasks are splitting up between the processors to perform at once. This contrasts with data parallelism, where the same calculation is performed on the same or different sets of data. Task parallelism involves the division of a task into sub-tasks and then sending it to each sub-task ti processor for execution.
Uses
Following are the departments that are using parallel computing:
- Atmosphere, Earth, Environment
- Electrical & Mechanical engineering
- Computer science, Defense & Weapons
- Chemistry, Biosciences
- Nuclear physics.
- Artificial intelligence
- Medical imaging & diagnosis
- Financial & Economic modeling
- Pharmaceutical industry.
Software
With regard to the simulations or calculations you want to run, you should always check if someone else has already done so. In fact, as we often say "there is an application for this" when talking about everyday problems and mobile applications. One could even find more than one library, a tools tool framework that implements the same solution with a different approach to the same problem. Libraries in these situations differ from each other in various ways. Based on the implementation style, implementation approach, parallelization support, implementation of parallelization, etc. A good amount of research is needed before deciding to use a library. When you find a library useful and decide to use it, it is imperative to keep you abreast of its development status. Tracking version upgrades, tracking mailing lists, and testing updates to performance can be a real time saver. Sometimes the most recent version of a library is not the fastest or has a bug that corrupts your data. Compilers and performance analysis are another topic of study for HPC. There are several compilers available for many languages available. As in libraries, the only way to get high performance results is to follow the evolution. One must know all available compilers and know their features. It’s not always that simple. The compiler will always depend on the flags used, algorithms to compile, etc. The only way to make sure that we use the right compiler, the right flags, and the correct version of the compiler is by comparison.
The compilation process is becoming increasingly complex as software growth and "hand-to-hand" compilation can become very difficult to maintain as more and more components are compiled together in a specific order. To help developers have a manageable compilation process, many tools have been created over the years. Performance analysis and comparison can be done at one level and is usually sufficient to distinguish between compilers, libraries, and their versions. Schedule of how much has a process to complete the success. You can also use utilities such as PAPI to measure the performance metrics of certain functions or algorithms very precisely. Researchers around the world are also unaware of version control, as most of the scientific software products produced to date contain only a bunch of records for each version retained. Although this may have been the usual practice in the early days of computing, one can imagine what it would be to keep software containing millions of lines of code and thousands of participants as the Linux kernel, by manually performing versions with folders and exchanging archives between them. Impossible. Version control is mandatory these days in any project. Keeping track of changes is essential to having an effective team workflow. It can be quite difficult to coordinate changes to codes, documents, and so on. When several people work in the same project. Version control also helps developers choose software from the moment other developers have abandoned it, while keeping track of what has been done, why, and how it has been done. Sometimes versioning can also give you a snapshot of the progress of a particular feature or bug. Several version control software packages exist, including the most widely used CVS (simultaneous versions) (SVN) and GIT.
Documentation is another thing that researchers also forget to develop. Every year, researchers around the world lose countless hours trying to find their way using undocumented software. Documentation is essential in every software, even more when it comes to scientific research. Usually, a codec can be dropped by a student and later picked up by another student who has to waste countless hours browsing the undocumented software. What usually happens is the reimplementation of all or part of the undocumented code, because the other student was wrong is more difficult than re- implementing it correctly. The documentation also makes it possible to understand certain elements of the software before the users decide to use it. Many developers around the world completely ignore the undocumented code because, if it is undocumented, it is not considered serious software. In summary, tracking the evolution of basic software development rules can be the key to optimal results.
Remote server access
In the field of HPC, access to the remote server is one of the tools of commerce. The most common method of connecting to remote servers is the Secure Shell, usually called SSH. SSH uses public key cryptography to allow the client to authenticate the server and establish a secure channel between the server and the client connecting to it. Servers can also authenticate users with their public keys. Public key cryptography, also known as asymmetric cryptography, consists of an algorithm in which each entity wishing to exchange messages safely has a public and private key pair. In a nutshell, when "Bob" knows Alice's public key, he can use Alice's public key to encrypt information. This information can only be decrypted with Alice's private key. Alice can respond to Bob using public key to encrypt the information. In this way, Bob and Alice are sure that as long as everyone keeps his private key truly private, he can establish a secure communication channel using the corresponding key pairs. SSH works in much the same way. Servers and clients have public and private keys. Once a secure communication channel is established, the server can authenticate the client. Although there are many authentication methods, the password and SSH public key authentication are the most commonly used for accessing the remote server. The server can authenticate clients using their public keys. The public key must be associated with a user account. SSH client keys can be generated using the "sshkeygen" command. SSH also allows you to transfer ports to and from servers.
Summary
The purpose of this article is to give the reader an introductory overview on HPC. We have tried to cover most of the more important aspects in order to get the first contact with the HPC as well as some of the errors and warnings about developing or running software, parallel or not. A more in-depth discussion of parallel computing was also presented during these conference notes, as well as a brief introduction to modern computer architecture in a simple way that should be enough to get you off the road. HPC aspiring, beginner or enthusiast.