Home|AboutUs|Accounts&Allocations|Systems|Software|HPCForum|TOP500ASIA|SSSA|Events|Documentation|HPC     
News

HPC Awareness Day
KFUPM High Performance Computing Awareness Day
Tuesday 27th January 2009
...

>> more info

HPC Orientation Workshop
Last week of February
...

>> more info
 


What is HPC ? 

HPC

"High-Performance Computing," or HPC, is the application of "supercomputers" to computational problems that are either too large for standard computers or would take too long. A desktop computer generally has had a single processing chip, commonly called a CPU. An HPC system, on the other hand, is essentially a network of nodes, each of which contains one or more processing chips, as well as its own memory.

Parallel Computing

Programs for HPC systems must be split up into many smaller "programs" called threads, corresponding to each core. To piece the larger program together, the cores must be able communicate with each other efficiently, and the system as a whole must be organized well.

Applications of HPC

A high-performance computing center is likely to deal with a large range of problems typified by the following:

  • Chemistry
    • Protein-folding attempts to determine the overall shape of a protein based on the sequence of amino acids; the effort may lead to better understanding of biological processes, and new medicines.
    • Protein-ligand interactions play a huge role in biological processes and are common targets for medicine. Refining computational models allows new medicines to be developed more efficiently.
    • Materials research helps to identify new materials, such as high-temperature superconductors, affordable electrodes for fuel cells, efficient catalysts, new methods of energy storage, etc.
  • Physics
    • Simulations of stars help astrophysicists interpret observations.
  • Environment Modeling
    • The simulation of earthquakes can be startlingly complex. These simulations can be used to predict which areas are likely to experience a large earthquake, and what the conditions will be. This work helps inform building codes, development planning, and emergency action plans.
    • Weather patterns are notoriously difficult to predict. Supercomputers model weather around the country, and weather models are particularly important during hurricane season. Additionally, new computational models may be used with old data to gauge the models' usefulness in predicting weather patterns.
    • Global climate change is a contentious topic these days, in large part due to the extreme complexity of the problem. As computational models improve, we may be better informed in our policy decisions, and able to act in a more unified manner.
  • Industry
    • Products: Prototyping is often an expensive and time-consuming process. Computer modeling can reduce the time and cost of physical prototyping and make optimization much easier. This process is essential not only for obvious industries such as the automotive, aerospace, and pharmaceutical industries, but a wide spectrum of consumer products, from dishwashers to potato chips.
    • Services: Many corporations handle large amounts of data, and deal with complex routings or decisions. Insurers, for instance, use models to calculate risk, while the oil/gas industry uses seismographic data to determine where oil and gas fields are located underground. Wal-Mart optimizes supply chains, and Fed-Ex monitors and routes packages. The financial sector uses models to spot trends and calculate risks.

HPC Glossary

This is a list of basic terms that might be used in HPC.

Autoparallelisation A technique used by a compiler to take a sequential code and distribute the work across multiple processors

Autovectorisation A technique used by a compiler to take a sequential code and replace sequences of operations by vector instructions that can be executed on a vector processor.

Batch queue A subsystem managing an HPC's workload. Users submit batch jobs to the queue to be executed when resources are available. See also Scheduler and Resource Manager

Beowulf A cluster of Linux based PC's, using commodity hardware and open source software

BLAS Basic Linear Algebra Subroutines -- a kernel of linear algebra routines usually heavily optimised by a CPU's vendor to make use performance features of that CPU. Used extensively by Lapack Bus Connection between CPU and memory and/or other peripherals.

C,C++ High level programming languages widely available on HPC computers, standardised by the ANSI committee. C is almost a subset of C++. C++ offers features such as object oriented programming, generic programming and operator overloading.

Cache Small piece of fast, expensive memory between the CPU and main memory

Cache Coherency Hardware support on SMP systems to ensure that each processor's cache has a consistent view of the data in main memory

Checkpoint The state of a running program written to a file to allow the program to restart a calculation from the point saved in the checkpoint file.

Classdesc A technology for passing objects between processes, or saving objects to files in C++. See http://parallel.hpc.unsw.edu.au/classdesc for more details.

Cluster Multiple complete computers connected via a network, and operated as a single system.

Compiler A program that translates high level source code into object code

CPU Central Processing Unit

Cygwin A suite of open source unix-like development tools for Windows based computers

Debugger A tool to interactively stop a program, step the program line by line and examine contents of the program's data

Distributed Memory A parallel computer whose processors' main memory is physically separated from each others -- contrast with shared memory

Ensemble Calculation Multiple copies of a simulation run with a different sequence of random numbers, and the results averaged to produce a more accurate statistical measure.

Flop Floating point operations per second. Addition, Subtraction and Multiplication are considered atomic floating point operations, but Divisions usually performed by combining multiplications and additions as in the long division algorithm

Fortran A very popular high level language used with HPCs. Standardised by the ANSI committee, the standards are known by the year in which the standard was released: Fortran77, Fortran90, Fortran95.

