| |
Below are some of the software packages I developed (or co-developed where noted) in my research work and
projects. Most of them are open-source or source-available, free for
non-commercial/research use.
Packages are listed in, roughly, reverse chronological order of their
development.
|
Package |
Description |
Impact |
Link |
|
μsik |
Novel, unifying PDES kernel, combining Time Warp, conservative,
state-saving, reverse-computation, etc. |
Being used in a range of applications, including plasma physics &
neurological simulations |
» |
|
libSynk |
High-performance library for scalable time-synchronized
communication |
Employed by most parallel network simulators, including pdns,
GTNetS & DaSSF; scales to more than 1500 processors |
» |
|
RCC |
Reverse C Compiler -- takes C functions as input and produces
their equivalent forward+reverse pairs |
Among the first of its kind for automated reversal of general
high-level language programs |
» |
|
Veil |
Novel network emulation system, to route real application traffic
over simulated networks; works with pdns |
Affords higher fidelity than other emulators; tested with
Netscape, ssh2, and other popular applications |
» |
|
FDK |
(Co-author) High-performance implementation of a subset of the
DoD High Level Architecture Runtime Infrastructure |
One of the first efficient HLA RTI implementations; well-known in
DoD HLA community; among the few source-available |
» |
|
PARINO |
Highly flexible, scalable framework for parallel / distributed,
branch-and-cut Mixed Integer Programming; incorporates novel cut management |
Well cited in parallel MIP literature; being evaluated for use on
supercomputers |
» |
|
TeD |
Network modeling language; compiler & runtime for automated Time
Warp-based simulation |
Pioneering parallel network modeling system; widely distributed;
precursor to state-of-the-art packages such as DaSSF |
» |
|
Jane |
Client/server-based control for remote experiments |
Used for several remote demonstrations of experiment scenarios
with combinations of pdns, GTNetS, FDK, Qualnet,
Opnet, etc. |
» |
|
GTW++ |
C++ API for GTW Time Warp system |
|
» |
|
PNNI |
Comprehensive models of ATM PNNI protocols |
Helped analyze complex routing strategies, robustness, etc. of
PNNI standards |
» |
|
dbpvm |
Debugging environment for PVM |
Among the very first debugging environments developed for PVM |
» |
μsik is a micro-kernel for
parallel and distributed simulation. It is a culmination of my
decade-long experience in developing high-performance systems for
parallel/distributed discrete event simulation, encompassing numerous
techniques including a combination of conservative
synchronization, optimistic synchronization (both state-saving and
reverse computation), and others such as aggregate event processing.
Application models are free to adopt any of these techniques, any
combination of them or even switch among them dynamically!
μsik uses
libSynk for distributed time synchronization.
See the μsik homepage for additional
information.
libSynk is a small, portable synchronization library that runs on Windows,
Mac & Unix/Linux platforms. It includes automatic routing software
that seamlessly & transparently routes messages across shared memory,
Myrinet, LAN (TCP) and WAN (TCP). It also includes easily
reconfigurable software for asynchronous distributed reduction, and a
virtual time synchronization module built using asynchronous distributed
reductions. libSynk was developed due to lack of equivalent software
that seamlessly and efficiently works across many heterogeneous
sub-networks -- I found existing messaging implementations such as PVM and
MPI either hard to extend or too complex to modify. libSynk is compatible with FDK applications (see
FDK below).
See the libSynk homepage for additional
information.
See the NMS-ACE
homepage for information on this package.
PARINO is a parallel branch-and-cut Mixed Integer Program solver,
incorporating novel distributed cut management. I developed it in collaboration
with Martin Savelsbergh of GT ISyE in 1995-997. PARINO solves all
problems of the Mixed Integer Programming Library (MIPLIB) in parallel,
with significant speedup. It is written in C++, is portable across multiple architectures
(e.g. IBM-SP2, DEC-Alpha network) and messaging platforms, and is extensible through
an object-oriented finite state machine framework.
See the PARINO technical report for additional information.
Programs generally are compiled to execute only forwards, but not in
reverse. RCC is a compiler that can be used to transform C programs
to execute forwards as well as backwards. It is a source-to-source
compiler that takes any set of C functions and generates the forward and
backward executing versions of each function.
See the RCC
homepage for additional information.
Veil is a novel approach to network emulation in which real distributed
applications can be made to communicate over simulated networks. It
consists of a system library for capturing, synchronizing and rerouting
network data from unmodified distributed applications over a
synthetic/virtual network. Among Veil's unique characteristics are:
(a) it captures data from the application at the highest layer, even
before they are converted to packets (b) it controls time advances to make
the communication behavior highly repeatable (c) it doesn't require
root/administrator access.
See the Veil
homepage for additional information.
The FDK is a software library kit for developing federated distributed
simulations. The underlying core of FDK was written by me.
The core includes: messaging
(FM), distributed reductions (RM), time management (TM), and session
management (SESSION). I have also made extensive performance
improvements, most of which have been published in conference
publications.
I made the first public release of the FDK in 1998, and maintained it for
several years. FDK presently has several users worldwide.
See the FDK
homepage for additional information. See also
libSynk above.
TeD is a scalable simulation system, which includes a language definition,
a compiler, and simulation runtime. Several users worldwide have
successfully used TeD to model and simulate large-scale
telecommunication network models. I developed the TeD system from
scratch in 1996 in response to the new needs of scalability in network
modeling and simulation. The TeD system work is one my most
successful projects.
The TeD project spawned off other closely related research by our TeD
collaborators, including the following:
- Reverse computation-based optimistic synchronization, in the
GTW
system
at Georgia Tech and the
ROSS system at RPI
- Conservative synchronization for large-scale network models, in
the
DaSSF
system (Nops, earlier) at Dartmouth College
- TeD-like Java library for network models, in the
SSF system at Renesys.
See the
TeD homepage for additional information.
Jane is a Java-based client-server system for remotely initiating and
controlling any distributed application across the Internet.
See the Jane
homepage for additional information.
See the GTW
homepage for additional information.
As demonstration of TeD capabilities, I developed TeD models of the ATM
Forum's PNNI protocol standard, which is one of the most complex QoS
signaling protocols devised to date. The biggest challenge was in
demonstrating that (a) it is possible to develop complex, large-scale,
rollback-based models, and (b) optimistic parallel execution (with
incremental state saving techniques) can in fact work with low overhead
in large-scale experiments. On large network sizes, I demonstrated
near-linear parallel execution speedup using optimistic synchronization.
See the
PNNI Model homepage
for additional information.
dbpvm is a debugging environment and Motif-based graphical interface (DBVPM) for
Parallel Virtual Machine (PVM). I developed dbpvm as part of my Master's thesis in 1993.
It has been distributed to many institutions worldwide.
See the dbpvm
release directory for additional information.
|