The pSather Frequently Asked Questions
Version 1.0
Authors (in alphabetical order):
Claudio Fleiner (davids@icsi.berkeley.edu)
- Q0.1 Where can I get the latest version of this FAQ?
- Q0.2 I would like to contribute to this FAQ, what shall I do?
- Q1.1 What is pSather?
- Q1.2 Where can I find more information about pSather/Sather?
- Q1.3 Where can I get the pSather Compiler (I found only a Sather compiler)?
- Q1.4 On which Hardware/Software do pSather programs run?
- Q1.5 What is the current version of pSather?
- Q1.6 How do I compile a pSather program?
- Q1.7 pSather does not run on my hardware, what can I do?
- Q1.8 What is the future of pSather?
- Q2.1 I found a bug in pSather, what shall I do?
- Q2.2 My pSather program crashes with some strange error messages?
- Q2.3 I tried to use a spread class, and it did not work?
- Q2.4 I cleared a thread, but it did not stop?
- Q2.5 How can I use more than one cluster?
- Q2.6 near/far don't work, why?
- Q2.7 When MAIN::main ends, the program stops even though there
are still some threads running?
- Q2.8 I am using pSather on a sun or Linux system, and garbage
collection seems to be broken?
- Q2.9 The pSather library (psather.c) gets recompiled quite often, why?
- Q3.1 The current pSather library code looks very strange, why?
- Q3.2 I would like to add spread support/clusters/..., what shall I do?
- Q3.3 I want to port pSather to my computer, how can this be done?
- Q4.1 Utilities missing
- Q4.2 If you are from Germany, Switzerland or Italy and are looking for
a PostDoc position, read this.
Send your contribution to
fleiner@icsi.berkeley.edu.
PART 1 General Information about pSather
pSather is a parallel extension of the object oriented language
Sather. It adds threads and synchronization mechanisms to the language.
Even though pSather programs should run on distributed computer systems,
they offer shared memory across all threads.
The latest Sather compiler includes the pSather compiler too. So
you should get the Sather compiler, edit the top level Makefile
to add
PSATHER=lwp
or
PSATHER=Solaris
and compile and install
the Sather compiler. lwp works for SunOS 4.1.3 and Linux,
while Solaris is for Solaris 2.4.
You can get the Sather/pSather compiler by anonymous ftp from
ftp://ftp.icsi.berkeley.edu/pub/sather/Sather-1.0.6.tar.gz.
If you cannot get it by ftp, send a mail to
davids@icsi.berkeley.edu.
Currently the following systems have been tested:
- SunOS 4.1.3
- Solaris 2.4
- Linux 1.1.59 and Linux 1.2.4
The current compiler version is 1.0.6.
Add the switch -psather to your command line:
cs -psather your_psather_program.sa
Check out Part 3 of this FAQ
We are currently working on a pSather runtime which implements nearly
all the features described in the pSather specification. It will run
on Solaris, Sun and Linux. The most notable difference to the current
compiler will be the support of more than one cluster. As the
runtime uses a small, but well defined interface to inter cluster
communication and threads, it should be possible to port it
to other computers without to much troubles.
Check the FAQ to see if you find a well known bug. If not, send a message
with the following information to
psather-bugs@icsi.berkeley.edu
- a description of the error
- your program
- the version of the compiler you are using
- the compiler switches you used to compile your program
- the operating system you are using
- your email address
The current pSather compiler is in early alpha stage and does
not make all the checks it could.
Example: if a thread
calls gate.sync on a gate to which it is not attached, the program
simply blocks. Try to run your program with a debugger to find out
where it actually crashed and why, and send a bug report
to Q2.3 I tried to use a spread class, and it did not work?
Spread classes are not yet implemented.
Threads waiting in a lock statement or in a gate operation do
not observe a clear. The clear has actually been removed from
the language for a number of reasons. To compensate for this,
a disjunctive lock has been introduced. Note that this feature is
neither in the current spec nor in the current compiler.
You cannot. The current compiler supports only one cluster
As your program runs on only one cluster, near is true and
far false
for all variables. As it does not give you any useful information,
we did not implement it in the current pSather compiler.
This is a known bug.
The Boehm Garbage
Collector does not work with the thread package used
on Linux and Sun, and therefore it has been disabled.
Whenever you use different options than the previous compile
to compile your program, the pSather
library needs to be recompiled. This way you will get a faster
pSather library when you don't ask for special features like for example
-debug or -check_all.
The current pSather runtime started as a test program to see how
the multiple lock statement could be implemented to guarantee
fairness and prevent starvation and dead locks. It has been connected
to the pSather compiler just to check if the runtime interface
is actually usable. To simplify this task, we just concatenate all the
source files to one file (called psather.c).
Nothing :-). We are currently working on a runtime implementation
which will add all these nifty features.
Your have the following options:
- port the lwp package included in the pSather distribution
to your computer. This is probably the easiest way to port
the pSather compiler.
Drawbacks: you will have non preemtive threads.
- port the Active Message and Thread library used for
the future pSather compiler to your computer. Ask
fleiner@icsi.berkeley.edu for more information about this.
If you have a good thread packages on your computer and
your computer supports shared memory, this may actually be
quite easy.
- get the pSather runtime interface description and create
your own runtime. Before starting with this you should
get the runtime interface description, which does not yet
exist in a way that it could be distributed.
Before starting such a project, you should get in contact with the
pSather development team at the ICSI.
- debugger
- lots of parallel libraries
- ports to other hardware/software
- write some applications in pSather
- graphical display of the system
http://www.icsi.berkeley.edu/icsi-info.html