Announcements


Last modified: Tue Aug 28 16:00:27 PDT 2001

A001: Announcing release 2.2 of the Hood threads library
A002: DEC's thread analysis and debugging tool Visual Threads.
A003: Race condition test tools
A004: GNU Pth - The GNU Portable Threads
A005: Assure for Threads (from KAI)
A006: Flow-Based Programming: A New Aproach to Application Development
A007: Executable formal semantics of Java. (PhD work)
A008: ObjectThread 0.4.4 -- a C++ threading toolkit for Linux & Windows
A009: Draft 3 of the joint revision to POSIX and the Single UNIX Specification V3
A010: Alternate Solaris 8 Multithreaded libthread Library
A011: RELEASE: FSU PThreads V3.14 
A012: I am pleased to announce the availability of Cilk-5.3.
A013: Research Position in Execution-Driven Performance
A014: New project underway to enhance Linux Threading
A015: New threaded database server released to the opensource
================================================================
 A001: Announcing release 2.2 of the Hood threads library  

Announcing release 2.2 of the Hood threads library,
at http://www.cs.utexas.edu/users/hood.

Hood is a C++ user-level threads library for
multiprogrammed, shared-memory multiprocessors. Hood is
designed primarily for parallel programs, and it is
especially effective for dynamic, highly asynchronous
parallelism. Hood's thread scheduler is a non-blocking
implementation of the work-stealing algorithm that has been
shown to be efficient both in theory and in
practice. Without any need for special kernel-level support,
such as coscheduling, Hood's scheduler is able to utilize
efficiently whatever processor resources are provided by the
kernel, regardless of how the kernel chooses to do its
scheduling. This property makes Hood particularly effective
in dynamic, multiprogrammed environments. Moreover, the
performance of Hood applications can be understood
algorithmically using high-level, abstract complexity
measures: "work" and "critical path length".

This release fully supports Solaris for the SPARC. It may
also be used with Linux (x86), but with a serious drawback:
many library calls are not safe for use within Hood threads
(this problem does not exist under Solaris).


--
Emery Berger                           | Parallel Programming
emery@cs.utexas.edu                    | & Multiprogramming MP Groups 
http://www.cs.utexas.edu/users/emery   | University of Texas at Austin

================================================================
 A002: DEC's thread analysis and debugging tool Visual Threads.  

Hi guys,
	I wanted to contribute a pointer for you FAQ's to DEC's thread
analysis and debugging tool -- called Visual Threads.  Its one of the few
tools around that can detect/locate race conditions and deadlocks (among
other errors).  It runs on Alpha and is compatible with programs using
pthreads or Java.   Here's a pointer:

http://www.unix.digital.com/visualthreads/

- Stefan

P.S.  Truth in advertising: this product had its genesis in some research I
did as an intern at DEC.



================================================================
 A003: Race condition test tools  


There are at least two commercially available tools that test for race
conditions at runtime:

Kuck and Associates sell a product called AssureJ that runs on Windows
and tests Java programs. 
See http://www.kai.com/assurej/

Compaq has a tool (freely downloadable) called Visual Threads that
runs on Tru64 Unix (alpha) and tests multithreaded Tru64 Unix binaries
or Java programs.   
See http://www.unix.digital.com/visualthreads/

- Stefan


