Laptop/PC/VM/Container

This section shows you the pre-requisites to install the COMPSs framework. There are 3 types:

  • Essential: Minimal packages to install COMPSs.

  • Build: Extra packages to build COMPSs from sources.

  • Optional: Extra packages recommended for performance purposes.

Essential Requirements

There are some systemwide packages required in order to install COMPSs.

They are, depending on your OS and version, shown here:

Ubuntu 22.04 dependencies installation commands:

#!/usr/bin/env bash

sudo apt-get install -y openjdk-21-jdk graphviz xdg-utils libtool automake build-essential \
                        pkgconf python3 python3-dev python3-pip libboost-serialization-dev \
                        libboost-iostreams-dev libxml2 libxml2-dev csh gfortran libgmp3-dev \
                        flex bison texinfo libpapi-dev
sudo wget https://services.gradle.org/distributions/gradle-8.7-bin.zip -O /opt/gradle-8.7-bin.zip
sudo unzip /opt/gradle-8.7-bin.zip -d /opt
export JAVA_HOME=$(dirname $(dirname $(readlink -f $(which javac))))
echo $JAVA_HOME >> ~/.bashrc
echo 'export GRADLE_HOME=/opt/gradle-8.7' >> ~/.bashrc
export GRADLE_HOME=/opt/gradle-8.7
echo 'export PATH=/opt/gradle-8.7/bin:$PATH' >> ~/.bashrc
export PATH=/opt/gradle-8.7/bin:$PATH
export EXTRAE_MPI_HEADERS=/usr/include/x86_64-linux-gnu/mpi

this example script

Ubuntu 20.04 dependencies installation commands:

#!/usr/bin/env bash

sudo apt-get install -y openjdk-21-jdk graphviz xdg-utils libtool automake build-essential \
                        python3 python3-dev python3-pip libboost-serialization-dev libboost-iostreams-dev \
                        libxml2 libxml2-dev csh gfortran libgmp3-dev flex bison texinfo \
                        libpapi-dev
sudo wget https://services.gradle.org/distributions/gradle-8.7-bin.zip -O /opt/gradle-8.7-bin.zip
sudo unzip /opt/gradle-8.7-bin.zip -d /opt
export JAVA_HOME=$(dirname $(dirname $(readlink -f $(which javac))))
echo $JAVA_HOME >> ~/.bashrc
echo 'export GRADLE_HOME=/opt/gradle-8.7' >> ~/.bashrc
export GRADLE_HOME=/opt/gradle-8.7
echo 'export PATH=/opt/gradle-8.7/bin:$PATH' >> ~/.bashrc
export PATH=/opt/gradle-8.7/bin:$PATH

this example script

Ubuntu 18.04 dependencies installation commands:

#!/usr/bin/env bash

sudo apt-get install -y openjdk-21-jdk graphviz xdg-utils libtool automake build-essential \
                        python3 python3-dev python3-pip libboost-serialization-dev libboost-iostreams-dev \
                        libxml2 libxml2-dev csh gfortran libgmp3-dev flex bison texinfo \
                        libpapi-dev
sudo wget https://services.gradle.org/distributions/gradle-8.7-bin.zip -O /opt/gradle-8.7-bin.zip
sudo unzip /opt/gradle-8.7-bin.zip -d /opt
export JAVA_HOME=$(dirname $(dirname $(readlink -f $(which javac))))
echo $JAVA_HOME >> ~/.bashrc
echo 'export GRADLE_HOME=/opt/gradle-8.7' >> ~/.bashrc
export GRADLE_HOME=/opt/gradle-8.7
echo 'export PATH=/opt/gradle-8.7/bin:$PATH' >> ~/.bashrc
export PATH=/opt/gradle-8.7/bin:$PATH

this example script

Ubuntu 16.04 dependencies installation commands:

#!/usr/bin/env bash

sudo apt-get install -y openjdk-21-jdk graphviz xdg-utils libtool automake build-essential \
                        libboost-serialization-dev libboost-iostreams-dev libxml2 libxml2-dev \
                        csh gfortran python-pip libpapi-dev
sudo wget https://services.gradle.org/distributions/gradle-8.7-bin.zip -O /opt/gradle-8.7-bin.zip
sudo unzip /opt/gradle-8.7-bin.zip -d /opt
export JAVA_HOME=$(dirname $(dirname $(readlink -f $(which javac))))
echo $JAVA_HOME >> ~/.bashrc
echo 'export GRADLE_HOME=/opt/gradle-8.7' >> ~/.bashrc
export GRADLE_HOME=/opt/gradle-8.7
echo 'export PATH=/opt/gradle-8.7/bin:$PATH' >> ~/.bashrc
export PATH=/opt/gradle-8.7/bin:$PATH

