Solutions of the problems in High Performance Computing
High Performance Computing which is also called HPC uses computer clusters to solve large scale problems. When we are dealing with multiple computers to solve one single problem then we can face lots of problems and in this report I will discuss how we can solve those problems. As every problem can have more than one solution that depends upon in which situation we are applying that solution. The selection of solution for that particular problem depends upon the situation. In this report, I will discuss the introduction of each solution.
Solutions in High Performance Computing:
Here are the most commonly problems and their solutions while having High Performance Computing.
The most common problem in High Performance computing is scheduling of resources. There are many scheduling algorithms that may be used to solve scheduling issues in high performance computing. Like First Come First Serve in which the first job has high priority, Short Job First in which shortest job has high priority so it depends upon the environment where we are implementing high performance computing .
In high performance computing workload and resource management are two important aspects that are provided at the service level of grid computing. Load balancing algorithms can be divided into two categories; static and dynamic load balancing. In static load balancing we know the work load at the start and we can calculate how much effort required and distribute the work load among available clusters. Static load balancing provides good performance on homogenous clusters in which we have an equal work load. On the other hand, we have many problems when we have dynamic work load . In these conditions we use dynamic load balancing. There are many algorithms for dynamic load balancing like round-robin or biasing algorithm. It is very difficult to suggest an optimal solution for dynamic load balancing just because of its dynamic nature .
When we have parallel computing then we can face the problem of race condition. One of the solutions to race condition could be to ensure that the programs have exclusive rights to the resources that are required. For acquiring those resources locking can be used. There are different locking techniques can be implemented like POSIX record locks, mandatory locks, which are based on System V’s mandatory locking scheme to avoid race condition .
Availability is the important aspect of High Performance Computing. Availability is the measure of the system that how much amount of time that system is available. A system may not be in available condition due to hardware or software failure. The solution to the failure of the system we have to make the system fault tolerant. For avoiding hardware failures, we can build fault tolerant hardware where systems are decomposed into modules; by dividing system into modules failures are isolated to modules and we can prevent the activation of other failures, redundant hardware also can be used. For making software fault tolerant, wrapper and rejuvenation techniques can be used .
Programming for parallel computers
As High performance computing has a complex architecture which makes programming more complex. We can solve this issue by introducing new programming models. These programming models can play a role of bridge between programming and hardware. The balance between productivity and efficiency is the key while implementing these programming models .
 M. L. Fisher, “Optimal Solution of Scheduling Problems Using Lagrange Multipliers: Part I,” OPERATIONS RESEARCH, vol. 21, no. 5, pp. 1114-1127, Sep. 1973.
 M. Naiouf, L. De Giusti, F. Chichizola, and A. De Giusti, “Dynamic Load Balancing on Non-homogeneous Clusters,” in Frontiers of High Performance Computing and Networking–ISPA 2006 Workshops, 2006, p. 65–73.
 C. Kopparapu, Load Balancing Servers, Firewalls, and Caches. New York: John Wiley & Sons, Inc., 2002.
 D. A. Wheeler, “Secure Programming for Linux and Unix HOWTO,” p. 00, 2003.
 F. Piedad, High Availability: Design, Techniques, and Processes. 2001.
 W. D. Gropp, “Performance driven programmimg models,” in Massively Parallel Programming Models, 1997. Proceedings. Third Working Conference on, 1997, pp. 61-67.
 K. Asanovic et al., others, The landscape of parallel computing research: A view from berkeley. Citeseer, 2006.