Dartmouth SSF

Overview
Press Room
Documents & Papers
Download
FAQs
People
Related Links

Dartmouth SSF FAQs

Q: What is Dartmouth SSF (DaSSF)?

Dartmouth SSF, or DaSSF in short, is a simulator capable of but not limited to simulating very large-scale multi-protocol communication networks. DaSSF is a C++ implementation of Scalable Simulation Framework (SSF), which is a new open standard for discrete-event simulation of large, complex systems.

The SSF modeling API is small and general, independent of simulator implementations, and supporting diverse models. SSF models are standard-compliant C++ or Java programs: they allow to use all language constructs. SSF API hides all details of simulator internals (threads, processors, event queues, and synchronization) from the modeler. SSF modelers use five base classes: Entity, inChannel, outChannel, Process, and Event. These five classes form a self-contained design pattern for constructing process-oriented, event-oriented, and hybrid simulations.

DaSSF is a parallel simulator using conservative simulation protocols to synchronize execution on different processors. Dartmouth SSF is ultra fast, and demonstrably capable of simulating extremely large network models. DaSSF runs under a variety of architectures including SGI IRIX, SUN Solaris, DEC OSF, Linux and Windows. Parallelization is fully supported through both shared memory and/or distributed memory on all these platforms.

Q: Who should use DaSSF?

DaSSF is not just another implementation of SSF. DaSSF has the following advantages over other SSF implementations:

  • It is a true parallel simulator that is designed to accelerate simulation execution and expand memory space limitations. DaSSF has demonstrated good speedups for much complicated applications.
  • It is so far the only SSF implementation that can run both on shared memory multiprocessors and distributed-memory machines. DaSSF can also run on a combination of shared-memory and distributed-memory configurations. And it has been ported to a wide variety of machine platforms.
  • DaSSF provides its own threading mechanism that reduces the overhead of process context switching cost as well as the memory consumption. DaSSF supports real process-oriented simulation world view without suffering from much overhead comparing to simulators using event-oriented simulation paradigm.
  • DaSSF is designed to be able to cope with large-scale simulation. It is thrifty in memory usage. This allows DaSSF to run very large simulation models. DaSSF is suitable for serious modelers of large complex systems.

These merits come with some unavoidable complications to the standard SSF implementations.

  • DaSSF is in C++ rather than Java which is a higher level programming language. For example, Java provides automatic garbage collection mechanism, especially helpful for naive programmers. DaSSF however imposes strict and meticulous rules in the use of memory space. Violations to these rules may result in unfriendly program crashes and require time and expertise to debug. On the other hand, this can be also regarded as an advantage. C++ is still so much faster than Java, even with its garbage collection turned off. The judicious use of memory results in higher efficiency which is critical for large-scale simulations as the memory is already tight.
  • DaSSF relies on user's annotations for source-to-source translations. The translation is needed to insert threading mechanisms in the source code. This is another price to pay for better performance and memory utilization. The user needs to identify those places that require annotations in the source code. It is just a small learning curve for users to overcome. We believe that the added complication pays well in the gains in performance.

Q: Who develops, supports, and maintains DaSSF? Is it really free?

Dartmouth SSF is designed by David M. Nicol and Jason Liu. More people are involved in developing models using DaSSF, giving suggestions and reporting bugs. DaSSF is under constant revision to make it more stable and faster.

While DaSSF is still under constant development, new versions are coming out quickly as we believe if there is a major bug fix or functional update. We do support old versions while we will mostly concentrate on the new releases. Modelers should consult release note of later versions to see if the bug is known or has fixed already before submitting bug report.

Dartmouth SSF is free software. It is distributed with open source, though there's no restrictions for packages used by DaSSF or developed using DaSSF. We'd like the software to be free so that people can utilize our research to its full potential as it should be this way. Read the copyright notice or contact us if you're still not sure.

Q: What machines support DaSSF?

