Parent Directory
|
Revision Log
Revision 1 - (view) (download) (as text)
| 1 : | mark | 1 | |
| 2 : | %%% Local Variables: | ||
| 3 : | %%% mode: latex | ||
| 4 : | %%% TeX-master: t | ||
| 5 : | %%% End: | ||
| 6 : | |||
| 7 : | % Introduction | ||
| 8 : | % Parallel archtectures | ||
| 9 : | % Network topologies | ||
| 10 : | % Linux Beowulf clusters | ||
| 11 : | % Parallel programming, the message passing interface | ||
| 12 : | % Performance metrics | ||
| 13 : | % Rocks installation | ||
| 14 : | % Rocks system administration | ||
| 15 : | % Job scheduling, SGE | ||
| 16 : | % Cluster benchmarking tools | ||
| 17 : | % Lab assignments | ||
| 18 : | |||
| 19 : | %% Author: T. M. Jonassen | ||
| 20 : | |||
| 21 : | \chapter{Beowulf Clusters} | ||
| 22 : | |||
| 23 : | \section{Introduction} | ||
| 24 : | |||
| 25 : | |||
| 26 : | This chapter will cover some aspects of what is known as \emph{high performance computing} (HPC). | ||
| 27 : | The main concern will be adminitrative, configuration and benchmarking tasks, but | ||
| 28 : | some basic background | ||
| 29 : | on parallel programming and parallel algorithm analysis is also covered. In earlier day | ||
| 30 : | on had to set up all clustering software from scratch, unless one bought a cluster solution | ||
| 31 : | from a company who had specialiced on clusters. With the succsesful development of Linux | ||
| 32 : | and open source solutions one now have ``Linux cluster distributions'' such as | ||
| 33 : | Rocks and Oscar, SuSE Linux also provide cluster solutions among others. | ||
| 34 : | |||
| 35 : | \section{Parallel archtectures} | ||
| 36 : | |||
| 37 : | In this section we will look into some types of parallel archtectures including different | ||
| 38 : | network topologies. The discussion here is quite general, but in the section on Linux | ||
| 39 : | Beowulf clusters we will be more specific on hardware setup. The section on Rocks | ||
| 40 : | installation is adapted to the lab setup at OUC. | ||
| 41 : | |||
| 42 : | \subsection{Flynn's taxonomy} | ||
| 43 : | |||
| 44 : | Flynn's taxonomy is a classification scheme for parallel computers based on whether the | ||
| 45 : | parallelism is exhibited in the instruction stream and/or in the data stream. This | ||
| 46 : | classification results in four main categories, SISD (single instruction single data), | ||
| 47 : | SIMD (single instruction multiple data), MISD (multiple instruction single data) and | ||
| 48 : | MIMD (multiple instruction multiple data). | ||
| 49 : | |||
| 50 : | |||
| 51 : | %%% FIG %%% | ||
| 52 : | |||
| 53 : | %% The figure should be centered!! How to do this by \epsfig? (I have brougt no documentation with me.) | ||
| 54 : | \begin{center} | ||
| 55 : | %%\begin{figure}[ht] | ||
| 56 : | \includegraphics[scale=0.5]{tmj-img/eps/flynn.eps} | ||
| 57 : | %%\caption{A schematic view of Flynn's taxonomy.} | ||
| 58 : | %%\end{figure} | ||
| 59 : | \end{center} | ||
| 60 : | |||
| 61 : | \subsection{Vector computers} | ||
| 62 : | |||
| 63 : | We will first clearify some standard terminology for parallel machines. A vector computer | ||
| 64 : | is a computer whose instruction set includes instructions for operations on vectors as well | ||
| 65 : | as scalars. There are basically two different ways to obtain this. One approach is to use a | ||
| 66 : | pipelined vector processor. This processor streams vectors from memory and piplined arithmetic | ||
| 67 : | units do the operations. Such architecture was used in the well known Cray-1 and in Cyber-205. | ||
| 68 : | |||
| 69 : | The other approach is to use a processor array. A processor array vector computer consists | ||
| 70 : | of a set of identical syncronized processing elements capable of simultaneous performing the | ||
| 71 : | same operation on different data. The processor array is controled by a front-end CPU. The | ||
| 72 : | processing elemnts are often simpler than regular CPUs, but each processing element often | ||
| 73 : | has it's own private memory. The motivation for such a construction was that the price of | ||
| 74 : | control units, as used in a standard CPU, was relatively high and that a large fraction | ||
| 75 : | of a scientific computations are data parallel. | ||
| 76 : | |||
| 77 : | %%% FIG %%% | ||
| 78 : | |||
| 79 : | However, there are several shortcommings of processor arrays: | ||
| 80 : | |||
| 81 : | \begin{itemize} | ||
| 82 : | \item Many problems are not strict data parallel, and do not run efficienly on a processor | ||
| 83 : | array architecture. | ||
| 84 : | |||
| 85 : | \item A processor array can only execute a single instruction at a time, so conditionally | ||
| 86 : | code causes a drop in efficiency, in particular, nested conditionally code is bad. | ||
| 87 : | |||
| 88 : | \item A processor array is a naturally single-user system, and is not easily modified | ||
| 89 : | into a multiuser system. | ||
| 90 : | |||
| 91 : | \item A processor array system does not scale well, that is, an array with a large number | ||
| 92 : | of processing elements needs very high bandwidth communication between the components in | ||
| 93 : | the system. | ||
| 94 : | |||
| 95 : | \item Processor arrays are buildt using custom VLSI and constructors of prosessor arrays | ||
| 96 : | can not use the improvements in performance and cost improvements of comodity CPU's done by | ||
| 97 : | big manufactures such as Intel. | ||
| 98 : | |||
| 99 : | \item One of the motivations for this type of architecture was the high cost of the control | ||
| 100 : | unit. This argument is no longer valid. | ||
| 101 : | \end{itemize} | ||
| 102 : | |||
| 103 : | For the reasons above, processor arrays are not considered an option for a general-purpose | ||
| 104 : | parallel computer, but only for special task parallel systems. | ||
| 105 : | |||
| 106 : | \subsection{Multiprocessors} | ||
| 107 : | |||
| 108 : | \section{Network topologies} | ||
| 109 : | |||
| 110 : | Processors in a parallel computer may communicate in two different ways, via a \emph{shared media} | ||
| 111 : | or via a \emph{switched media}. | ||
| 112 : | |||
| 113 : | |||
| 114 : | |||
| 115 : | \section{Linux Beowulf clusters} | ||
| 116 : | |||
| 117 : | %% From www.beowulf.org: | ||
| 118 : | |||
| 119 : | The website \texttt{www.beowulf.org} gives the following history of Linux Beowulf Clusters: | ||
| 120 : | |||
| 121 : | {\it | ||
| 122 : | In late 1993, Donald Becker and Thomas Sterling began sketching the outline of a commodity-based | ||
| 123 : | cluster system designed as a cost-effective alternative to large supercomputers. In early 1994, | ||
| 124 : | working at CESDIS under the sponsorship of the HPCC/ESS project, the Beowulf Project was started. | ||
| 125 : | |||
| 126 : | The initial prototype was a cluster computer consisting of 16 DX4 processors connected by channel | ||
| 127 : | bonded Ethernet. The machine was an instant success and their idea of providing COTS | ||
| 128 : | (Commodity Off The Shelf) based systems to satisfy specific computational requirements | ||
| 129 : | quickly spread through NASA and into the academic and research communities. | ||
| 130 : | |||
| 131 : | Some of the major accomplishments of the Beowulf Project will be chronicled below, but a | ||
| 132 : | non-technical measure of success is the observation that researchers within the High | ||
| 133 : | Performance Computer community now refer to such machines as "Beowulf Class Cluster | ||
| 134 : | Computers." Beowulf clusters are now recognized as genre within the HPC community. | ||
| 135 : | |||
| 136 : | The next few paragraphs will provide a brief history of the Beowulf Project and discussion | ||
| 137 : | of certain aspects or characteristics of the Project that appear to be key to its success. | ||
| 138 : | |||
| 139 : | The Center of Excellence in Space Data and Information Sciences (CESDIS) is a division | ||
| 140 : | of the non-profit University Space Research Association (USRA). CESDIS is located at the | ||
| 141 : | Goddard Space Flight Center in Greenbelt Maryland and supported in part by the NASA Earth | ||
| 142 : | and Space Sciences (ESS) project. | ||
| 143 : | |||
| 144 : | One of the goals of the ESS project is to determine the applicability of massively parallel | ||
| 145 : | computers to the problems faced by the Earth and space sciences community. The first Beowulf | ||
| 146 : | was built to address problems associated with the large data sets that are often involved | ||
| 147 : | in ESS applications. | ||
| 148 : | |||
| 149 : | Cluster is a widely-used term meaning independent computers combined into a unified system | ||
| 150 : | through software and networking. At the most fundamental level, when two or more computers | ||
| 151 : | are used together to solve a problem, it is considered a cluster. Clusters are typically | ||
| 152 : | used for High Availability (HA) for greater reliability or High Performance Computing (HPC) | ||
| 153 : | to provide greater computational power than a single computer can provide. | ||
| 154 : | |||
| 155 : | Beowulf Clusters are scalable performance clusters based on commodity hardware, on a | ||
| 156 : | private system network, with open source software (Linux) infrastructure. The designer | ||
| 157 : | can improve performance proportionally with added machines. The commodity hardware can | ||
| 158 : | be any of a number of mass-market, stand-alone compute nodes as simple as two networked | ||
| 159 : | computers each running Linux and sharing a file system or as complex as 1024 nodes | ||
| 160 : | with a high-speed, low-latency network. | ||
| 161 : | |||
| 162 : | Class I clusters are built entirely using commodity hardware and software using standard | ||
| 163 : | technology such as SCSI, Ethernet, and IDE. They are typically less expensive than | ||
| 164 : | Class II clusters which may use specialized hardware to achieve higher performance. | ||
| 165 : | |||
| 166 : | Common uses are traditional technical applications such as simulations, biotechnology, | ||
| 167 : | and petro-clusters; financial market modeling, data mining and stream processing; and | ||
| 168 : | Internet servers for audio and games. | ||
| 169 : | |||
| 170 : | Beowulf programs are usually written using languages such as C and FORTRAN. They | ||
| 171 : | use message passing to achieve parallel computations. | ||
| 172 : | } | ||
| 173 : | |||
| 174 : | \section{Parallel programming, the message passing interface} | ||
| 175 : | |||
| 176 : | We will briefly discuss a little on parallel programming, parallel algorithms and the message passing interface known as MPI. | ||
| 177 : | |||
| 178 : | \subsection{A simple example on medusa.vlab.iu.hio.no} | ||
| 179 : | |||
| 180 : | We will show how to compile and run a simple parallel program on \texttt{medusa.vlab.iu.hio.no}. | ||
| 181 : | |||
| 182 : | Create a file named \texttt{machines} in your home directory containing the names of | ||
| 183 : | the nodes, each repated twice, with only one name on each line. This file is used by the | ||
| 184 : | job launcher facility \texttt{mpirun} for some exercises later on. There is a systemwide | ||
| 185 : | \texttt{machines}-file on the system, used by default by \texttt{mpirun}. | ||
| 186 : | %% Machines file | ||
| 187 : | \begin{verbatim} | ||
| 188 : | compute-0-0 | ||
| 189 : | compute-0-0 | ||
| 190 : | compute-0-1 | ||
| 191 : | compute-0-1 | ||
| 192 : | .... | ||
| 193 : | .... Supressed to save paper. | ||
| 194 : | .... | ||
| 195 : | compute-0-14 | ||
| 196 : | compute-0-14 | ||
| 197 : | compute-0-15 | ||
| 198 : | compute-0-15 | ||
| 199 : | \end{verbatim} | ||
| 200 : | |||
| 201 : | Create a file named \texttt{hostfile} in your home directory containing the names of | ||
| 202 : | the nodes and the frontend. This file is used later on for a benchmarking program in some | ||
| 203 : | exercises. | ||
| 204 : | |||
| 205 : | %% Host file | ||
| 206 : | \begin{verbatim} | ||
| 207 : | medusa.local | ||
| 208 : | compute-0-0.local cpu=2 | ||
| 209 : | compute-0-1.local cpu=2 | ||
| 210 : | .... | ||
| 211 : | .... Supressed to save paper | ||
| 212 : | .... | ||
| 213 : | compute-0-14.local cpu=2 | ||
| 214 : | compute-0-15.local cpu=2 | ||
| 215 : | \end{verbatim} | ||
| 216 : | |||
| 217 : | %% Additions to .bashrc | ||
| 218 : | Add the following to your \texttt{.bashrc} file to be sure that you use the correct \texttt{mpirun}. | ||
| 219 : | There are several different \texttt{mpirun}'s on the system. | ||
| 220 : | \begin{verbatim} | ||
| 221 : | alias gnumpirun=/opt/mpich/gnu/bin/mpirun | ||
| 222 : | \end{verbatim} | ||
| 223 : | |||
| 224 : | %% Program file | ||
| 225 : | The following is a small \texttt{C} program, write a file containing the | ||
| 226 : | code and call the file \texttt{phello.c}: | ||
| 227 : | \begin{verbatim} | ||
| 228 : | #include <stdio.h> | ||
| 229 : | #include <stdlib.h> | ||
| 230 : | #include <unistd.h> | ||
| 231 : | #include "mpi.h" | ||
| 232 : | |||
| 233 : | int main(int argc, char **argv) | ||
| 234 : | { | ||
| 235 : | int rank, size; | ||
| 236 : | char *hostname; | ||
| 237 : | |||
| 238 : | hostname = (char *)malloc((size_t)80*sizeof(char)); | ||
| 239 : | MPI_Init(&argc,&argv); | ||
| 240 : | MPI_Comm_rank(MPI_COMM_WORLD,&rank); | ||
| 241 : | MPI_Comm_size(MPI_COMM_WORLD,&size); | ||
| 242 : | gethostname(hostname,79); | ||
| 243 : | printf("Hello world! I am prosess %d of %d | ||
| 244 : | on the machine %s.\n",rank,size,hostname); | ||
| 245 : | MPI_Finalize(); | ||
| 246 : | return(0); | ||
| 247 : | } | ||
| 248 : | \end{verbatim} | ||
| 249 : | |||
| 250 : | We will look further into some aspects of MPI later, but the above program | ||
| 251 : | is so simple, and contains only four MPI calls, so we will explain them here. | ||
| 252 : | |||
| 253 : | The call \texttt{MPI\_Init} initializes the MPI environment, and must be called | ||
| 254 : | before any other MPI call (with one exception). Each of the $n$ processors involved in a MPI | ||
| 255 : | program is assigned a unique integer in the range $0$ to $n-1$. This unique number | ||
| 256 : | is returned by the call \texttt{MPI\_Comm\_rank}. The call \texttt{MPI\_Comm\_size} | ||
| 257 : | gives the total number of processors involved, and the call \texttt{MPI\_Finalize} terminates | ||
| 258 : | the MPI environment. No MPI call can be used after this call, and every prosess must call | ||
| 259 : | this function before exiting. | ||
| 260 : | |||
| 261 : | %% Makefile | ||
| 262 : | It is always a good idea to use the \texttt{make} facility. The following | ||
| 263 : | file can be used as a template for a \texttt{Makefile} for small MPI programs on \texttt{medusa}: | ||
| 264 : | \begin{verbatim} | ||
| 265 : | CC = /usr/bin/gcc | ||
| 266 : | PROGRAMS = phello | ||
| 267 : | INCLUDES = -I/opt/mpich/gnu/include | ||
| 268 : | LIBS = -L/opt/mpich/gnu/lib -lmpich | ||
| 269 : | |||
| 270 : | all: $(PROGRAMS) | ||
| 271 : | |||
| 272 : | .c: ; $(CC) $(INCLUDES) $@.c $(LIBS) -o $@ | ||
| 273 : | |||
| 274 : | clean:: | ||
| 275 : | -rm -f $(PROGRAMS) *.o | ||
| 276 : | \end{verbatim} | ||
| 277 : | |||
| 278 : | It is of course possible to compile the program by hand on the commandline, | ||
| 279 : | but this is not recommended. | ||
| 280 : | |||
| 281 : | The program is run with \texttt{mpirun} and the argument to the flag \texttt{-np} | ||
| 282 : | determines how many processors that should be used (including the frontend). | ||
| 283 : | |||
| 284 : | Here is a sample output from a run on four processors with a minimum arguments to \texttt{mpirun}: | ||
| 285 : | |||
| 286 : | \begin{verbatim} | ||
| 287 : | [torejo@medusa hello]$ gnumpirun -np 4 phello | ||
| 288 : | Hello world! I am prosess 0 of 4 on the machine medusa.iu.hio.no. | ||
| 289 : | Hello world! I am prosess 3 of 4 on the machine compute-0-2.local. | ||
| 290 : | Hello world! I am prosess 2 of 4 on the machine compute-0-1.local. | ||
| 291 : | Hello world! I am prosess 1 of 4 on the machine compute-0-0.local. | ||
| 292 : | [torejo@medusa hello]$ | ||
| 293 : | \end{verbatim} | ||
| 294 : | |||
| 295 : | Here is another example with more flags: | ||
| 296 : | |||
| 297 : | \begin{verbatim} | ||
| 298 : | [torejo@medusa hello]$ gnumpirun -np 4 -nolocal phello | ||
| 299 : | Hello world! I am prosess 3 of 4 on the machine compute-0-3.local. | ||
| 300 : | Hello world! I am prosess 2 of 4 on the machine compute-0-2.local. | ||
| 301 : | Hello world! I am prosess 1 of 4 on the machine compute-0-1.local. | ||
| 302 : | Hello world! I am prosess 0 of 4 on the machine compute-0-0.local. | ||
| 303 : | \end{verbatim} | ||
| 304 : | |||
| 305 : | And yet another example with even more flags: | ||
| 306 : | |||
| 307 : | \begin{verbatim} | ||
| 308 : | [torejo@medusa hello]$ gnumpirun -v -machinefile ~/machines -np 4 -nolocal phello | ||
| 309 : | running /home/torejo/parallell-kurs/hello/phello2 on 4 LINUX ch_p4 processors | ||
| 310 : | Created /home/torejo/parallell-kurs/hello/PIyPDWK15665 | ||
| 311 : | Hello world! I am prosess 1 of 4 on the machine compute-0-0.local. | ||
| 312 : | Hello world! I am prosess 3 of 4 on the machine compute-0-1.local. | ||
| 313 : | Hello world! I am prosess 2 of 4 on the machine compute-0-1.local. | ||
| 314 : | Hello world! I am prosess 0 of 4 on the machine compute-0-0.local. | ||
| 315 : | \end{verbatim} | ||
| 316 : | |||
| 317 : | \begin{todo} | ||
| 318 : | Log into \texttt{medusa.vlab.iu.hio.no}, compile and run the above program with a varying number | ||
| 319 : | of processors. Use both the default \texttt{machines} file, and the machines file in your | ||
| 320 : | home directory. Make sure that you learn to use \texttt{mpirun} command, and read the manual page | ||
| 321 : | for the command. Determine how the file \texttt{machines} affects the processors chosen for the | ||
| 322 : | parallel execution of the program. | ||
| 323 : | \end{todo} | ||
| 324 : | |||
| 325 : | |||
| 326 : | \section{Performance metrics} | ||
| 327 : | |||
| 328 : | Programs running on parallel machines normally contains a lot of computations and run for a | ||
| 329 : | long time. Hence it is important to be able to predict the \textsl{speedup} or the gain of | ||
| 330 : | parallelizing a problem and how much we can gain by increase the number of processors. Such | ||
| 331 : | analysis is done by performance metrics, and we will briefly scratch the surface of this | ||
| 332 : | subject here. | ||
| 333 : | |||
| 334 : | Operations performed by a parallel program can be divided into three categories: | ||
| 335 : | \begin{itemize} | ||
| 336 : | \item Operations that must be performed sequentially | ||
| 337 : | \item Operations that can be done in parallel | ||
| 338 : | \item Parallel overhead consisting of communication operations and redundant computations | ||
| 339 : | \end{itemize} | ||
| 340 : | |||
| 341 : | We define speedup denoted by $\Psi$ as the ration between sequential execution time denoted by | ||
| 342 : | $S(n)$ and parallel execution time $P(n,p)$. Here $n$ denote the problem size (the amount of data | ||
| 343 : | involved) and $p$ the number of processors: | ||
| 344 : | $$\Psi(n,p)=\frac{S(n)}{P(n,p)}$$ | ||
| 345 : | The efficiency of a parallel program, denoted by $\epsilon(n,p)$ measures the processor utilization | ||
| 346 : | and is defined as the speedup divided by the number of processors used: | ||
| 347 : | $$\epsilon(n,p)=\frac{\Psi(n,p)}{p}=\frac{S(n)}{p\times P(n,p)}$$ | ||
| 348 : | There are some well-known performance prediction formulas, Amdahl's law that can be used to decide | ||
| 349 : | whether a program merits parallelization, the Karp-Flatt metric that can be used to decide if the | ||
| 350 : | barrier to speedup is the amount of inherrently sequentally code or parallel overhead. The | ||
| 351 : | Gustafson-Barsis's law is a metric to evaluate parallel performance. The isoefficiency metric | ||
| 352 : | evaluates the scalability of a parallel algorithm, that is how to achieve higher performance | ||
| 353 : | when the number of processors and the problem sizes are increased. | ||
| 354 : | |||
| 355 : | |||
| 356 : | \subsection{Amdahl's law} | ||
| 357 : | |||
| 358 : | Let $\Psi$ denote the maximal speedup achivable by a parallel computer and let $f$ denote | ||
| 359 : | the fraction of operations that must be performed seqentially, so $0\leq f\leq 1$, and let | ||
| 360 : | $p$ denote the number of processors. Then | ||
| 361 : | \beq | ||
| 362 : | \Psi\leq\frac{1}{f+\frac{1-f}{p}} | ||
| 363 : | \eeq | ||
| 364 : | |||
| 365 : | |||
| 366 : | \subsection{Karp-Flatt metric} | ||
| 367 : | |||
| 368 : | Suppose a parallel computation exhibits a speedup $\Psi$ using $p$ processors, where $p\geq 2$, | ||
| 369 : | then the exprementally determined serial fraction $e$ if defined by | ||
| 370 : | \beq | ||
| 371 : | e=\frac{\frac{1}{\Psi}-\frac{1}{p}}{1-\frac{1}{p}} | ||
| 372 : | \eeq | ||
| 373 : | |||
| 374 : | \subsection{Gustafson-Barsis's law} | ||
| 375 : | |||
| 376 : | Consoder a parallel program solving a problem of size $n$ on $p$ processors. Let $s$ denote the | ||
| 377 : | fraction of total execution time spent in serial code. Then the maximum speedup $\Psi$ is given | ||
| 378 : | by | ||
| 379 : | \beq | ||
| 380 : | \Psi\leq p+(1-p)s | ||
| 381 : | \eeq | ||
| 382 : | |||
| 383 : | |||
| 384 : | \subsection{The isoefficiency metric} | ||
| 385 : | |||
| 386 : | Consider a problem of size $n$ on $p$ processors with a efficiency $\epsilon(n,p)$. Let | ||
| 387 : | $C=\epsilon(n,p)/(1-\epsilon(n,p))$, let $T(n,1)$ denote the sequential execution time | ||
| 388 : | and let $T_0(n,p)$ denote the parallel overhead. Then, in order to maintain the same level | ||
| 389 : | of efficency when the number of processors is increased, the problem size must be increased | ||
| 390 : | such that | ||
| 391 : | \beq | ||
| 392 : | T(n,1)\geq C T_0(n,p) | ||
| 393 : | \eeq | ||
| 394 : | is satisfied. | ||
| 395 : | |||
| 396 : | \section{Rocks installation} | ||
| 397 : | |||
| 398 : | |||
| 399 : | The following section describes the installation of the Rocks Cluster distribution. | ||
| 400 : | The current version is 4.2, and this differs a little from the previous versions as | ||
| 401 : | this version is the first with a graphical install interface. The previous versions | ||
| 402 : | had a textbased installation interface. | ||
| 403 : | |||
| 404 : | The official homepage for Rocks can be found at: | ||
| 405 : | \begin{verbatim} | ||
| 406 : | http://www.rocksclusters.org/ | ||
| 407 : | \end{verbatim} | ||
| 408 : | |||
| 409 : | \subsection{Physical assembly of a cluster} | ||
| 410 : | |||
| 411 : | \textbf{\large Supported Hardware} | ||
| 412 : | |||
| 413 : | Since Rocks is built on top of RedHat Linux releases, actually uses the CentOS-distribution, Rocks supports | ||
| 414 : | all the hardware components that RedHat supports, but only supports the x86, x86\_64 and IA-64 architectures. | ||
| 415 : | |||
| 416 : | \textbf{Processors} | ||
| 417 : | \begin{itemize} | ||
| 418 : | \item x86 (ia32, AMD Athlon, etc.) | ||
| 419 : | \item x86\_64 (AMD Opteron and EM64T) | ||
| 420 : | \item IA-64 (Itanium) | ||
| 421 : | \end{itemize} | ||
| 422 : | |||
| 423 : | \textbf{Networks} | ||
| 424 : | \begin{itemize} | ||
| 425 : | \item Ethernet (All flavors that RedHat supports, including Intel Gigabit Ethernet) | ||
| 426 : | \item Myrinet (provided by Myricom) | ||
| 427 : | \item Infiniband (provided by Voltaire) | ||
| 428 : | \end{itemize} | ||
| 429 : | |||
| 430 : | |||
| 431 : | \noindent\textbf{\large Minimum Hardware Requirements} | ||
| 432 : | |||
| 433 : | \textbf{Frontend Node} | ||
| 434 : | \begin{itemize} | ||
| 435 : | \item Disk Capacity: 20 GB | ||
| 436 : | \item Memory Capacity: 640 MB | ||
| 437 : | \item Ethernet: 2 physical ports | ||
| 438 : | \end{itemize} | ||
| 439 : | |||
| 440 : | |||
| 441 : | \textbf{Compute Nodes} | ||
| 442 : | \begin{itemize} | ||
| 443 : | \item Disk Capacity: 20 GB | ||
| 444 : | \item Memory Capacity: 640 MB | ||
| 445 : | \item Ethernet: 1 physical port | ||
| 446 : | \end{itemize} | ||
| 447 : | |||
| 448 : | \begin{figure}[ht] | ||
| 449 : | \begin{center} | ||
| 450 : | \includegraphics[scale=0.5]{rocks-img/eps/cluster.eps} | ||
| 451 : | \caption{The schematic setup of a Rocks cluster. The additional application message passing network is not required.\label{rocks.eps}} | ||
| 452 : | \end{center} | ||
| 453 : | \end{figure} | ||
| 454 : | |||
| 455 : | %% \begin{center} | ||
| 456 : | %% \includegraphics[scale=1.0]{tmj-img/eps/img_1857.eps} | ||
| 457 : | %% \end{center} | ||
| 458 : | |||
| 459 : | \begin{figure}[ht] | ||
| 460 : | \begin{center} | ||
| 461 : | \epsfig{file=tmj-img/eps/img_1857.eps} | ||
| 462 : | \caption{Medusa in the first stage with frontend and eight compute nodes.\label{img_1857.eps}} | ||
| 463 : | \end{center} | ||
| 464 : | \end{figure} | ||
| 465 : | |||
| 466 : | |||
| 467 : | \begin{figure}[ht] | ||
| 468 : | \begin{center} | ||
| 469 : | \includegraphics[scale=1.0]{tmj-img/eps/img_1862.eps} | ||
| 470 : | \caption{Medusa in the first stage with frontend and eight compute nodes. The cabeling on | ||
| 471 : | the back of the cluster rack.\label{img_1862.eps}} | ||
| 472 : | \end{center} | ||
| 473 : | \end{figure} | ||
| 474 : | |||
| 475 : | \begin{figure}[ht] | ||
| 476 : | \begin{center} | ||
| 477 : | \includegraphics[scale=1.0]{tmj-img/eps/IMG_2093.eps} | ||
| 478 : | \caption{Medusa in the second stage with frontend and 14 compute nodes.\label{img_2093.eps}} | ||
| 479 : | \end{center} | ||
| 480 : | \end{figure} | ||
| 481 : | |||
| 482 : | \begin{figure}[ht] | ||
| 483 : | \begin{center} | ||
| 484 : | \includegraphics[scale=1.0]{tmj-img/eps/IMG_2097.eps} | ||
| 485 : | \caption{Medusa in the second stage with frontend and 14 compute nodes and a larger Gb switch. The cabeling on | ||
| 486 : | the back of the cluster rack.\label{IMG_2097.eps}} | ||
| 487 : | \end{center} | ||
| 488 : | \end{figure} | ||
| 489 : | |||
| 490 : | |||
| 491 : | \subsection{Frontend installation} | ||
| 492 : | |||
| 493 : | |||
| 494 : | \begin{center} | ||
| 495 : | \includegraphics[scale=0.5]{rocks-img/eps/splash.eps} | ||
| 496 : | \end{center} | ||
| 497 : | |||
| 498 : | \begin{center} | ||
| 499 : | \includegraphics[scale=0.5]{rocks-img/eps/20.eps} | ||
| 500 : | \end{center} | ||
| 501 : | |||
| 502 : | \begin{center} | ||
| 503 : | \includegraphics[scale=0.5]{rocks-img/eps/21.eps} | ||
| 504 : | \end{center} | ||
| 505 : | |||
| 506 : | \begin{center} | ||
| 507 : | \includegraphics[scale=0.5]{rocks-img/eps/22.eps} | ||
| 508 : | \end{center} | ||
| 509 : | |||
| 510 : | \begin{center} | ||
| 511 : | \includegraphics[scale=0.5]{rocks-img/eps/23.eps} | ||
| 512 : | \end{center} | ||
| 513 : | |||
| 514 : | \begin{center} | ||
| 515 : | \includegraphics[scale=0.5]{rocks-img/eps/24.eps} | ||
| 516 : | \end{center} | ||
| 517 : | |||
| 518 : | \begin{center} | ||
| 519 : | \includegraphics[scale=0.5]{rocks-img/eps/25.eps} | ||
| 520 : | \end{center} | ||
| 521 : | |||
| 522 : | \begin{center} | ||
| 523 : | \includegraphics[scale=0.5]{rocks-img/eps/26.eps} | ||
| 524 : | \end{center} | ||
| 525 : | |||
| 526 : | \begin{center} | ||
| 527 : | \includegraphics[scale=0.5]{rocks-img/eps/27.eps} | ||
| 528 : | \end{center} | ||
| 529 : | |||
| 530 : | \begin{center} | ||
| 531 : | \includegraphics[scale=0.5]{rocks-img/eps/28.eps} | ||
| 532 : | \end{center} | ||
| 533 : | |||
| 534 : | \begin{center} | ||
| 535 : | \includegraphics[scale=0.5]{rocks-img/eps/29.eps} | ||
| 536 : | \end{center} | ||
| 537 : | |||
| 538 : | \begin{center} | ||
| 539 : | \includegraphics[scale=0.5]{rocks-img/eps/30.eps} | ||
| 540 : | \end{center} | ||
| 541 : | |||
| 542 : | \begin{center} | ||
| 543 : | \includegraphics[scale=0.5]{rocks-img/eps/31.eps} | ||
| 544 : | \end{center} | ||
| 545 : | |||
| 546 : | \begin{center} | ||
| 547 : | \includegraphics[scale=0.5]{rocks-img/eps/32.eps} | ||
| 548 : | \end{center} | ||
| 549 : | |||
| 550 : | \begin{center} | ||
| 551 : | \includegraphics[scale=0.5]{rocks-img/eps/33.eps} | ||
| 552 : | \end{center} | ||
| 553 : | |||
| 554 : | \subsection{Node installation} | ||
| 555 : | |||
| 556 : | \section{Rocks system administration} | ||
| 557 : | |||
| 558 : | \subsection{Administration models and tools} | ||
| 559 : | |||
| 560 : | \section{Job scheduling, SGE} | ||
| 561 : | |||
| 562 : | \begin{verbatim} | ||
| 563 : | http://gridengine.sunsource.net/ | ||
| 564 : | \end{verbatim} | ||
| 565 : | |||
| 566 : | \section{Cluster benchmarking tools} | ||
| 567 : | |||
| 568 : | |||
| 569 : | \section{Lab assignments} | ||
| 570 : | |||
| 571 : | \subsection{Rock installation and configuration} | ||
| 572 : | |||
| 573 : | \subsection{Job scheduling with SGE} | ||
| 574 : | |||
| 575 : | \subsection{Benchmarking Linux Beowulf clusters} | ||
| 576 : | |||
| 577 : | \subsection{Performance measurements on MPI programs} |
| Administrator | ViewVC Help |
| Powered by ViewVC 1.0.3 |