================================================================
 A004: GNU Pth - The GNU Portable Threads  


   ____  _   _     
  |  _ \| |_| |__    
  | |_) | __| '_ \                    ``Only those who attempt
  |  __/| |_| | | |                     the absurd can achieve
  |_|    \__|_| |_|                     the impossible.''

  GNU Pth - The GNU Portable Threads
  Version 1.2 now available!

  After an eight version long Beta period GNU Pth 1.2.0 is now finally
  available as a release version and 1.2 is now considered as the new
  stable series.

  Pth is a very portable POSIX/ANSI-C based library for Unix platforms
  which provides non-preemptive priority-based scheduling for multiple
  threads of execution (aka `multithreading') inside event-driven
  applications. All threads run in the same address space of the server
  application, but each thread has its own individual program-counter,
  run-time stack, signal mask and errno variable.

  The thread scheduling itself is done in a cooperative way, i.e., the
  threads are managed by a priority- and event-based non-preemptive
  scheduler. The intention is, that this way one can achieve better
  portability and run-time performance than with preemptive scheduling.
  The event facility allows threads to wait until various types of
  events occur, including pending I/O on filedescriptors, asynchronous
  signals, elapsed timers, pending I/O on message ports, thread and
  process termination, and even customized callback functions.

  Additionally Pth provides an optional emulation API for POSIX.1c
  threads (`Pthreads') which can be used for backward compatibility to
  existing multithreaded applications.

  Pth was successfully tested on FreeBSD, NetBSD, OpenBSD, BSDI,
  GNU/Linux, Solaris, HPUX, Tru63 (OSF/1), AIX, IRIX, UnixWare, SINIX,
  ReliantUNIX, ISC, AmigaOS, Rhapsody and AUX. And it should should
  automatically adjust itself to remaining Unix platforms, too.

  More about GNU Pth you can find under the following locations:

  http://www.gnu.org/software/pth/
  ftp://ftp.gnu.org/gnu/pth/

  Yours,
                                       Ralf S. Engelschall
                                       rse@engelschall.com
                                       www.engelschall.com

================================================================
 A005: Assure for Threads (from KAI)  


KAI, makers of the popular KAI C++ compiler and KAP/Pro Toolset for OpenMP,
is seeking testers for its new automated Pthread program debugging
technology. Instructions on obtaining free use of this new product follow.

If you use Pthreads in C or C++ applications on Unix, we'd like your
feedback on this new technology.

Bill Magro,
Assure for Threads Product Manager
Kuck & Associates, Inc.
assuret-eval@kai.com


Assure[TM] for Threads
----------------------

Introducing a powerful and exciting new product for programmers of
multi-threaded applications: Assure for Threads.

New Assure for Threads automatically locates both common and subtle
programming errors in threaded applications, with no recoding required. A
fusion of KAI's powerful Assure technology and leading-edge KAI C++
compiler, Assure boosts productivity by automatically locating both common
and subtle coding errors in Pthreads programs. Assure increases software
quality while dramatically reducing or even eliminating time spent
debugging.

Assure is available for the C and C++ languages on these major Unix
platforms:

    * IBM AIX
    * SGI IRIX
    * Compaq Tru64 Unix
    * HP HP-UX
    * Sun Solaris (Sparc)
    * Intel Linux

(Versions of Assure are also available for OpenMP and Java programmers.)

To learn more about Assure for Threads, please visit the Assure for Threads
web pages (www.kai.com/parallel/assuret).  There, you'll find examples of
Assure in action, a list of product capabilities, and full documentation.


Try new Assure for Threads for FREE
-----------------------------------

Until March 1, 2000, use of Assure for Threads is free to qualified
evaluators. In exchange, we ask for your feedback during and briefly after
the evaluation period. By participating, you'll help shape this exciting new
product while improving the quality of your own applications.

To participate, please contact us at assuret-eval@kai.com before January 28,
1999.


================================================================
 A006: Flow-Based Programming: A New Aproach to Application Development  


As Bil Lewis says, multithreading is going to become more and more
important in the IT world.  While most of the discussion threads I have
been reading talk about its importance from the point of view of
performance and resource utilization, my work over the last 30 years
strongly indicates that it is one of the basic keys to improving the
application development process, application maintainability and reuse. 
The key paradigm change required is a switch from thinking procedurally
to thinking of the application in terms of data streams and their
transforms, where the transforms are implemented as asynchronous
threads. 

Rather than going to all the arguments here, I would like to point
interested readers at my home page
http://www.e-smith.org/people/paul/fbp.  I have also written a book
called "Flow-Based Programming: A New Aproach to Application
Development", which came out in 1994.  It can be obtained via
Amazon.com.

I would love to make contact with people interested in this area,
whether in business or academe. 

Paul Morrison



================================================================
 A007: Executable formal semantics of Java. (PhD work)  

From: Marjorie RUSSO 

Dear news-group members,
  
I am a French PhD student currently working on
Java formal semantics and I am particularly
interested in Java concurrency and multithreading.
 
I have written an executable formal semantics of a large subset of Java.
This semantics is now available (in html) at the url :
  
 http://www-sop.inria.fr/oasis/personnel/Marjorie.Russo/java/
 
I would be pleased to get some feedback and
comments about this work.
 
Regards,

     Marjorie Russo


-- 
Marjorie RUSSO - mailto:Marjorie.Russo@sophia.inria.fr
http://www-sop.inria.fr/oasis/personnel/Marjorie.Russo
étudiante en thèse dans le projet OASIS  
INRIA Centre de Sophia Antipolis
2004, Route des Lucioles - B.P. 93
F-06902 VALBONNE Cedex - FRANCE
==================================
 A008: ObjectThread 0.4.4 -- a C++ threading toolkit for Linux & Windows  



From: Jason Nye 

I'm pleased to announce the availability of ObjectThread 0.4.4 -- a C++
threading toolkit for Linux & Windows released under the LGPL.
ObjectThread is a small toolkit dedicated to providing simple but
powerful threading facilities. The current version includes the
following classes (among others):

 AutoPtr   (Thread-safe reference counted pointer)
 Barrier
 CancelState/Type Guards
 Condition
 Lockable & Guard
    Mutex
    Semaphore
 RWLock & Guard
 Notifier
    FDNotifier (Linux/UNIX only)
    EventNotifier (Win32 only)
    CallbackNotifier
    SeqNotifier
 Messenger  (Used to send messages with notifiers)
 Sequence
    LockedQueue
    LockedStack
    LockedPrioQueue
 ThreadPool
 Timer

This toolkit was designed to be simple and extensible -- it is easy to
add your own lockable, notifier, sequence, etc and they will all fit
into the library seamlessly.

ObjectThread is currently tested on the following systems/compilers:

Linux:
    gcc-2.95.1+ (Makefile included)

Win32:
    MSVC++ 5.0 (.dsw included),
    Borland C++ 5.02 (.ide included)

While this library is extremely useful and useable as it is, I am
looking for interested parties in helping to port it to other unices and
help me refine the Win32 engine (it uses a pthreads-like virtual machine
to implement thread interaction and cancellation (async cancellation
works on Win32, also)).

I am also looking for ideas about what other functionality can be added
to the library.


To download the library:
Go to www3.nbnet.nb.ca/jnye and follow the "Current Software Projects"
link and you'll see directions on how to download it. Documentation is
also included on my site (generated by DOC++), although DOC++ garbled
the documentation of AutoPtr, Barrier and Action together -- will fix
this. If you are using Netscape in Windows, good luck trying to download
the library (the server does not recognize mime types). You can try
right-clicking on the file and selecting 'save link as', but I always
end up with an incorrect tar.gz file. The best bet in Windows is to use
IE and rename the file offered to ObjectThread.tar.gz -- don't attempt
to save it as html! It is NOT html. If you are using Linux, you'll have
no problem using Netscape and right clicking on the file and selecting
'save link as'. Good luck. If you have no end of trouble, email me and
I'll email you the latest version.

Build and installation instructions are included in the README file.

Cheerio,
Jason





================================================================
 A009: Draft 3 of the joint revision to POSIX and the Single UNIX Specification V3  


Draft 3 of the joint revision to POSIX and the Single UNIX Specification V3
is now available for review. To join the review group and download the
specifications see http://www.opengroup.org/austin/ (The Austin Group
web site). The new  draft merges XNS5.2, 1003.1d, 1003.1j,  1003.1a,
1003.2b and 1003.2d (sockets, advanced/additional realtime, threads,
symlinks for utilities etc).

