PCJ is a library for Java language that helps to perform parallel and distributed calculations. The current version is able to work on the multicore systems connected with the typical interconnect such as ethernet or infiniband providing users with the uniform view across nodes.

Download PCJ library (jar file of 29.04.2017 ver. 5.0.6)  Latest (bug fixing release)!

Download PCJ manual (pdf) for PCJ 5 New!

The PCJ library can be used with no cost at BSD license. It requires Java 8 and no additional tools or comilers.  The PCJ library for Java 7 is available in the dowload section.

The source code is available at GitHub: https://github.com/hpdcj/pcj

Version 5.0.6 fixes some bugs occuring with the massive communication.

Version 5.0.3 contains support for Intel KNL chips.

Version 5 introduces asyncPut() and asyncGet() methods; put() and get() methods are now synchronous. There is new handling of shared variables. The code developed for PCJ 4 hast to be modified. For details please reffer to the JavaDoc file.

The usage should be acknowledged by reference to the PCJ web site and/or reference to the papers:

Full paper list can be found here: http://pcj.icm.edu.pl/pcj-papers

Contact: bala@icm.edu.pl faramir@icm.edu.pl

PhD degree of Łukasz Górski

Łukasz Górski received PhD degree in computer science based on the disertation titled: Adaptation of selected parallel algorithms to the PGAS programming model and their implementation in Java with the use of PCJ library. The PhD degree was granted by the Institute of Computer Science, Polish Academy of Sciences.

PCJ 5 scales up to 196 608 cores

The PCJ application was successfuly run on more than 100 000 cores of Cray XC40 at HLRS. This achievement was possible due to the Marek Nowicki visit to HLRS sponsored by EuroLab-4-HPC (visit) and PRACE (CPU time). The PCJ benchamrks were executed together with the 2D stencil code based on the Game of Life example. The code shows excellent scalability for all cores used (4096 nodes = 196608 cores) The parallel efficiency achieved in weak scalling regime was 99.74%.

PGAS AAP - Workshop on PGAS programming model and its application to HPC


September 10-13, 2017, Lublin , Poland

List of contributions presented:

  • Interoperability of GASPI and MPI in Large Scale Scientific Applications - Dana Akhmetova, Luis Cebamanos, Roman Iakymchuk, Tiberiu Rotaru, Mirko Rahn, Stefano Markidis, Erwin Laure, Valeria Bartsch and Christian Simmendinger
  • Evaluation of the parallel performance of the Java and PCJ on the Intel KNL based systems - Marek Nowicki, Łukasz Górski and Piotr Bala
  • Fault-tolerance mechanisms for the Java parallel codes implemented with the PCJ library - Michał Szynkiewicz and Marek Nowicki
  • Exploring graph analytics with the PCJ toolbox - Roxana Istrate, Panagiotis Barkoutsos, Michele Dolfi, Peter Staar and Costas Bekas
  • Big Data analytics in Java with PCJ library - performance comparison with Hadoop - Marek Nowicki, Łukasz Górski, Magdalena Ryczkowska and Piotr Bala
  • Performance comparison of graph BFS implemented in MapReduce and PGAS programming models - Magdalena Ryczkowska and Marek Nowicki

PCJ tutorial at Science Festival 2016

PCJ has been presented at the Science Festival on 24 September 2016. The lecture provided prof. Piotr Bala has been dedicated to the general public (with some knowledge of the programming).

PCJ tutorial at Science Festival 2015

PCJ has been presented at the Science Festival on 26 September 2015. The lecture provided prof. Piotr Bala has been dedicated to the general public (with some knowledge of the programming).

PCJ tutorial at PPAM 2015

The PCJ tutorial will de delivered on Sunday 6th September in Kraków (Poland). The 4-hour tutorial comprises three parts, with time for discussion at the included coffee breaks. The tutorial is organized in the form of hands-out with the short introduction. We would like to get participants involved in the programming of simple examples provided by the organizers as well as computational kernels brought by the participants.

Part 1(1 hour) briefly covers the PGAS programming model and presents details of the PCJ library. It provides overview of the library and presents examples of the typical programming tasks. Examples of the parallelization of the most popular programming kernels will be provided.

Part 2 (1 hour) is design as practical introduction to the PCJ. Participants will write and execute parallel applications starting from the “Hello world”, trough different communications schemas up to the parallelization of the selected computational kernels.

Part 3 (2 hours) will focus on more advanced applications including problems suggested by the participants.

For more information consult PPAM 2015 web page

HPDCJ project

The HPDCJ (Heterogenous parallel and distributed computing with Java) proposal based on the PCJ has been accepted by CHIST-ERA. It is among 3 (out pf 32) accepted proposal.

The project focuses on the ease of use and programmability of Java for distributed heterogeneous computing in order to make it exploitable by the huge user base of mainstream computing. Based on PCJ library we will introduce and transparently expose parallelism in Java, with minimal change to the specifics of the language, thus allowing programmers to focus on the application. We have demonstrated power and scalability of the PCJ library for the parallel systems and we will extend it for the cases where communication cost and latency could be higher.

Project will extend the existing solution with the capability of running on the heterogeneous systems including GPU and mobile devices. The user will obtain the possibility to execute computational intensive parts of the application on multiple GPUs. Since our solution is based on Java it can be easily run on mobile devices. Within the project we will extend the  library capabilities with the optimized communication and scheduling mechanism necessary to fully use such devices.

Project will utilize the potential of the parallel Java library to process distributed data. The existing solution benefits from the parallel I/O performed by the multiple JVMs. We will use this solution to optimize the process of data distribution and storage including streaming of the large data sets.

Project will address dependability and resilience by adding fault tolerance mechanisms to the parallel Java library including fault detection and rescheduling of the application execution. The mechanism will extend capabilities of the existing PCJ library and will be transparent to the users.

Project will show the applicability of our framework for distributed heterogeneous systems by a set of selected, key applications including data-intensive Big Data applications.

The project will be implemented by :

  • ICM University of Warsaw (Watrsaw, Poland)
  • IBM Research Lab (Zurich, Switzerland)
  • Queen's University of Belfast (Belfast, UK)
  • Bilkent Üniversitesi (Ankara, Turkey)

More informations on CHIST-ERA web site.