Dartmouth SSF (DaSSF)

Version 1.0.5

Release Note

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.

New Features

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
osfwith gnu ld noyesldscript, untested
without gnu ld yesnoprivate globals
osf-thread noyes-ffixed-9
irixnative compiler noyessprocs() with PR_SALL
gnu compiler yesnoprivate globals, crashed otherwise
irix-threadnative compiler noyesgetspecific()
gnu compiler noyesboth -ffixed-23 and getspecific() crashed!
solariswith gnu ld noyesldscript, untested
without gnu ld yesnoprivate globals
solaris-thread noyes-ffixed-g5 crashed!
linuxwith gnu ld noyesldscript
without gnu ld yesnountested, impossible?
linux-thread noyesgetspecific()
cygwin32 yesnoprivate 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.

Architectures Supported

As for this release, DaSSF supports the following architectures:

Parallelization is fully supported on all these platforms.

Directory Structure of the Distribution

The distribution should contain following directories listed alphabetically. Some of the directories may not be part of your distribution for the sake of limited space.

appexample applications
binutility executables (internal use)
configconfigurations for all supported platforms (internal use)
docdocumentations
includestandard header files
libruntime libraries
p4DaSSF preprocessing scripts (internal use)
srcsource code for runtime system
tsttests

Installation

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.

  1. make reset
    This will tide up the directory tree, just in case;
  2. ./configure
    This step configures DaSSF with the correct configuration. It will check all the system requirements for DaSSF on the architecture you are using.
  3. make
    This step will build the runtime system;
  4. make examples
    This step is optional unless you want to build all the examples distributed with the release;

Local Configuration

Local 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
    

Global definitions

The following switches are listed along with their usage. These pre-definitions are universal, independent of the architecture selected:

--enable-debug
--disable-debug
Enable/disable debugging information. (Default: --disable-debug)
--enable-scrutiny
--disable-scrutiny
Enable/disable runtime checking. This may slow down simulation when enabled. (Default: --enable-scrutiny)
--enable-stats
--disable-stats
Enable/disable collection of statistics. (Default: --enable-stats)
--with-central
--without-central
--with-collective
--without-collective
--with-distributed
--without-distributed
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
--without-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
--without-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)

Definitions for SGI/IRIX

--with-fastm
--without-fastm
Link with/without fast math library (-lfastm). (Default: --without-fastm)
--with-dplace
--without-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)

Definitions for SUN/SOLARIS

--with-sparc-V9
--without-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

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.


Copyright 1998-1999 Dartmouth College. Comments send to web master.