-- 
Andrew Josey, #include  
Austin Group Chair, The Open Group.
http://www.unix-systems.org

================================================================
 A010: Alternate Solaris 8 Multithreaded libthread Library  

>The press release mentions "Alternative libthread implementation". 
>I can't wait to find out what that is.

The following is the discussion in the Solaris 8 Multithreaded
Programming Guide on the subject of the alternate libthread
implementation.  Essentially the same description is in the
threads(3THR) manual page for Solaris 8.

Roger Faulkner
roger.faulkner@sun.com


Linking With the Alternate One-level libthread Library

The standard Solaris threads implementation is built upon
a two-level threading model in which user-level threads are
multiplexed over possibly fewer lightweight processes, or LWPs.  
An LWP is the fundamental unit of execution that is dispatched
to a processor by the operating system.  A mechanism is provided
in the standard implementation for associating threads one-to-one
with LWPs (the THR_BOUND and PTHREAD_SCOPE_SYSTEM flags) for
writing applications with one-level semantics.

The Solaris 8 Operating Environment provides an alternate threads
implementation in which user-level threads are always associated
one-to-one with LWPs.  This implementation is simpler than
the standard implementation and may be beneficial to some
multithreaded applications.  It provides exactly the same
interfaces, both for POSIX threads and Solaris threads, as
the standard implementation.

To link with the alternate implementation, use the following
run-path -R options when linking the program:

For POSIX threads use:

cc -mt ... -lpthread ... -R /usr/lib/lwp     (32-bit)
cc -mt ... -lpthread ... -R /usr/lib/lwp/64  (64-bit)