this example script

Tip

If your version is not in this list, you can get in contact with us and we will be happy to help you:

support-compss@bsc.es

OpenSuse Tumbleweed dependencies installation commands:

#!/usr/bin/env bash

sudo zypper install --type pattern -y devel_basis
sudo zypper install -y java-1_21_0-openjdk-headless java-1_21_0-openjdk java-1_21_0-openjdk-devel \
                       graphviz xdg-utils python python-devel python3 python3-devel python3-decorator \
                       libtool automake libboost_headers1_71_0-devel libboost_serialization1_71_0 \
                       libboost_iostreams1_71_0  libxml2-2 libxml2-devel tcsh gcc-fortran papi libpapi \
                       gcc-c++ papi-devel gmp-devel
sudo wget https://services.gradle.org/distributions/gradle-8.7-bin.zip -O /opt/gradle-8.7-bin.zip
sudo unzip /opt/gradle-8.7-bin.zip -d /opt
export JAVA_HOME=$(dirname $(dirname $(readlink -f $(which javac))))
echo $JAVA_HOME >> ~/.bashrc
echo 'export GRADLE_HOME=/opt/gradle-8.7' >> ~/.bashrc
export GRADLE_HOME=/opt/gradle-8.7
echo 'export PATH=/opt/gradle-8.7/bin:$PATH' >> ~/.bashrc
export PATH=/opt/gradle-8.7/bin:$PATH

this example script

OpenSuse Leap 15.X dependencies installation commands:

#!/usr/bin/env bash

sudo zypper install --type pattern -y devel_basis
sudo zypper install -y java-1_21_0-openjdk-headless java-1_21_0-openjdk java-1_21_0-openjdk-devel \
                       graphviz xdg-utils python3 python3-devel python3-decorator libtool automake \
                       libboost_headers1_66_0-devel libboost_serialization1_66_0 libboost_iostreams1_66_0 \
                       libxml2-2 libxml2-devel tcsh gcc-fortran papi libpapi gcc-c++ libpapi papi papi-devel \
                       gmp-devel lam lam-devel link
sudo wget https://services.gradle.org/distributions/gradle-8.7-bin.zip -O /opt/gradle-8.7-bin.zip
sudo unzip /opt/gradle-8.7-bin.zip -d /opt
export JAVA_HOME=$(dirname $(dirname $(readlink -f $(which javac))))
echo $JAVA_HOME >> ~/.bashrc
echo 'export GRADLE_HOME=/opt/gradle-8.7' >> ~/.bashrc
export GRADLE_HOME=/opt/gradle-8.7
echo 'export PATH=/opt/gradle-8.7/bin:$PATH' >> ~/.bashrc
export PATH=/opt/gradle-8.7/bin:$PATH

this example script

OpenSuse 42.2 dependencies installation commands:

#!/usr/bin/env bash

sudo zypper install --type pattern -y devel_basis
sudo zypper install -y java-1_21_0-openjdk-headless java-1_21_0-openjdk java-1_21_0-openjdk-devel \
                       graphviz xdg-utils python3 python3-devel python3-decorator libtool automake \
                       boost-devel libboost_serialization1_54_0 libboost_iostreams1_54_0 libxml2-2 \
                       libxml2-devel tcsh gcc-fortran python-pip papi libpapi gcc-c++ libpapi papi \
                       papi-devel gmp-devel
sudo wget https://services.gradle.org/distributions/gradle-8.7-bin.zip -O /opt/gradle-8.7-bin.zip
sudo unzip /opt/gradle-8.7-bin.zip -d /opt
export JAVA_HOME=$(dirname $(dirname $(readlink -f $(which javac))))
echo $JAVA_HOME >> ~/.bashrc
echo 'export GRADLE_HOME=/opt/gradle-8.7' >> ~/.bashrc
export GRADLE_HOME=/opt/gradle-8.7
echo 'export PATH=/opt/gradle-8.7/bin:$PATH' >> ~/.bashrc
export PATH=/opt/gradle-8.7/bin:$PATH

this example script

Warning

OpenSuse provides Python 3.4 from its repositories, which is not supported by the COMPSs python binding. Please, update Python 3 (python and python-devel) to a higher version if you expect to install COMPSs from sources.

Alternatively, you can use a virtual environment.

Tip

If your version is not in this list, you can get in contact with us and we will be happy to help you:

support-compss@bsc.es

Fedora 32 dependencies installation commands:

#!/usr/bin/env bash

sudo dnf install -y java-1.21.0-openjdk java-1.21.0-openjdk-devel graphviz xdg-utils libtool automake \
                    python3 python3-devel boost-devel boost-serialization boost-iostreams libxml2 \
                    libxml2-devel gcc gcc-c++ gcc-gfortran tcsh @development-tools bison flex texinfo \
                    papi papi-devel gmp-devel
