The pSather Frequently Asked Questions

Version 1.0

Authors (in alphabetical order):

Claudio Fleiner (davids@icsi.berkeley.edu)

PART 0   Information about this FAQ

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?

PART 1   General Information about pSather

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?

PART 2   Features/Problems/Bugs in the current pSather compiler

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?

PART 3   Porting pSather to other hardware/OS

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?

PART 4   I would like to help in building pSather, what can I do?

Q4.1   Utilities missing
Q4.2   If you are from Germany, Switzerland or Italy and are looking for a PostDoc position, read this.


PART 0   Information about this FAQ

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?

Send your contribution to fleiner@icsi.berkeley.edu.


PART 1   General Information about pSather

Q1.1   What is 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.

Q1.2   Where can I find more information about pSather?

Q1.3   Where can I get the pSather Compiler (I found only a Sather compiler)?

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.

Q1.4   On which Hardware/Software do pSather programs run?

Currently the following systems have been tested:

Q1.5   What is the current version of pSather?

The current compiler version is 1.0.6.

Q1.6 How do I compile a pSather program?

Add the switch -psather to your command line:
	cs -psather your_psather_program.sa

Q1.7 pSather does not run on my hardware, what can I do?

Check out Part 3 of this FAQ

Q1.8 What is the future of pSather?

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.


PART 2   Features/Problems/Bugs in the current pSather compiler

Q2.1 I found a bug in pSather, what shall I do?

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

Q2.2 My pSather program crashes with some strange error messages?

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.

Q2.4 I cleared a thread, but it did not stop?

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.

Q2.5 How can I use more than one cluster?

You cannot. The current compiler supports only one cluster

Q2.6 near/far don't work, why?

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.

Q2.7 When MAIN::main ends, the program stops even though there are still some threads running?

This is a known bug.

Q2.8 I am using pSather on a Sun or Linux system, and garbage collection seems to be broken?

The Boehm Garbage Collector does not work with the thread package used on Linux and Sun, and therefore it has been disabled.

Q2.9 The psather library (psather.c) gets recompiled quite often, why?

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.


PART 3   Porting pSather to other hardware/OS

Q3.1 The current pSather library code looks very strange, why?

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).

Q3.2 I would like to add spread support/clusters/..., what shall I do?

Nothing :-). We are currently working on a runtime implementation which will add all these nifty features.

Q3.3 I want to port pSather to my computer, how can this be done?

Your have the following options: Before starting such a project, you should get in contact with the pSather development team at the ICSI.


PART 4   I would like to help in building pSather, what can I do?

Q4.1 Utilities missing

Q4.2 If you are from Germany, Switzerland or Italy and are looking for a PostDoc position, read this:

http://www.icsi.berkeley.edu/icsi-info.html