SPEAKER: Gene Cooperman
TITLE: TOP-C Model for Parallel Computing
WHEN: Friday, April 13 at 2 PM
WHERE: 149 CN
ABSTRACT:
In this talk, I will briefly (and incompletely) present the TOP-C
system (Task Oriented Parallel C/C++), in order to leave time to
discuss the central challenges for TOP-C. As its name implies, a
central concept in TOP-C is the ``computational task'', which must be
repeated in parallel. The application defines the task as a callback
function to be called by TOP-C. In order to handle non-trivial
parallelism (interaction among the results of the parallel tasks),
several other application callback functions are defined in order to
implement a parallel strategy. The full TOP-C model will be presented
in the talk.
In order to prepare for the talk, I recommend reading about TOP-C from
the home page below and its associated links. As you read, please
also think about challenges to some of the claims made by TOP-C (for
example, challenges to the central claims listed at the bottom).
HOME PAGE: http://www.ccs.neu.edu/home/gene/topc.html
Please also look at the first four links on that page:
[1]Overview (postscript)
[2]Quick Start Guide
[3]Example TOP-C Application
[4]On-line Manual
I would be pleased to entertain challenge questions that attempt to refute
my central claims. (One tests an idea best by trying to shoot it down.)
CENTRAL CLAIMS:
(1) If one has sequential code for an application and a conceptual
idea of a parallel algorithm for the code, I can often parallelize
that code with good efficiency in an afternoon. [Can you think of
some types of applications that are counter-examples?]
(2) The small number of TOP-C primitives are easy to understand and use.
[I'd be pleased to know where this is not your own impression.]
(3) Once a TOP-C application runs well in distributed memory applications,
it will run well in shared memory (e.g.: based on threads) or even
in a hybrid distributed/shared system (e.g.: cluster of dual processors),
by adding a small number of primitives, such as:
TOPC_BEGIN_ATOMIC_WRITE(0);
...
TOPC_END_ATOMIC_WRITE(0);
and:
TOPC_BEGIN_ATOMIC_READ(0);
...
TOPC_END_ATOMIC_READ(0);
and:
// Convert original global declaration: mytype myvar;
// into the equivalent of: THREAD_PRIVATE mytype myvar;
// as follows:
#define myvar TOPC_thread_private_var
typedef mytype TOPC_thread_private_var_t