Professional Documents
Culture Documents
Hardware, software and programming elements of a modern computer system are briefly
introduced in the context of parallel processing.
Computing problems:
A modern computer is an integrated system consisting of machine hardware, an instruction set
system software, application programs, and user interfaces. The computer is driven by real-life
problems demanding cost effective solutions.
For numerical problems in science and technology, the solution demand complex mathematical
formulations and intensive integer or floating point computation.
For alphanumerical problems in business and government, solutions demand large database
management
For artificial intelligence (AI) problems, the solutions demands logic inferences and symbolic
manipulations.
Hardware Resources:
A modern computer system demonstrates its power through coordinated efforts by hardware
resources, an operating system, and application software.
Special hardware interfaces are often built into I/O devices such as display terminals, work
stations, optical page scanners, modems, network adaptors, printers and plotters, are connected to
mainframe computer directly or through local or wide-area networks
Software interface programs are needed. These software interface includes file transfer systems,
editors interrupt handlers etc. It greatly facilitate the portability of user programs on different
machine architecture
Operating System:
An effective OS manages the allocations and de-allocation of resources during the execution of
user program. Standard benchmark programs are needed for performance evaluation.
Mapping is bidirectional process matching algorithmic structure with hardware architecture and
vice versa.
Efficient mapping will benefit the programmer and produce better source codes
The mapping of algorithmic and data structures onto the machine architecture includes processor
scheduling, memory maps, interprocessor communications etc.
Compiler Support:
There are three compiler upgrade approaches
Preprocessor
Precompiler
Parallelizing compiler
A preprocessor uses a sequential compiler and a low-level library of the target computer to
implement high level parallel constructs.
The Precompiler approach requires some program flow analysis, dependence checking, and
limited optimizations towards parallelism detection.
The parallelizing compiler demands a fully developed parallelizing or vectorizing compiler
which can automatically detect parallelism in source code and transform sequential code into
parallel constructs.
The efficiency of the binding process depends on the effectiveness of the preprocessor, the
precompiler, the parallelizing compiler, the loader, and the OS support.
Often compiler directives are inserted into the source code to help the compiler do a better job.