For Solaris threads use:

cc -mt ... -R /usr/lib/lwp                   (32-bit)
cc -mt ... -R /usr/lib/lwp/64                (64-bit)

For multithreaded programs that have been previously linked
with the standard threads library, the environment variables
LD_LIBRARY_PATH and LD_LIBRARY_PATH_64 can be set as follows to
bind the program at run time to the alternate threads library:

LD_LIBRARY_PATH=/usr/lib/lwp
LD_LIBRARY_PATH_64=/usr/lib/lwp/64

Note that if an LD_LIBRARY_PATH environment variable is in effect
for a secure process, then only the trusted directories specified
by this variable will be used to augment the runtime linker's
search rules.

When using the alternate threads implementation, the library might
create more LWPs than the standard implementation using unbound
threads.  LWPs consume operating system memory in contrast to
threads, which consume only user-level memory.  Thus a multithreaded
application linked with this library that creates thousands of threads
would create an equal number of LWPs and might run the system out
of resources required to support the application.


================================================================
 A011: RELEASE: FSU PThreads V3.14   



Pthreads Mailing List, Message 27, Nov  8, 2000:
================================================

1. RELEASE:

  NOTICE: #include  must be the FIRST include!!!

  .update: more enhancements for gdb debugging support via TDI, for details see:
   http://www.informatik.hu-berlin.de/~mueller/TDI/
  .update: faster I/O for Linux/FreeBSD with async I/O (no fd_server thread)
  .update: Solaris 2.8 support
  .update: Linux latest experimental glibc support
  .bug fix: SunOS: COMP_C3 needed for signal.o
  .bug fix: SCO: SEGV when no thread ready after SIGCHLD
   (problem and fix by: Lucian B Landry )

The release of version 3.14 is now available on ftp (FSU) and on WWW (hu-berlin).

2. Pthreads Debugger TDI:

  .new command: continue -addcs
  .extended support: suspend running thread

-- Frank

FSU PThreads Sources:
USA:    ftp://ftp.cs.fsu.edu/pub/PART/PTHREADS/pthreads.tar.gz OR pthreads.zip
Europe: http://www.informatik.hu-berlin.de/~mueller/ftp/pub/PART/pthreads.tar.gz

Thread Debugger Sources / Binaries:
USA:    http://www.cs.fsu.edu/~mueller/TDI
Europe: http://www.informatik.hu-berlin.de/~mueller/TDI

Papers:
USA:    http://www.cs.fsu.edu/~mueller/pthreads
Europe: http://www.informatik.hu-berlin.de/~mueller/pthreads

mail-list: mueller@informatik.hu-berlin.de	Subject: subscribe-pthreads

Report any bugs or problems to:

pthreads-bugs@ada.cs.fsu.edu

=============================================================

 A012: I am pleased to announce the availability of Cilk-5.3.   

Cilk is a language for multithreaded parallel programming based on
ANSI C.  Cilk is designed for general-purpose parallel programming,
but it is especially effective for exploiting dynamic, highly
asynchronous parallelism.  This 5.3 release contains the Cilk
compiler, the Cilk runtime system, and example programs.

Cilk has been developed since 1994 at the MIT Laboratory for Computer
Science by Prof. Charles E. Leiserson and his group.  Besides being
used for research and teaching, Cilk was the system used to code the
three world-class chess programs *Tech, *Socrates, and Cilkchess.
Over the years, implementations of Cilk have run on computers ranging
from networks of Linux laptops to an 1824-nodes Intel Paragon.

The current Cilk-5.3 release runs on symmetric multiprocessor (SMP)
machines that support Posix threads, GNU make, and gcc.  Cilk-5.3 was
developed and tested mainly on GNU/Linux, IRIX, Digital Unix, and
Solaris/SPARC, but porting Cilk to other Unix systems where the GNU
compilation tools are available should be quite easy.  You can also
run Cilk-5.3 on uniprocessor machines.  This configuration is useful
for program development and debugging, even though you will not get
any parallel speedup.

This release of Cilk is targeted at the computing community at large,
and not only at parallel-computing specialists.  We tried to make Cilk
easy to install and to use.  If you know the C language, you should be
able to write simple parallel Cilk programs quickly.

To download Cilk-5.3 and for up-to-date information, please
visit the Cilk web page at

	http://supertech.lcs.mit.edu/cilk

Regards,
Matteo Frigo

I am pleased to announce the availability of Cilk-5.3.

