
        Adsmith 1.8:  An Efficient Object-Based DSM Environment on PVM
 
                        Author:  William W. Y. Liang
 
           Institute of Computer Science & Information Engineering
                   National Taiwan University, Taipei, Taiwan
 
                   Copyright (C) 1996 All Rights Reserved

                                  NOTICE

      Permission to use, copy, modify, and distribute this software and
      its documentation for any purpose and without fee is hereby granted
      provided that the above copyright notice appear in all copies and
      that both the copyright notice and this permission notice appear in
      supporting documentation.

      The author makes no representations about the suitability of this
      software for any purpose.  This software is provided ``as is''
      without express or implied warranty.

-------------------------------------------------------------------------------
System Description

  Adsmith is an object-based DSM, which is built completely on top of PVM
  using C++. In Adsmith, the shared memory consists of many shared objects. 
  Accesses to the shared memory must go through these shared objects. 
  Adsmith provides primitives to create and allocate shared objects, 
  accesses to shared objects, and operations to synchronize among processes. 
  Adsmith also incorporate many techniques to optimize its performance, 
  including supports for release memory consistency protocol, load/store-like 
  memory accesses, bulk transfer, nonblocking and atomic accesses, etc. 
  Adsmith is currently in version 1.8. In this version, it supports only 
  computations in a homogeneous environment. It has been tested to work 
  under the following platforms: Sun OS, IBM PC running Linux, .....
  The compiler used is GNU C++.


Obtaining The Package

  This distribution contains source codes, simple examples, and a run-time
  support for Adsmith. 

  You can obtain the package through the following location (URL)

  	http://archi1.ee.ntu.edu.tw/~wyliang/adsmith/adsm1.8.0.tar.gz
  or
	ftp://archi5.ee.ntu.edu.tw/pub/adsmith/adsm1.8.0.tar.gz

  After the file is retrieved, then use

	gunzip adsmith.tar.gz
	tar xvf adsmith.tar

  to generate the directory ./adsmith .


Building

  Before building the packages, make sure that g++, PVM3.3.9 or higher 
  version of PVM have been properly installed, the PVM environments are 
  well set, and that "aimk" provided by PVM can be found in your searching 
  path. Then simply type 

	cd adsmith; make

  The daemon executable 'adsmd', the library 'libadsm.a', and the example 
  program executables will be made.


Paths

  The locations of the related files are listed as follows.

  Include file	: adsmith/include/adsm.h 
  Library file	: adsmith/lib/$PVM_ARCH/libadsm.a 
  Daemon	: $PVM_ROOT/bin/$PVM_ARCH/adsmd
  Manual pages	: adsmith/man

  Examples programs will be put in $PVM_ROOT/bin/$PVM_ARCH.

  The detail document is available at 

  	http://archi1.ee.ntu.edu.tw/~wyliang/adsmith/interface.ps.gz
  and
	ftp://archi5.ee.ntu.edu.tw/pub/adsmith/interface.ps.gz


Developing Application Programs

  To develop application programs under Adsmith, the user should include 
  the header file "adsm.h" in the programs and link the adsmith library 
  "libadsm.a" and the PVM libraray "libpvm3.a". The compiled programs must 
  exist in the path where your PVM system can find, i.e. in the executable
  program path set by 'ep' option in the PVM hostfile, so they can be 
  spawned correctly. (Note: the generated executable programs are also 
  PVM programs.)


Before Running The Application Programs

  Before Adsmith can activate, the underlying PVM system must be started 
  first. Shared memory functionalities are only provided within processes 
  spawned from the same ancestor, which starts up Adsmith automatically. 
  The system will be automatically terminated when all of the enrolling 
  processes have terminated.


Adsmith Gateway

  Adsmith programs can be called by other (non-Adsmith) application only 
  through a gateway program 'adsmgate'. This is because of the automatic
  startup mechanism used by Adsmith. For example, under pvm console, (note 
  that pvm console is itself a PVM program but not a Adsmith program,) 
  the Adsmith example program 'hello' can only be spawned in this way:

	pvm> spawn adsmgate sample

  instead of

	pvm> spawn sample 

  where 'pvm>' is the pvm console prompt.


Contact

  Any comments, questions, suggestions, or bug reports are welcome.
  Please send e-mail to:

        wyliang@orchid.ee.ntu.edu.tw

