Panda
Panda is a portability layer that runs on a variety
of platforms (Solaris, SP-2, CM-5, Parix, Myrinet/BSDI, Amoeba).
It provides threads and communication primitives.
Panda is used to build higher
level systems on: e.g. Orca,
MPI,
PVM,
CRL have been ported to Panda.
Panda's design philosophy is described in, for instance, the
PDPTA96
paper.
Threads
Thread synchronisation is done by monitors; moreover, the thread package
is integrated with the communication system in that the network
devices are polled from the idle loop.
Latterly, the thread package favoured by the Panda implementations is
OpenThreads,
which has been ported to a number of platforms:
- BSDI/pentium
- Linux/pentium
- Solaris/Sparc
- Amoeba/Sparc
See the
Frontiers96
paper for our philisophy on the integration of thread package and
communication. This also deals with the polling vs. interrupt question.
Communication
Communication is provided at a high level: (reliable) RPC, (reliable)
Message Passing and (totally ordered) Group Communication.
Panda takes care of fragmentation and reliability if the underlying system
software does not provide it.
Message receipt is done via upcalls.
Compilation
Panda programs are best compiled with the script
panc.
Documentation
As things go with software, the Panda interface and implementation go
through a development and modification cycle.
- Panda3.0
(also available in postscript)
The current stable version.
Ports to:
- Amoeba (FLIP, ATM, Myrinet, FastEthernet)
- Solaris (UDP)
- SP-2
- BSDI/OS (Myrinet/FM, Myrinet/LFC, FastEthernet, ATM, UDP, TCP)
- Linux (Myrinet/FM, UDP)
- Panda4.0
(also available in postscript)
The current development version. New: message vectors so it is
possible to directly read from/write into the application data
structures.
Ports to:
- BSDI/OS (Myrinet/LFC, TCP)
- Linux (Myrinet/LFC)
- Linux (Myrinet/GM/LFC-wrapper)
On DAS-2, the standard Panda layer for Myrinet uses
a Panda-LFC implementation that is identical to the
implementation on DAS-1. However, the LFC implementation is
very different: it is a thin wrapper layer on top of GM.
Currently, GM does not provide good support for SIGIO
interrupts with delays, so the user must poll or receive
from the application.
Ports under development to:
- Solaris (UDP)
- BSDI/OS (UDP)
- Linux (UDP)
Ports to be done mañana:
- Panda2.2
Phased out: this version is no longer supported
Ports to:
- Amoeba (FLIP, ATM, Myrinet, FastEthernet)
- Solaris (UDP)
- Parix PowerExplorer
- SP-2
Distribution
There is no current supported distribution of Panda. However, you may
download a snapshot of the source tree, where
you can also download the version of LFC that runs on top of GM, and the
synchronization package daslib.
This page is maintained by Rutger Hofman.
Last modified:
Tue Jul 21 16:36:19 MET DST 1998