Dependencies

Next we provide a list of dependencies for installing COMPSs package. The exact names may vary depending on the Linux distribution but this list provides a general overview of the COMPSs dependencies. For specific information about your distribution please check the Depends section at your package manager (apt, yum, zypper, etc.).

Table 1 COMPSs dependencies

Module

Dependencies

COMPSs Runtime

openjdk-8-jre, graphviz, xdg-utils, openssh-server

COMPSs Python Binding

libtool, automake, build-essential, python (>=3.6), python3-dev, python3-setuptools

COMPSs C/C++ Binding

libtool, automake, build-essential, libboost-all-dev, libxml2-dev

COMPSs Tracing

libxml2 (>= 2.5), libxml2-dev (>= 2.5), gfortran, papi

Tip

For macOS, we strongly recommend to use the Homebrew package manager, since it includes the majority of dependencies needed. In other package managers, such as MacPorts, quite some dependencies may be missing as packages, which will force you to have to install them from their source codes.

As an example for some distributions and versions:

Ubuntu 22.04 dependencies installation commands:

$ sudo apt-get install -y openjdk-8-jdk graphviz xdg-utils libtool automake build-essential pkgconf python3 python3-dev libboost-serialization-dev libboost-iostreams-dev  libxml2 libxml2-dev csh gfortran libgmp3-dev flex bison texinfo python3-pip libpapi-dev
$ sudo wget https://services.gradle.org/distributions/gradle-5.4.1-bin.zip -O /opt/gradle-5.4.1-bin.zip
$ sudo unzip /opt/gradle-5.4.1-bin.zip -d /opt

Attention

Before installing it is important to have a proper JAVA_HOME environment variable definition. This variable must contain a valid path to a Java JDK (as a remark, it must point to a JDK, not JRE). So, please, export this variable and include it into your .bashrc:

$ echo 'export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64/' >> ~/.bashrc
$ export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64/

Attention

Before installing it is important to have MPI headers exported into the EXTRAE_MPI_HEADERS in order to compile EXTRAE successfully. So, please, export this variable pointing to your MPI headers folder, like for example:

$ export EXTRAE_MPI_HEADERS=/usr/include/x86_64-linux-gnu/mpi

Attention

Before installing it is also necessary to export the GRADLE_HOME environment variable and include its binaries path into the PATH environment variable:

$ echo 'export GRADLE_HOME=/opt/gradle-5.4.1' >> ~/.bashrc
$ export GRADLE_HOME=/opt/gradle-5.4.1
$ echo 'export PATH=/opt/gradle-5.4.1/bin:$PATH' >> ~/.bashrc
$ export PATH=/opt/gradle-5.4.1/bin:$PATH

Important

Python version 3.8 or higher is recommended since some of the Python binding features are only supported in these Python versions (e.g. worker cache)

Build Dependencies

To build COMPSs from sources you will also need wget, git and maven (maven web). To install with Pip, pip for the target Python version is required.

Optional Dependencies

For the Python binding it is recommended to have dill (dill project), guppy3 (guppy3 project) and numpy (numpy project <https://pypi.org/project/numpy/>) installed:

  • The dill package increases the variety of serializable objects by Python (for example: lambda functions)

  • The guppy3 package is needed to use the @local decorator.

  • The numpy package is useful to improve the serialization/deserialization performance since its internal mechanisms are used by the Python binding.

These packages can be found in PyPI and can be installed via pip.

Since it is possible to execute python applications using workers spawning MPI processes instead of multiprocessing, it is necessary to have openmpi, openmpi-devel and openmpi-libs system packages installed and mpi4py with pip.