Cilk is a language for multithreaded parallel programming based on
ANSI C.  Cilk is designed for general-purpose parallel programming,
but it is especially effective for exploiting dynamic, highly
asynchronous parallelism.  This 5.3 release contains the Cilk
compiler, the Cilk runtime system, and example programs.

Cilk has been developed since 1994 at the MIT Laboratory for Computer
Science by Prof. Charles E. Leiserson and his group.  Besides being
used for research and teaching, Cilk was the system used to code the
three world-class chess programs *Tech, *Socrates, and Cilkchess.
Over the years, implementations of Cilk have run on computers ranging
from networks of Linux laptops to an 1824-nodes Intel Paragon.

The current Cilk-5.3 release runs on symmetric multiprocessor (SMP)
machines that support Posix threads, GNU make, and gcc.  Cilk-5.3 was
developed and tested mainly on GNU/Linux, IRIX, Digital Unix, and
Solaris/SPARC, but porting Cilk to other Unix systems where the GNU
compilation tools are available should be quite easy.  You can also
run Cilk-5.3 on uniprocessor machines.  This configuration is useful
for program development and debugging, even though you will not get
any parallel speedup.

This release of Cilk is targeted at the computing community at large,
and not only at parallel-computing specialists.  We tried to make Cilk
easy to install and to use.  If you know the C language, you should be
able to write simple parallel Cilk programs quickly.

To download Cilk-5.3 and for up-to-date information, please
visit the Cilk web page at

	http://supertech.lcs.mit.edu/cilk

Regards,
Matteo Frigo

=============================================================
 A013: Research Position in Execution-Driven Performance   
 
The Institute for Software Science at the University of Vienna 
is offering within a long-term research project a

    ***********************************************************
    ***  Research Position in Execution-Driven Performance  ***
    ***    Analysis for Distributed and Parallel Systems    ***
    ***********************************************************

Applicants should have knowledge in one or more of the 
following areas:

	+ distributed and parallel systems
	+ performance measurement, monitoring, and tracing
        + on-line and post-execution performance analysis
	+ performance visualization
	+ programming skills
	    + distributed programming (Java)
	    + parallel programming (OpenMP, MPI, Threads, HPF ...)
	+ databases and expert systems

Position: Research position for a doctoral student.

Starting Date: immediately

Duration: until April 2003.

Project Summary:

   The position is offered as part of a long-term research project 
   about performance-oriented application development for distributed
   and parallel systems.

   The main task of this position requires to develop a performance 
   analysis system that searches for performance problems in 
   object-oriented multi-threaded distributed and parallel 
   applications exploiting both data and task parallelism. 
   These applications are executed on clusters of SMPs or on 
   heterogeneous workstation networks. Various instrumentation systems 
   are used to obtain raw performance data while executing a program.
   Performance data may be stored in a data repository (database or 
   expert system) for post-execution analysis. The system to be developed
   tries to find performance problems based on collected and computed 
   performance data, and information about the input program provided by
   a compiler. Performance problems will be associated with the input 
   program. Based on detected performance problems further decisions 
   may be taken, e.g. refinement of instrumentation, more detailed 
   search for performance problems, application and system changes 
   to improve performance, etc.

For more information, please contact

   	Thomas Fahringer (tf@par.univie.ac.at)


Thomas Fahringer, Ph.D.             Tel: (office): +43 1 4277-38816
Associate Professor                 Tel: (sec):    +43 1 4277-38801
University of Vienna                Fax: +43 1 4277-9388
Institute for Software Science      E-mail: tf@par.univie.ac.at
Liechtensteinstr. 22                WWW: http://www.par.univie.ac.at/~tf
A-1090 Vienna, Austria

=============================================================
 A014: New project underway to enhance Linux Threading 

There is a new project underway to enhance Linux Threading in the
areas of POSIX compliance and SMP optimizations. To this end, it 
will introduce a new M:N threading model. This NGPT package is a 
derivative of the excellent package GNU Pth and is licensed under
the LGPL and any interested developers are invited to participate.

The project is located on IBM developerWorks under
http://oss.software.ibm.com/developerworks/projects/pthreads

The source and binary rpms and a linux kernel patch is available
at above loacation to download.

Thanks,
Saurabh Desai
=============================================================
 A015: New threaded database server released to the opensource   

VoyDB is a new threaded database server released to the opensource
community.  It is available at http://voydb.sourceforge.net and could
use the assistance of anyone familiar with thread programming to help
with a bug.
=============================================================