# If the libxml softlink is not created during the installation of libxml2, the COMPSs installation may fail.
# In this case, the softlink has to be created manually with the following command:
sudo ln -s /usr/include/libxml2/libxml/ /usr/include/libxml
sudo wget https://services.gradle.org/distributions/gradle-8.7-bin.zip -O /opt/gradle-8.7-bin.zip
sudo unzip /opt/gradle-8.7-bin.zip -d /opt
export JAVA_HOME=$(dirname $(dirname $(readlink -f $(which javac))))
echo $JAVA_HOME >> ~/.bashrc
echo 'export GRADLE_HOME=/opt/gradle-8.7' >> ~/.bashrc
export GRADLE_HOME=/opt/gradle-8.7
echo 'export PATH=/opt/gradle-8.7/bin:$PATH' >> ~/.bashrc
export PATH=/opt/gradle-8.7/bin:$PATH

this example script

Fedora 25 dependencies installation commands:

#!/usr/bin/env bash

sudo dnf install -y java-1.21.0-openjdk java-1.21.0-openjdk-devel graphviz xdg-utils libtool automake \
                    python3 python3-libs python3-pip python-devel python3-decorator boost-devel \
                    boost-serialization boost-iostreams libxml2 libxml2-devel gcc gcc-c++ gcc-gfortran \
                    tcsh @development-tools redhat-rpm-config papi
# If the libxml softlink is not created during the installation of libxml2, the COMPSs installation may fail.
# In this case, the softlink has to be created manually with the following command:
sudo ln -s /usr/include/libxml2/libxml/ /usr/include/libxml
sudo wget https://services.gradle.org/distributions/gradle-8.7-bin.zip -O /opt/gradle-8.7-bin.zip
sudo unzip /opt/gradle-8.7-bin.zip -d /opt
export JAVA_HOME=$(dirname $(dirname $(readlink -f $(which javac))))
echo $JAVA_HOME >> ~/.bashrc
echo 'export GRADLE_HOME=/opt/gradle-8.7' >> ~/.bashrc
export GRADLE_HOME=/opt/gradle-8.7
echo 'export PATH=/opt/gradle-8.7/bin:$PATH' >> ~/.bashrc
export PATH=/opt/gradle-8.7/bin:$PATH

this example script

Tip

If your version is not in this list, you can get in contact with us and we will be happy to help you:

support-compss@bsc.es

CentOS 7 dependencies installation commands:

#!/usr/bin/env bash

sudo rpm -iUvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
sudo yum -y update
sudo yum install java-1.21.0-openjdk java-1.21.0-openjdk-devel graphviz xdg-utils libtool \
                 automake python3 python3-libs python3-pip python3-devel python3-decorator \
                 boost-devel boost-serialization boost-iostreams libxml2 libxml2-devel gcc \
                 gcc-c++ gcc-gfortran tcsh @development-tools redhat-rpm-config papi
sudo pip install decorator
export JAVA_HOME=$(dirname $(dirname $(readlink -f $(which javac))))
echo $JAVA_HOME >> ~/.bashrc
echo 'export GRADLE_HOME=/opt/gradle-8.7' >> ~/.bashrc
export GRADLE_HOME=/opt/gradle-8.7
echo 'export PATH=/opt/gradle-8.7/bin:$PATH' >> ~/.bashrc
export PATH=/opt/gradle-8.7/bin:$PATH

this example script

Tip

If your version is not in this list, you can get in contact with us and we will be happy to help you:

support-compss@bsc.es

Debian 8 dependencies installation commands:

#!/usr/bin/env bash

su -
echo "deb http://ppa.launchpad.net/webupd21team/java/ubuntu xenial main" | tee /etc/apt/sources.list.d/webupd21team-java.list
echo "deb-src http://ppa.launchpad.net/webupd21team/java/ubuntu xenial main" | tee -a /etc/apt/sources.list.d/webupd21team-java.list
apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys EEA14886
apt-get update
apt-get install oracle-java21-installer
apt-get install graphviz xdg-utils libtool automake build-essential python3 python3-decorator \
                python3-pip python3-dev libboost-serialization1.55.0 libboost-iostreams1.55.0 \
                libxml2 libxml2-dev libboost-dev csh gfortran papi-tools
wget https://services.gradle.org/distributions/gradle-8.7-bin.zip -O /opt/gradle-8.7-bin.zip
unzip /opt/gradle-8.7-bin.zip -d /opt
export JAVA_HOME=$(dirname $(dirname $(readlink -f $(which javac))))
echo $JAVA_HOME >> ~/.bashrc
echo 'export GRADLE_HOME=/opt/gradle-8.7' >> ~/.bashrc
export GRADLE_HOME=/opt/gradle-8.7
echo 'export PATH=/opt/gradle-8.7/bin:$PATH' >> ~/.bashrc
export PATH=/opt/gradle-8.7/bin:$PATH

