Final year research project report submitted to the Faculty of Engineering University of Malaya in partial fulfillment of the requirement to be Bachelor’s degree of Engineering
DEPARTMENT OF MECHANICAL ENGINEERING ENGINEERING FACULTY UNIVERSITY OF MALAYA October 2008
ABSTRACT Nowadays almost every industry needs fast processing power especially in engineering field. Manipulating high-resolution interactive graphics in engineering, such as in aircraft engine design, has always been a challenge in terms of performance and scalability because of the sheer volume of data involved. 
Linux clustering is
popular in many industries these days. With the advent of clustering technology and the growing acceptance of open source software, supercomputers can now be created for cheaper cost of traditional high-performance machines. Due to these conditions compromise, the number, variety, and specialized configurations of these machines are increasing dramatically with 32 – 128 node clusters being commonplace in science labs. 
As a result, the intent of this research is to use the latest open source
software and computers available in the computer laboratory of Mechanical Engineering Department, University of Malaya to design and build a High Performance Linux Cluster. This paper will present the clustering fundamentals and details of how to setup the cluster. High performance cluster is mostly parallel programming. This paper shows how to run parallel programming with Message Passing Interface (MPI). High-quality implementations for MPI are freely available for FORTRAN, C, and C++ for Linux. In this research, MPICH 2 is used as MPI implementation. Extensive research will be carried out by benchmarking the performance of the cluster with the standard test codes. The results gained will use to compare with the existing clusters. So far, setup of a simple cluster is done and preliminary results are obtained. Further investigation is going on.
TABLE OF CONTENTS
Title Abstract Table of Contents List of Figures List of Tables Chapter 1 Introduction 1.1 Introduction 1.2 Research Objective Chapter 2 Literature Study 2.1 What is a Cluster 2.2 Linux, Open Sources and Cluster 2.3 High Performance Computing 2.4 Benchmark of Linux Cluster Chapter 3 Methodology 3.1 Methodology 3.2 Work Plan Chapter 4 Problems Faced 4.1 Operating System 4.2 Managing Cluster Chapter 5 Preliminary Result 5.1 Prerequisites 5.2 Creating a Simple Linux Cluster 5.3 Testing on Conjugate Gradient Solver List of References Appendix A – Open Sources Location Appendix B – How to Change Hostname on Linux Machines Appendix C – Tabulated Data of Testing on CG Solver Page i ii iii iii 1 1 2 3 3 3 4 5 6 6 8 9 9 9 10 10 11 14 16 17 18 19
LIST OF FIGURES
Figure 2.2.1- Logical view of HPC Figure 3.3.1- Flow of the project methodology Figure 5.3.1- Speedup versus processes for different grid
LIST OF TABLES
Table 3.2.1- Gantt chart of project
CHAPTER 1 INTRODUCTION
1.1 INTRODUCTION Computing power and capabilities have been dramatically increased over the years, but none as dramatic as recently. Beforetime mathematical computations were facilitated by lines drawn in the sand. This eventually led to the abacus, the first mechanical device for assisting with mathematics. Much forward time came punch cards which function as a mechanical method to assist with tabulation. Ultimately, this led to ever more complex machines, mechanical and electronic, for computation. Early computers used small toroids to store hundreds or thousands of bits of information in an area the size of a broom closet. Modern computers use silicon to store billions of bits of information in a space not much larger than a postage stamp. However, as computers become more capable, certain constraints still arise. Early computers worked...