Parallel Java Library (original) (raw)
Alan Kaminsky • Department of Computer Science • Rochester Institute of Technology • 4572 + 2433 = 7005 | Home Page |
---|
Prof. Alan Kaminsky
Rochester Institute of Technology -- Department of Computer Science
Overview
Books and Publications
Preinstalled Version
Download Version
System Requirements
Installation
Usage
License
Documentation (Javadoc)
Overview
Parallel Java (PJ) is an API and middleware for parallel programming in 100% Java on shared memory multiprocessor (SMP) parallel computers, cluster parallel computers, and hybrid SMP cluster parallel computers. PJ was developed by Professor Alan Kaminsky and his student Luke McOmber in the Department of Computer Science at the Rochester Institute of Technology.
I am no longer supporting the Parallel Java Library. I recommend that you use theParallel Java 2 Library instead.
Books and Publications
Books about PJ:
Publications and presentations about PJ:
- Alan Kaminsky. Teaching parallel computing in 100% Java with the Parallel Java Library._13th SIAM Conference on Parallel Processing for Scientific Computing (PP08),_Atlanta, GA, USA, March 14, 2008.
(Slide presentation) - Alan Kaminsky. Parallel Java: A library for SMP, cluster, and hybrid parallel programming in 100% Java._13th SIAM Conference on Parallel Processing for Scientific Computing (PP08),_Atlanta, GA, USA, March 12, 2008, Poster Session.
(PDF, 387,648 bytes, 36" x 24") - Alan Kaminsky. Parallel Programming in Java. Workshop presented at the CCSCNE 2007 Conference, Rochester, NY, USA, April 20, 2007.
Workshop handouts (PDF, 202,370 bytes) - Alan Kaminsky. Parallel Java: A unified API for shared memory and cluster parallel programming in 100% Java._21st IEEE International Parallel and Distributed Processing Symposium (IPDPS 2007),_Long Beach, CA, USA, March 2007.
(PDF, 128,188 bytes) (Lecture notes) - Alan Kaminsky. Parallel Java: An API for developing parallel programs in 100% Java. Presented to the RIT Research Computing Group, Rochester, NY, November 9, 2006.
(Lecture notes) - Alan Kaminsky. Parallel Java: An API for developing parallel programs in 100% Java. Presented at the Rochester Java User's Group meeting, Rochester, NY, June 13, 2006.
(Lecture notes) - Alan Kaminsky. Parallel Java: An API for teaching and developing parallel programs in 100% Java._ACM SIGCSE Technical Symposium on Computer Science Education (SIGCSE 2006),_Houston, TX, USA, March 3, 2006, faculty poster.
(PDF, 188,290 bytes, 36" x 24") - Alan Kaminsky. Parallel Java. Presented at the RIT Department of Computer Science's "Languages for Lunch" lecture series, Rochester, NY, October 4, 2005.
(Lecture notes)
Preinstalled Version
PJ is installed on the Computer Science Department computer systems. When working in your Computer Science Department account, use the preinstalled version.
Classpath -- /home/fac/ark/public_html/pj.jar
Add that JAR file to your classpath when you run the programs. See Usage below for further information.
Documentation -- /home/fac/ark/public_html/pj/doc
Point your HTML browser to that directory or to this URL:http://www.cs.rit.edu/~ark/pj/doc/index.html
See "PJ on the RIT CS Parallel Computers" for further information about running PJ programs on the Computer Science Department's parallel computers.
Download Version
The download version of PJ is for installation on your personal computer only. **Do not install it in your Computer Science Department account.**When working in your Computer Science Department account, use the preinstalled version (see above).
There are two versions of the PJ distribution that you may download, an executable distribution and a source distribution.
**Executable distribution.**The executable distribution comes in a Java Archive (JAR) file named "pj_YYYYMMDD_.jar", where YYYYMMDD are the year, month, and date. The executable distribution includes the PJ class files only.
Version 07-Jan-2015 (1,466,004 bytes):<pj20150107.jar>
**Source distribution.**The source distribution comes in a Java Archive (JAR) file named "pjsrc_YYYYMMDD_.jar", where YYYYMMDD are the year, month, and date. The source distribution includes the PJ class files, source files, and documentation files (Javadoc).
Version 07-Jan-2015 (9,187,073 bytes):<pjsrc20150107.jar>
System Requirements
PJ was developed using Java Development Kit (JDK) 1.5. When compiling and running PJ programs, you must use JDK 1.5. PJ uses features of the Java language and platform introduced in JDK 1.5 and will not compile with earlier JDK versions.
PJ will work with JDK 1.6 and 1.7. However, my tests have revealed serious performance issues when a multithreaded PJ program is run on an SMP parallel computer with JDK 1.6 or 1.7. Due to some as-yet-unfathomed behavior of the JIT compiler and/or the thread scheduler, SMP parallel programs that experienced near-ideal speedups with JDK 1.5 experience far-less-than-ideal speedups with JDK 1.6 or 1.7 on the same machine. For now I recommend using PJ with JDK 1.5.
Installation
**Executable distribution.**To install the executable distribution, simply store the JAR file somewhere. You may wish to change the file name, say to "pj.jar".
**Source distribution.**To install the source distribution, just unpack the JAR file. The source distribution expands into a subdirectory named "pj". If you already have a subdirectory of that name which you want to save, be sure to unpack the JAR file in some other directory. Documentation is stored under the directory"pj/doc"; point your HTML browser to that directory. Java source files and class files are stored under the directory"pj/lib".
**Installation on a SMP computer.**To run PJ programs on a shared memory multiprocessor (SMP) parallel computer, no further installation is required.
**Installation on a cluster.**To run PJ programs on a cluster parallel computer, in addition to installing the PJ JAR file, you must configure and run certain daemon processes on the frontend and backend processors of the cluster. For further information, see packageedu.rit.pj.cluster.
Usage
**Executable distribution.**When compiling and executing Java programs that use PJ, if you have installed the executable distribution, you must set your classpath to include the PJ JAR file. Here is an example of a command for the bash shell to set the classpath to the current directory plus the PJ JAR file:
export CLASSPATH=.:/home/fac/ark/public_html/pj.jar
Here is an example of a command for the csh shell to set the classpath to the current directory plus the PJ JAR file:
setenv CLASSPATH .:/home/fac/ark/public_html/pj.jar
**Source distribution.**When compiling and executing Java programs that use PJ, if you have installed the source distribution, you must set your classpath to include the top-level directory under which PJ's Java class files are stored. Here is an example of a command for the bash shell to set the classpath to the current directory plus the PJ directory:
export CLASSPATH=.:/home/fac/ark/public_html/pj/lib
Here is an example of a command for the csh shell to set the classpath to the current directory plus the PJ directory:
setenv CLASSPATH .:/home/fac/ark/public_html/pj/lib
License
The documentation files, Java source files, and Java class files in the Parallel Java Library ("PJ") are copyright © 2005-2012 by Alan Kaminsky. All rights reserved. For further information, contact the author, Alan Kaminsky, at ark@cs.rit.edu.
PJ is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3 of the License, or (at your option) any later version.
PJ is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
Linking this library statically or dynamically with other modules is making a combined work based on this library. Thus, the terms and conditions of the GNU General Public License cover the whole combination.
As a special exception, the copyright holders of this library give you permission to link this library with independent modules to produce an executable, regardless of the license terms of these independent modules, and to copy and distribute the resulting executable under terms of your choice, provided that you also meet, for each linked independent module, the terms and conditions of the license of that module. An independent module is a module which is not derived from or based on this library. If you modify this library, you may extend this exception to your version of the library, but you are not obligated to do so. If you do not wish to do so, delete this exception statement from your version.
A copy of the GNU General Public License is provided in the file gpl.txt. You may also obtain a copy of the GNU General Public License on the World Wide Web athttp://www.gnu.org/licenses/gpl.html.
Alan Kaminsky • Department of Computer Science • Rochester Institute of Technology • 4572 + 2433 = 7005 | Home Page |
---|
Copyright © 2016 Alan Kaminsky. All rights reserved. Last updated 07-Jan-2016. Please send comments to ark@cs.rit.edu.