this example script

Tip

If your version is not in this list, you can get in contact with us and we will be happy to help you:

support-compss@bsc.es

Tip

If your distribution is not in this list, you can get in contact with us and we will be happy to help you:

support-compss@bsc.es

macOS Sequoia dependencies installation commands:

Although many packages can be installed with Homebrew, some of them will have to be installed manually from their source files. It is also important to mention that, some package names may be slightly different in Homebrew, compared to Linux distributions, thus, some previous search for equivalences may be required. Our tested installation sequence was as follows. Please install each package INDIVIDUALLY, since some can have post-installation instructions that require adding environment variables to your shell profile.

$ brew install openjdk@21
$ sudo ln -sfn /opt/homebrew/opt/openjdk@21/libexec/openjdk.jdk /Library/Java/JavaVirtualMachines/openjdk-21.jdk
$ brew install graphviz
$ brew install libxslt
$ brew install xmlto
$ brew install libtool
$ brew install automake
$ brew install coreutils
$ brew install util-linux
$ brew install boost
$ brew install gradle
$ export JAVA_HOME=$(dirname $(readlink $(which javac)))/java_home
$ echo $JAVA_HOME >> ~/.bashrc
$ echo 'export GRADLE_HOME=/opt/gradle-8.7' >> ~/.bashrc
$ export GRADLE_HOME=/opt/gradle-8.7
$ echo 'export PATH=/opt/gradle-8.7/bin:$PATH' >> ~/.bashrc
$ export PATH=/opt/gradle-8.7/bin:$PATH

The package xdg-utils has to be installed by hand (after installing libxslt and xmlto):

$ export XML_CATALOG_FILES="/usr/local/etc/xml/catalog"
$ git clone https://gitlab.freedesktop.org/xdg/xdg-utils.git
$ cd xdg-utils
$ ./configure --prefix=/usr/local
$ make ; make install

You can download the following script for your reference, but we STRONGLY recommend to run it command by command, since every installation step with brew usually includes post-installation instructions.

brew install openjdk@21
sudo ln -sfn /opt/homebrew/opt/openjdk@21/libexec/openjdk.jdk /Library/Java/JavaVirtualMachines/openjdk-21.jdk
brew install graphviz
brew install libxslt
brew install xmlto
brew install libtool
brew install automake
brew install coreutils
brew install util-linux
brew install boost
brew install gradle
export JAVA_HOME=$(dirname $(readlink $(which javac)))/java_home
echo $JAVA_HOME >> ~/.bashrc
echo 'export GRADLE_HOME=/opt/gradle-8.7' >> ~/.bashrc
export GRADLE_HOME=/opt/gradle-8.7
echo 'export PATH=/opt/gradle-8.7/bin:$PATH' >> ~/.bashrc
export PATH=/opt/gradle-8.7/bin:$PATH
# The package ``xdg-utils`` has to be installed by hand (after installing ``libxslt`` and ``xmlto``)
export XML_CATALOG_FILES="/usr/local/etc/xml/catalog"
git clone https://gitlab.freedesktop.org/xdg/xdg-utils.git
cd xdg-utils
./configure --prefix=/usr/local
make ; make install

this example script

Warning

Tracing is not yet available for macOS, therefore, its dependencies do not need to be installed.

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. After each package installation, PAY ATTENTION to the messages reported by Homebrew, since extra steps may be required to complete each installation (e.g. add variables to your .bash_profile, etc…)

Tip

If your version is not in this list, you can get in contact with us and we will be happy to help you:

support-compss@bsc.es

Please, check Linux and Ubuntu tab in order to get the instructions to install COMPSs in WSL.

Tip

If your operative system is not in this list, you can get in contact with us and we will be happy to help you:

support-compss@bsc.es

The following table provides a list of dependencies for installing COMPSs package.

The exact names may vary depending on the Linux/macOS 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-21-jdk (or JRE if using the pre-built runtime), graphviz, xdg-utils, openssh-server, gradle (8.7)

COMPSs Python Binding

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

COMPSs C/C++ Binding

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

COMPSs R Binding

build-essential, R (>=3.6.3)

COMPSs Tracing

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

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) 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.

For the Workflow Provenance generation, some distributions may not have installed yaml and pytz, so you will have to install them manually.

All 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.

Caution

The mpi4py package requires to have the MPI header/development package available, which has to be installed with the OS package manager.

$ sudo apt-get install libopenmpi-dev  # Adapt for your OS package manager