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