Generic Programming A technique for writing code supporting multiple types. Also known as a template. Supported in C++, and coming soon to Java.

High Performance Computer A computer whose performance exceeds that of standard workstations by at least an order of magnitude.

High Performance Fortran A distributed memory programming language based on Fortran95, abbreviated with HPF

Hyperthreading A technique of running multiple threads on a CPU so that the CPU doesn't stall when waiting for data from memory.

Interpreter A program that executes high level source code without translating it into object code first.

Java An interpreted object oriented high level language widely deployed on the Internet, but not too popular for high performance computing due to performance reasons.

Java Grande is an attempt to promote Java for High Performance Computing.

Lapack A highly efficient, open source linear algebra library widely available on high performance computers. Functions include solutions to linear equations and eigenvectors. Depends heavily on BLAS.

Latency The amount of time it takes to complete an operation - eg the time for a data packet to travel between two computers. cf bandwidth

Library A collection of precompiled (as in object code) routines that can be linked to a program.

Linker A program that links together independently compiled pieces of object code (including those residing in libraries into a single executable file).

Maui An open source scheduler

Multiple Data -- a parallel computer with each processor working independently on its own data -- cf SIMD, SPMD

MPI Message Passing Interface -- an industry standard interface for programming distributed memory computers.

Object Code Compiled machine code, that may contain references to code and data in other object files.

Object Oriented Programming A technique for attaching code to pieces of data (the combination called an object). Whilst this can be done with any language, it is easiest in languages that explicitly support OOP.

OpenMP A standard interface for distributing work across threads of a shared memory computer.

Open Source A program whose source code is available to the general public.

Operator Overloading A technique for redefining the operator symbols (+,-,*,/, etc) to do whatever the programmer wants on arbitrary typed data.

Optimiser Part of a compiler that performs a suite of basic code optimisations automatically.

Paging Transferring data from main memory to disk as part of the virtual memory subsystem.

Parallel Computer A computer having multiple CPUs

Parametric Calculation Multiple copies of a program run, each with a different set of input parameters

PBS An open source batch queuing system

Posix Threads A standard interface for controlling threads on a shared memory computer

Process A distinct task having its own state and address space. cf thread

Profiler A tool used to analyse which parts of a program are most computationally significant.

PVM Parallel Virtual Machine -- an interface for programming distributed memory computers.

RAM Random Access Memory -- the main memory is made out of RAM, so RAM sometimes stands for the main memory

Scheduler A program that controls which batch job runs next, when a resources are available.

Shell An interpreter used for executing commands typed at a keyboard, or scripts.

SIMD Single Instruction, Multiple Data -- A parallel computer performing the same operation, on different items of data at the same time. cf Vector, MIMD, SPMD

SMP A shared memory parallel computer (sometimes symmetric multiprocessor)

Software Pipelining A technique employed by a compiler for improving the performance of a CPU. Given operations that are decomposed into a sequence of steps that use distinct pieces of hardware, software pipelining arranges for the next operation to be started before the first finishes, increasing the amount of hardware used at any one time, and improving the CPUs throughput.

SPMD Single Program, Multiple Data The same program is executed on different items of data, but the operations need not be performed in lockstep (i.e. at each step (global clock tick) all processors execute the same instruction, each on a different datum) as in SIMD. MPI is an SPMD programming environment, whereas PVM is full MIMD.

SDRAM : A faster version of DRAM, mostly employed for main memory SRAM

Static RAM : A fast, expensive RAM often used for vector computers or caches

ssh Secure Shell An encryption protocol used for computer communications

Standard Template Library A standard library of containers (aggregates of objects of arbitrary type, such as vectors, lists, sets etc) for C++. Make extensive use of generic programming.

Stack An area of memory used to store arguments and local variables of subroutines and functions. As a subroutine is called, a stack frame is pushed onto the stack, allocating memory for these variables. As the subroutine exists, the stack frame is popped off, destroying the contents of these variables.

Superlinear A program that actually performs better than $n$ times faster than sequential, when run on $n$ processors. Usually due to cache effects (total cache also increases with processor count).

Swapping see Paging

Threads Independent tasks executing the same code in the same address space. Each thread has its own stack, so local variables are thread private. Global variables are shared.

Vector Computer A computer implementing instructions that work on a vector of data at once. This may be implemented as a pipeline (each operation is further decomposed into steps that each run on their own hardware), or as a SIMD processor. Vector supercomputers do not have a cache, but have very fast main memory instead, consequently outperforming commodity processor.

Virtual Memory Address space is divided up into chunks called pages. A page needs to be in physical memory when accessed by the CPU, but may be stored on disk if not needed for a while, thus freeing physical memory for other processes that need it.

Workstation A networked desktop computer running a modern multitasking operating system such as Unix or MS Windows.

X windows A graphical windows interface where the program performing the graphics (the X-windows client) may be running on a different computer to where the user is seated (called the X-server). The client and server communicate using the X libraries protocol (Xlib).

 

 
 

  © King Fahd University of Petroleum & Minerals .