The TimeWarp parallel synchronization protocol has been the topic of research for a number of years, and many modifications/optimizations have been proposed and analyzed. However, these investigations are generally conducted in distinct environments with each optimization reimplemented for comparative analysis. Besides the obvious waste of manpower to re-implement TimeWarp and its affiliated optimizations, the possibility for a varying quality of the implemented optimizations exists. The WARPED project is an attempt to make a freely available TimeWarp simulation kernel that is easily ported, simple to modify and extend, and readily attached to new applications. The primary goal of this project is to release a system that is freely available to the research community for analysis of the TimeWarp design space. In order to make WARPED useful, the system must be easy to obtain, available with running applications, operational on several processing platforms, and easy to install, port, and modify.
The WARPED system is implemented in C++ and utilizes the object oriented capabilities built into that language. Even if one is interested in WARPED only at the system interface level, they must understand concepts such as inheritance, virtual functions, and overloading. The benefit of this type of design is that the end user can redefine and reconfigure functions without directly changing kernel code. Any system function can be overloaded to fit the user's needs and any basic system structure can be redefined. This capability allows the user to easily modify the system queues, GVT algorithms, or practically anything else. This flexibility makes the WARPED system a powerful tool in TimeWarp experimentation.
Another benefit to the object oriented nature of the WARPED system is that by its very design it is simple to ``plug in'' a different kernel to get an extremely efficient sequential simulation. A sequential simulation kernel is supplied in the WARPED distribution in addition to the TimeWarp kernel. If an application is developed on a stand-alone machine using the sequential kernel, the transition to running the simulation on the parallel kernel should be relatively simple.