Dartmouth SSF is capable of running on a variety of architectures. It can be configured to run either as a stand-alone program (without MPI) in which parallelization is supported through shared-memory on these platforms (single-node SMP model). Or, it can be configured as a distributed program (with MPI) where synchronization of the system components is provided by message passing (distributed mode). Note that the distribute mode includes all configurations that are possible in the single-node SMP model. Actually, DaSSF running in the distribute mode can be regarded as a collection of DaSSF sub-systems running in the single-node SMP mode interconnected via message passing. The following is a list of platforms that we have tested to support DaSSF in the single-node (SMP) mode:

  • SGI Origin 2000/IRIX
  • SGI PowerChallenge/IRIX
  • SGI Indy/IRIX
  • Other SGI workstations running IRIX
  • SUN Enterprise/Solaris
  • Other SUN Workstations running Solaris or SunOS
  • Compaq AlphaServer/Digital True64
  • Old DEC Alpha Workstation/OSF
  • INTEL i386/Linux
The following is a list of platforms we have tested to run DaSSF in distributed model:
  • SGI Origin 2000/IRIX
  • SUN Enterprise/Solaris
  • Cluster of Linux (SMP) Workstations
  • Cluster of Alpha Workstations
  • Compaq AlphaServer Cluster/Digital True64
Dartmouth SSF should be able to run on most standard UNIX workstations. For platforms not enlisted here, there remains a good chance that DaSSF should be able to run with only modest modification.

Q: How can I obtain a copy of DaSSF?

Dartmouth SSF can be obtained from the Dartmouth SSF Homepage, which contains the latest version and most up-to-date information. Be sure to have the latest public release, since it contains major bug fixes and functional update. While we do support older versions, we are mostly concentrating on the newest release.

If you do worry about copyright, it's good to know that Dartmouth SSF is free software. It is important to know what you can do with DaSSF before downloading. That is, you should read the copyright information first.

Q: What version of DaSSF should I use?

Dartmouth SSF is constantly changing, though we take great responsibility to have new versions compatible with the old ones. DaSSF evolves with more functionality and should be easier to use. DaSSF in most parts complies with Scalable Simulation Framework (SSF) Specification. You should expect change when the spec is updated.

The newest version contains major bug fixes and most up-to-date functionality. It is possible when adding more functions into the package, new bugs are introduced and undetected. While we try to withhold the new release until we think it's stable for public use, we still cannot eliminate such mistakes. Your best bet would be to keep a frequent visit at Dartmouth SSF Homepage for latest updates.

Always check out DaSSF homepage first. It should contain the latest version for you to download.

Q: Where should I send bug reports?

Dartmouth SSF is at its development age. It is quite possible that a bug is coming from the runtime system. However, before you decide to submit a bug report, make sure it is not a known mistake that is from the misuse of DaSSF objects. We suggest you first check out the user's manual to see if there is warning similar to the symptoms you just experienced.

Dartmouth SSF is under constant development and revision. People had much success using DaSSF for fairly complicated simulations in the past. It is not to say that DaSSF is bullet-proof. While it is fair to say that DaSSF is stable, you should expect bugs especially when you are exercising those parts that are not used frequently by other modelers.

Contact Jason Liu at jasonliu@cs.dartmouth.edu for any possible bug you suspect. We would appreciate if you can give us as much information about the code you're developing under DaSSF as possible. Also, tell us what platform you are running DaSSF. It would be of great help if you can describe the problem to us clearly.

While we are eager to give you a quick answer or even fix of the bug, it is not always the case. Expect some turn-around time which may be quite extended depending on the profoundness of the problem.

Q: How should I learn about using DaSSF?

Dartmouth SSF is a C++ binding of Scalable Simulation Framework. Knowing C++ is a prerequisite. Always resort to the User's Manual for better understanding of DaSSF. Also, studying SSF specification will of great help. It'll better to illustrate the use of Dartmouth SSF classes using examples. Check out Dartmouth SSF Homepage for examples explaining how to use DaSSF.


Copyright 1998-2001, 
Dartmouth College. All rights reserved.

Created by Jason Liu on May 26, 1999.