Integrated Computation and Communication
(J. Wu, C. V. Srinivasan, and M. Cardei)
Funded by the NSF



This is a joint project between the Department of Computer Science and Engineering and EDSS, Inc., a local software company in South Florida. EDSS, Inc. has developed a new Technology for Integrated Computation and Communication (TICC). In this project, we investigate this new technology for parallel program development and execution in a variety of application areas.

The main motivating factors for using TICC for high performance computing (HPC) are as follows:
  1. By embedding causal communication primitives into parallel programs, one may dramatically increase communication efficiencies and make it possible for parallel processes to communicate asynchronously, and run parallel programs asynchronously based on data availability.
  2. Thus TICC-based parallel programs can run up to two orders of magnitude faster than MPI-based parallel programs.
  3. By eliminating the need for MPI and by providing a component-based, object-centered Parallel Program Development Environment (PPDE), TICC makes it possible to develop architecture-independent, easily portable parallel programs.
  4. The dynamic debugging and updating facilities for parallel processes provided by TICC have the potential to reduce the cost of design and production of parallel programs.
The above features taken together have the potential to define a new common standard for the design and development of parallel programs. There are two objectives to this study: The first is to investigate the advantages of using TICC in large, shared-memory multiprocessor environments. The second is to develop parallel programs using PPDE in a variety of application areas and do comparative performance measurements with corresponding MPI-based programs.

TICC provides a highly efficient software implementation for Causal Communication Primitives. Components like Objects, Ports, Pathways, Agents, WatchRings, ClockRings, ReadMemory, and WriteMemory, which are used in this implementation are abstractions of software entities. No specialized hardware components are needed. Development of an infrastructure for TICC by EDSS, Inc., was supported by an NSF Phase I SBIR grant during the period of January-June 2003. Development of a TICC-based PPDE was supported by an NSF Phase II SBIR grant during the 2004-2005 period. TICC is made available to programmers through an Application Programming Interface (API). It is implemented in C++. For the reasons described below, it can only be used in LINUX environments with a modified kernel.

In a multiprocessing system, every TICC object will be associated with a designated processor. Each time a message is delivered to a port, the polling process associated with the parent object of that port will be activated by TICC, in the processor assigned to that object, if it had not been already activated earlier by another port of that object. Since a message will be delivered to a port only when data that is needed for processing is ready, this will cause processes to be automatically activated based on data availability. The processor running the thread of an object will become free and available to run other processes only after the polling process of that object releases it. This is the basis of asynchronous self-scheduling in TICC.

Communication is asynchronous in TICC because any group of objects may send messages to any other group of objects at any time via its ports, provided the senders and receivers are connected to each other by TICC pathways. Message delivery is buffer-free because a new message will always arrive at a recipient only after it has fully responded to its current message. We have modified the LINUX kernel in order to enable TICC to take complete control of the scheduling process. This is the reason why TICC can run only in such modified LINUX environments.