Dartmouth SSF (DaSSF) is a process-oriented, conservatively synchronized parallel simulator, which is designed for but not exclusively for simulating very large scale multiprotocol communication networks. DaSSF is a C++ implementation of Scalable Simulation Framework (SSF), with the goal of achieving scalability, manageability, and portability for complex simulation models. Check out Dartmouth SSF Homepage for more detail.
This is version 1.0 of Dartmouth Scalable Simulation Framework. This distribution includes source code for the runtime system, example applications, as well as supporting documentation.
DaSSF is free software, see copyright notice at the end of this page for copying permission. DaSSF is distributed with open source. You can download Dartmouth SSF here.
InstantOutChannel class is provided that supports zero-time delay channel. Instead of having a positive channel delay, the user can provide a positive appointment delay. Refer to ssfext/instoutchannel.h for detail.
Also, modifications to the runtime system is made to allow global variables being shared, though there are still technical difficulties making it as fast as it was before on some of the platforms. On some platforms, it seems to be the only way to have the global variables shared using threads. The following table summarizes the up-to-date information on all available architectures.
| Architecture | Manage Shared* |
Manage Private** |
Comments | |
|---|---|---|---|---|
| osf | with gnu ld | no | yes | ldscript, untested |
| without gnu ld | yes | no | private globals | |
| osf-thread | no | yes | -ffixed-9 | |
| irix | native compiler | no | yes | sprocs() with PR_SALL |
| gnu compiler | yes | no | private globals, crashed otherwise | |
| irix-thread | native compiler | no | yes | getspecific() |
| gnu compiler | no | yes | both -ffixed-23 and getspecific() crashed! | |
| solaris | with gnu ld | no | yes | ldscript, untested |
| without gnu ld | yes | no | private globals | |
| solaris-thread | no | yes | -ffixed-g5 crashed! | |
| linux | with gnu ld | no | yes | ldscript |
| without gnu ld | yes | no | untested, impossible? | |
| linux-thread | no | yes | getspecific() | |
| cygwin32 | yes | no | private globals | |
* "Manage Shared" refers to whether special mechanism must be provided to make global variables shared across multiple processors. An "yes" answer means global variables must be treated differently in order to make it shared. This is taken cared of in the runtime system. However, in user code, this means global variables are actually private (because there's no such mechanism available to the user). An "no" answer means global variables are shared by default. Therefore, user global variables are shared as expected.
** "Manage Private" means some special mechanism must be provided to access data that is private to the running processor. Only runtime system should concern about this option.
As for this release, DaSSF supports the following architectures:
| app | example applications |
| bin | utility executables (internal use) |
| config | configurations for all supported platforms (internal use) |
| doc | documentations |
| include | standard header files |
| lib | runtime libraries |
| p4 | DaSSF preprocessing scripts (internal use) |
| src | source code for runtime system |
| tst | tests |
The basic compilation steps are as follows, though further configuration can be performed by passing arguments in step 1. We'll get into that in the next session.
make reset./configuremakemake examplesLocal configuration can be perform at the time when you're running ./configure, by passing arguments to this program. The system will then set the correct flags and put them in a configuration file (i.e. config/Makefile.common). This file will be included by all Makefiles, which in turn affects the compilation. When you configure a new set of options, remember to recompile the runtime system and your application. For example, if you want to disable debugging and runtime checking so to run simulation faster, you may do the following:
% ./configure --disable-debug --disable-scrutiny
% make reset; make
% cd your-app-dir; make reset; make depend; make
The following switches are listed along with their usage. These pre-definitions are universal, independent of the architecture selected:
--enable-debug |
Enable/disable debugging information.
(Default: --disable-debug) |
--enable-scrutiny |
Enable/disable runtime checking. This may slow down simulation
when enabled.
(Default: --enable-scrutiny) |
--enable-stats |
Enable/disable collection of statistics.
(Default: --enable-stats) |
--with-central |
Different stealing schemes adopted by the runtime system. It's
experimental. Ignore it if you don't know what it is doing.
(Default: --with-central) |
--with-native |
Compiling rts with native compiler or not, if the native compiler
is available. Using native compiler is usually faster than GNU
C/C++ (at least, it is so on SGI).
(Default: --with-native) |
--with-thread |
Using POSIX threads or UNIX processes. This is used to choose the
SSF architecture used. See the table for supported architectures
for detail.
(Default: --without-thread) |
--with-fastm |
Link with/without fast math library (-lfastm).
(Default: --without-fastm) |
--with-dplace |
Whether or not use memory placement library. This feature is only
available on SGI Origin 2000, the system will detect whether you
can use it or not automatically.
(Default: --without-dplace) |
--with-sparc-V9 |
Whether or not use compiler options for Sparc V9
processors. Compilation error will result if the machine does not
allow V9 ISA.
(Default: --without-sparc-V9) |
Copyright (c) 1998, 1999 Dartmouth College
Permission is hereby granted, free of charge, to any individual or institution obtaining a copy of this software and associated documentation files (the "Software"), to use, copy, modify, and distribute without restriction, provided that this copyright and permission notice is maintained, intact, in all copies and supporting documentation.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL DARTMOUTH COLLEGE BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.