Overview of Common
Application Areas
SCIENTIFIC COMPUTATION
AND PROGRAMMING
Scientific Computation
Need for speed
Need for memory
Simulations tend to grow until they
overwhelm available resources
Optimization (faster algorithm)
Parallelization (break problems up into
chunks and solve chunks simultaneously on
different processors)
What is Scientific Computing?
Short Version
To use high-performance computing (HPC) facilities to
solve real scientific problems.
Long Version, from Wikipedia.com
Scientific computing (or computational science) is the
field of study concerned with constructing mathematical
models and numerical solution techniques and using
computers to analyze and solve scientific and
engineering problems. In practical use, it is typically the
application of computer simulation and other forms of
computation to problems in various scientific
disciplines.
What is Scientific Computing?
Engineering
Sciences Theory/Model Layer
Computer Algorithm Layer
Applied Scientific
Mathematics Science
Computing
Hardware/Software
Natural
Sciences Application Layer
From scientific discipline viewpoint From operational viewpoint
High- Scientific
Performance Computing
Parallel Computing
Computing
From Computing Perspective
What is HPC?
Computing resources which provide more than an order of
magnitude more computing power than current top-end
workstations or desktops – generic, widely accepted.
HPC ingredients:
large capability computers (fast CPUs)
massive memory
enormous (fast & large) data storage
highest capacity communication
specifically parallelized codes
visualization
Why HPC?
Can we enable integrated planning and
response to natural and man-made
disasters that prevent or minimize the
loss of life and property?
What strategies might be developed to
optimize management of complex
infrastructure systems?
Programming
Programming is simply a ‘hard-coded’ version of
software (eg. Digital watch)
A computer program is a set of instructions or
statements (also called code) to be carried out by the
computer’s CPU
Programs, or software, come in many forms which can
be broken down into three major categories; operating
systems, utilities and applications.
A program is typically composed of a main module
and submodules which are stored as a collection of
files.
Contnd…
Some of the files contain instructions for the
computer, while other files contain data.
For Windows-based PCs, some of the common
extensions for program files include the followings;
Executable Files: An executable (.exe, .com) file is
the part of a program that sends commands to the
processor. The processor executes the commands in
the file-thus the name executable file. Executable
files usually (but do not always) have the filename
extension .exe.
Contnd…
Dynamic Link Library Files: A dynamic link
library (.dll) file is a partial .exe file. A .dll file will not
run its own; instead, its commands are accessed by
another running program. Because, .dll files can
contain parts of an executable program, they provide
programmers with an effective way of breaking large
programs into small, replaceable components. This
feature makes the entire program easier to
upgrade. .dll files also can be shared by several
programs at one time.
Contnd…
Initialization Files: An initialization (.ini) file
contain configuration information, such as size and
starting point of a window, the color of the
background, the user’s name and so on. It help
programs start running or contain information that
programs can use as they run.
Help Files: A help (.hlp, .chm) file contains
information in an indexed and cross-linked format.
By including a help file, programmers can provide
the user with online help information.
Contnd…
Batch Files: A batch (.bat) file automates common
or repetitive tasks. A batch file is a simple program
that consists of an unformatted text file containing
one or more operating system commands. If you type
a batch file’s name at a command prompt, your
operating system will execute the commands of the
file.
Most program files are stored in a folder that bears
the application’s name or an abbreviation of it. Some
may be placed in other folders.
Some more issues!
Hardware/Software Interaction: Software is
the reason people purchase computers.
A program’s instructions execute as the hardware
level, mainly on the CPU.
The program may tell the CPU to retrieve a specific
piece of information from memory.
If the program tells the CPU to play a sound file,
then the program generates as interrupt.
An interrupt is a signal to the CPU to execute a series
of preprogrammed steps to response to the interrupt.
In this case the hardware would send the sound file
to the audio output device.
Code
The term code refers to statements that are written
in any programming language, as in machine code or
high-level code.
Usually binary number system.
To simplify the process of writing instructions that
computers can use.
A piece of code must be perfect (no mistake) before it
will run (hackers failed to transfer $2b recently)
Writing code provides the programmer to create
something new.
Machine Code
Any software commands that directly affect
hardware must be written in the binary
systems.
1
These s and 0s from the language of
computer hardware, this code is often called
machine code or machine language.
Might not make perfect sense for you, but
for the programmers.
Programming Languages
Apart from using binary (1,0),
programmers use programming
languages which enable the
programmers to describe a program
using a variation of basic English.
The results are saved in a file called
source code.
Compilers
After creating a piece of source code, the programmer
must convert the source code into machine code
(break it down into a series of 1s and 0s) before it can
run on a computer. The job of converting the source
code is handled by one or two types of programs;
Compiler: A compiler converts all the source code
into machine code, creating an executable file. The
output of the computer is called object code. Each
programming language requires its own compiler. (eg.
C++ requires a C++ compiler)
Interpreters
An interpreters also converts source code to machine
code.
Instead of creating an executable object code file, the
interpreter translates and then executes each line of
the program, one line at a time.
Interpreter translates code on the fly, so they have a
certain flexibility that compiles lack.
The interpreted code runs slower that compiled code
because the code must be interpreted each time it is
run, and a copy of the interpreter must accompany the
code everywhere it goes. (eg. LISP, BASIC etc.)
Thanks!
Reference: Introduction to Computers (7th
Edition) by Peter Norton