Platforms
Your goal may be to write a particular software package to be as portable
as possible, or you may know that the software will only ever run on a
particular target platform, perhaps because it requires specific functionality
which is available only on that platform. In either case, Elepar's
tools can help. Here are some of the issues that must be addressed
for different platforms.
GRID
A grid is a relatively persistent, geographically distributed collection
of heterogeneous, high-performance computers (which may themselves be parallel).
As well as providing high availability for high performance applications,
a grid can be used to effectively exploit, share, and integrate distributed
resources of many different kinds, including data repositories and archives,
skilled personnel, instruments, and specialized peripherals. Grids
bring the same challenges as any heterogeneous platform, plus others related
to crossing administrative and security domains, and finding the resources
needed for a particular task. In some cases, resource providers may
charge for the use of those resources, requiring both a means for users
to find inexpensive resources, and for users and providers to establish
a reliable mechanism for reimbursement.
Peer-to-peer
Peer-to-peer generally describes smaller compute or peripheral devices
interacting with one another, often circumventing the need for an intermediate
server. The peer relationships are usually on-demand, more fleeting
than in persistent grid-like systems, and will often exist primarily to
exchange or transfer information, but can also be used to help speed up
large compute tasks.
Parallel/Clusters
Parallel and cluster environments are collections of relatively tightly
coupled computers which have one primary goal: High speed computing.
To achieve this, high-bandwidth, low-latency networks are often (but not
always) employed to keep each processor adequately fed, and special programming
techniques are used to further hide latency and optimize memory bandwidth.
These collections are often treated as a unit, as far as purchase and replacement
goes, and as a partitionable collection as far as usage goes.
Distributed
Distributed systems can range from grids of geographically distributed
high-performance computers to machines sitting on individual desks around
the office. They may be persistent, or may be treated as integrated
systems for only hours at a time (e.g. at night when not otherwised being
used for other tasks). The goal may be to access data or other resources
at/near their source, or to harness idle compute resources. Programming
issues include dealing adequately with the high communication latencies,
achieving security to keep out unwanted access while facilitating authorized
access, and dealing with potential interruptions resulting from equipment
failure and/or withdrawal of resources by their individual owners or managers.
Uniprocessors
When considering portability, it is important to consider that there may
be times when only traditional uniprocessor platforms are available.
In such cases, it is desireable for the same program which runs efficiently
in a concurrent parallel or distributed environment also effectively utilize
the compute and memory resources in a localized uniprocessor platform such
as a workstation or PC. If, in addition, the tools used to create
the program are useful even in a uniprocessor environment (such as Elepar's
SC tools), then true portability across the spectrum of platform results
from any programming task.