NOTICE The Parallaxis software package is licensed free of charge. Therefore, we provide absolutely no warranty of any kind in any case. The Universitaet Stuttgart and the authors provide the Parallaxis software package "as is" without warranty of any kind, either expressed or implied, including, but not limited to, the implied warrenties of merchantability and fitness for a particular purpose. The entire risk as to the quality and the performance of the program is with you. Should the Parallaxis software package prove defective, you assume the cost of all necessary servicing, repair or correction. In no event may the Universitaet Stuttgart or any of the programs' authors be liable to you for damages, including any lost profits, lost monies, or other special, incidental or consequential damages arising out of the use or inability to use (including but not limited to loss of data or data being rendered inaccurate or losses sustained by third parties or a failure of the program to operate with programs not included in the Parallaxis software package) the program, even if you have been advised of the possibility of such damages, or for any claim by any other party. COPYRIGHT AND PUBLIC DOMAIN LICENCE The Parallaxis software package is being distributed by the Universitaet Stuttgart as public domain software. Copyright (c) is with the authors, Ingo Barth, Thomas Braunl, and Frank Sembach at the Universitaet Stuttgart, IPVR, Germany. There is no warranty in any case as stated in the paragraph above. You are free to use and copy the original Parallaxis software package free of charge for non-commercial applications, provided that 1) the notices on copyright, public domain, and no warranty of this page as well as a reference to this report are included, 2) you return a filled-in copy of the attached registration sheet, which gives us some information on the distribution of our software. An intended commercial use requires the written consent of the authors. You may obtain the Parallaxis software package for any of the following computer systems: * Apple Macintosh (MAC OS, 2 MB or more recommended) * IBM PC/AT or compatibles (DOS) * IBM PC/AT or compatibles (OS/2) * IBM PC/AT or compatibles (Unix) * SUN 3 (Unix, OS 4.0) * SUN 4 / Sparcstation (Unix, OS 4.0) * HP 9000/300 (HP-UX) * HP /800 series (HP-UX) * HP/APOLLO 700 series (HP-UX * DECstation (Ultrix) * MasPar MP-1 (DEC front end) * Connection Machine CM-2 (Sun front end) For receiving your copy of the Parallaxis software package and the Parallaxis user manual, send a fee of DM 10 (outside Europe via air mail US $ 15) for the manual and a fee of DM 5 (outside Europe US $ 5) for each computer system version you would like to get on floppy disk. If you have Internet access, you may also copy the Parallaxis system via "anonymous ftp" from: ftp.informatik.uni-stuttgart.de (129.69.211.1) in subdirectory pub/parallaxis For mailing bug reports (no calls, please!), suggestions or your favourite Parallaxis application, also contact the address below: Dr. Thomas Braunl Universitaet Stuttgart Fakultaet Informatik Postfach 10 60 37 D-7000 Stuttgart 10 Germany | | -+-----------------------------------------------------------+- | New Parallaxis User Manual | | Version 2, 2nd Edition (CS Report 2/92, Feb. 1992) | | ------------- ---- | | includes all the updates and is now available | -+-----------------------------------------------------------+- | | HINTS FOR VERSION 2 The power operator is now "**". It is now possible to define multiple topologies at once (disjunct or overlay), or different topologies for procedures that are not nested. If multiple topologies are used, the topology name has to be specified for each PARALLEL block. Since connections are now semi-dynamic, there are no lengthy connection lists any more at the beginning of each PARZ intermediate code program. The simulator has been extended to operate source level debugging. For this reason, the compiler optionally generates a cross reference file (".xrf"). LITERATURE in English: Barth, Braunl, Sembach: Parallaxis Version 2 User Manual Computer Science Report, no. 2/91, Universitaet Stuttgart, Feb. 1991 --> This report is a must for using Parallaxis !! <-- --> Contact the address below. <-- Barth, Braunl, Sembach: Parallaxis User Manual Computer Science Report, no. 3/90, Universitaet Stuttgart, March 1990 Braunl: Parallaxis: A Flexible Parallel Programming Environment for AI Applications, Applications of Artificial Intelligence VII, Orlando Florida, March 1989, pp. 275 (11) Braunl: A Specification Language for Parallel Architectures and Algorithms, Fifth International Workshop on Software Specification and Design, Pittsburgh Pennsylvania, May 1989, pp. 49 (3) Braunl: Structured SIMD Programming in Parallaxis, Structured Programming, vol. 10, no. 3, July 1989, pp. 121 (12) Braunl: Transparent Massively Parallel Programming with Parallaxis, ISSM International Conference on Parallel and Distributed Computing and Systems, New York NY, Oct. 1990 in German: Barth: Entwicklung eines Compilers fuer die parallele Programmiersprache Parallaxis, Studienarbeit Nr. 835, Universitaet Stuttgart, March 1990 Barth: Entwicklung eines Compilers fuer Parallaxis mit dynamischen Verbindungsstrukturen, Diplomarbeit Nr. 705, Universitaet Stuttgart, Nov. 1990 Braunl: Massiv parallele Programmierung mit dem Parallaxis-Modell Informatik-Fachberichte Nr. 246, Springer-Verlag 1990. Krauskopf: Ein massiv paralleles Verfahren zur Stereobildauswertung, Diplomarbeit, Universitaet Stuttgart Nr. 707, Nov. 1990 Liebelt: Entwicklung und Untersuchung von massiv parallelen Hidden-Surface- und Raytracing-Algorithmen, Diplomarbeit Nr. 769, Universitaet Stuttgart, Jan. 1991 Sembach: Entwicklung eines Simulators fuer die parallele Zwischensprache PARZ, Studienarbeit Nr. 834, Universitaet Stuttgart, March 1990 Sembach: Entwicklung eines symbolischen Debuggers fuer das parallele Sprachensystem Parallaxis/PARZ, Diplomarbeit Nr. 706, Universitaet Stuttgart, Nov. 1990 Verba: Massiv-parallele Algorithmen zur Loesung von Problemen der linearen Algebra, Studienarbeit Nr. 904, Universitaet Stuttgart, Nov. 1990 Walter: Entwurf von massiv parallelen Simulated Annealing Algorithmen, Studienarbeit Nr. 925, Universitaet Stuttgart, Jan. 1991 What's New in Version Two ========================= In version 2 of the Parallaxis language definition and the Parallaxis Programming System we did some major extensions, the most important being the introduction of semi-dynamical connection structures. Parallaxis programs may now have several independent or overlapping interconnection structures at a time, and different connection structures at different times (linked to procedure scopes). We tried to be upward compatible as much as possible, however, there are two minor changes you might have to do in order to run your old (version 1) Parallaxis programs: How to upgrade old Parallaxis Programs * change power operator symbol from "^" to "**" * suffix load/store commands in procedures without selection with "[*]" selection Language Changes Data Types and Operators * Pointers * Variant Records * power operator "**" Dynamic data structures and variant record structures have been added. Syntax and Semantics is identical to Modula-2. The power operator had to be changed to double asterik, since the "^" symbol is now used for dereferencing pointer expressions. Multiple Configuration and Connection Structures Several configuation and connection structures may be defined globally for the entire program, or locally for each procedure. Procedures with configuration/ connection structures may not be nested inside each other. Multiple configuration/connection structures may be defined on disjointed sets of PEs (with the possibility of interconnections between these groups), each having its individual data declaration. Several configuration/connection structures may also be defined on the same set of PEs, resulting in an overlay structure. A typical program structure with two disjoint sets of PE groups is: CONFIGURATION group1 [...]; CONNECTION ...; (* connections between group1 PEs *) VECTOR ...; (* vector data for group1 PEs only *) CONFIGURATION group2 [...]; CONNECTION ...; (* connections between group2 PEs or between both groups *) VECTOR ...; (* vector data for group2 PEs only *) SCALAR ...; (* common scalar data, there is NO common vector data *) PE selection syntax in PARALLEL, LOAD/STORE, and REDUCE statements has been changed slightly because of this extension. Besides the PE-range, a selection also has to specify the name of the configuration in case there are more than one (i.e.: PARALLEL tree[3..7] ...). Connections are no longer restricted to be 1:1 connections. They may now be arbitrary m:n connections (that is any input and output port may have an arbitrary number of connections). The arrival of multiple data values at a time has to be avoided. Therefore, the data exchange operations may be supplied with implicit data reduction operations. Data Exchange * propagate [reduce] * send [reduce] * receive [reduce] All participating PEs had to be active in a propagate data exchange operation. For multiple independent configuation structures, this is no longer possible. Therefore, propagate has been given two siblings: send, for transferring data to a destination-PE that does not have to be active (i.e. being in another configuration, or also inside the same configuration), and receive, for transferring data from a source-PE that does not have to be active. All three data exchange operations may be specified with an implicit reduction operator, in order to take care of possible m:n connections, reducing the data stream on the way of transfer. Standard Functions * parallel read * parallel write * in/out-connected * new / dispose * graphics routines Read and write may now take vector arguments, reflecting the parallel I/O technology, called "Data Vault" at Thinking Machines and "Parallel Disk Array" at MasPar. In/Out-connected functions have been changed according to the new multiple connection structures, and dynamic storage allocation functions have been added. The graphics routines are being ignored by the simulator in the current version and are only executed in the compiled version. Reduction User-defined reduction functions now have to have two vector arguments and a vector result. Programming System Changes Compiler The compiler now optionally creates cross-reference files for the symbolic debugger of the simulator. Simulator and Debugger The simulator also allows variant data structures (unions) and supports dynamic connection structures. That is, the PE connections are no longer listed before the actual commands in each PARZ program, but there are vector commands connect, biconnect and disconnect to build and discard dynamic connection structures. As a consequence, there is now a debugger command for displaying the dynamic connections (formerly integrated in the LIST command). The debugger has been extended to a symbolic debugger that operates on Parallaxis level and on PARZ level (new commands handling Parallaxis expressions are EXAMINE and ASSIGN). Parallaxis source code is always displayed, when available. All debugger commands formerly using PARZ labels only, may now also use Parallaxis source line numbers. The visualizer tool is still not ready for version 2 distribution. More Compilers There are two PARZ-to-C compilers. The first one is to speed up Parallaxis programs on single-processor Unix workstations, and the second compiler has been especially designed to run Parallaxis programs on the massively parallel MasPar computer system (16,384 PEs). We hope to finish a compiler for the Connection Machine soon. New Features (Nov. 1991 / Feb. 1992) ------------------------------------ 1) The PARZ-to-C and PARZ-MPL compilers can include code, which will generate a record-file similiar to the simulator record-file. The option -R invokes this function. 2) The graphics library functions are implemented in all compilers and the simulator for X window systems (Mac and PC will follow). ============================================================================= Parallaxis Graphics Interface Parallaxis provides a set of primitive procedures and functions to get a machine independent graphics interface. Although these procedures build a machine-independent graphics interface,the available graphics features depend on the machine used. To handle the colors a new data structure is automatically declared: TYPE COLOR = RECORD RED, GREEN, BLUE : CARDINAL; END; The components of this record hold the intensity of the corresponding co- lors. All functions and procedures set the read-only variable "Done" according to the success of the function or procedure. OpenWindow (SCALAR x, y : REAL) : SCALAR INTEGER opens a new window on the screen with the RELATIVE measure x and y (relative to the absolute screen coordinates). The result is the window selector which is needed to activate or to close the window.The new window will automatically be activated when it is opened. Ifthe new window could not be opened, the previously active window will stay active. YOU HAVE TO CLICK THE MOUSE BUTTON INSIDE A NEWLY OPENED WINDOW FOR PROGRAM CONTINUATION! OpenAbsWindow (SCALAR x, y : REAL) : SCALAR INTEGER opens a new window on the screen with the ABSOLUTE measure x and y The result is the window selector which is needed to activate or to close the window. The new window will automatically be activated when it is opened. If the new window could not be opened, the previously active window will stay active. YOU HAVE TO CLICK THE MOUSE BUTTON INSIDE A NEWLY OPENED WINDOW FOR PROGRAM CONTINUATION! CloseWindow (SCALAR handle : INTEGER) closes the window with the window selector handle. No window isactive. Before the next graphics operation a window has to be selected. WindowSize (SCALAR VAR x, y : INTEGER) returns the parameters x and y with the measure of the active window in pixels. SelectWindow (SCALAR handle : INTEGER) activates the window with the window selector handle for the follo- wing graphics commands. SetColor (SCALAR c : COLOR) SetColor (VECTOR c : COLOR) sets the actual painting color to the values contained in record "c". The real color is depending on the hardware facilities of the system used. SetPixel (SCALAR x, y : INTEGER) SetPixel (VECTOR x, y : INTEGER) sets the point with the pixel coordinates (x,y) to the previously defined color. If SetPixel is called with vector arguments and SetColor has been called previouslly with a scalar parameter, all pixels will be set to this color. GetPixel (SCALAR x, y : INTEGER) : SCALAR COLOR returns the color of the point with the pixel coordinates (x, y). Line (SCALAR x1, y1, x2, y2 : INTEGER) draws a line using the actual color from the point with the pixel coordinates (x1,y1) to the point with the pixel coordinates (x2, y2). MoveTo (SCALAR x, y : INTEGER) defines the actual position for the following drawing routines at the pixel with the coordinates (x, y). Draw (SCALAR c : CHAR) writes character c to the selected window at the actual position. DrawInt (SCALAR i : INTEGER; SCALAR n : CARDINAL) writes integer number i with a width of n characters to the selected window at the actual position. DrawCard (SCALAR i : CARDINAL; SCALAR n : CARDINAL) writes cardinal number i with a width of n characters to the selected window at the actual position. DrawReal (SCALAR r : REAL; SCALAR n : CARDINAL) writes floating point number r with a width of n characters to the selected window at the actual position. DrawFixPt (SCALAR r : REAL; SCALAR n, p : CARDINAL) writes floating point number r with a width of n characters and p decimals to the selected window at the actual position. DrawBool (SCALAR b : BOOLEAN) writes boolean value b to the selected window at the actual position. DrawString (SCALAR s : string) writes string s to the selected window at the actual position. On UNIX workstations, the output produced by the Draw procedures can be influenced by setting the environment variable PARALLAXIS_FONT to a valid X-Windows font string. The building of this string is defined in the X-Windows documentation. E.g. $ setenv PARALLAXIS_FONT "-adobe-symbol-*-*-*-*-20-*-*-*-*-*-*-*" defines that all output is made using the adobe-font symbol in a size of 20 pixel. ========================================================================== REGISTRATION / ORDER SHEET FOR THE PARALLAXIS SOFTWARE PACKAGE Please fill in the blanks and return to: Dr. Thomas Braunl Universitaet Stuttgart Fakultaet Informatik Postfach 10 60 37 D-7000 Stuttgart 10 Germany Name: (first, last) .................................................. Company: (if any) .................................................. Address: (street) .................................................. (city, ZIP) .................................................. (country) .................................................. E-mail: .................................................. Intended Use of Parallaxis: .................................................. .................................................. .................................................. .................................................. Application Areas: .................................................. .................................................. .................................................. .................................................. -------------------------------------------- | This is a [REGISTRATION] / an [ORDER] . | (please mark) -------------------------------------------- (please make sure to accompany order with payment!) [ ] Parallaxis User Manual (order) Computer systems used: .................................................. (floppies ordered, resp.) .................................................. .................................................. .................................................. Thank you for your cooperation!