Attention

The ShARC HPC cluster was decommissioned on the 30th of November 2023 at 17:00. It is no longer possible for users to access that cluster.

Octeract Engine

Octeract Engine is a massively parallel MINLP solver. It is written in ORL (Octeract Reformulation Language).

The engine contains 14 Octeract solvers for different types of mathematical structure, each with their own algorithms, to a grand total of 1031 high-performance algorithms.

Octeract Engine supports the Python, C++ and Julia programming languages alongside several modelling languages such as AMPL, PYOMO, JuMP, GAMS and Mosel.


Usage

Octeract Engine 3.1.0 can be loaded by module loading with the following command:

module load apps/octeract-engine/3.1.0/binary

Interactive jobs

After connecting to ShARC (see Establishing a SSH connection), Octeract Engine can be used interactively by starting an interactive session with qrshx and then issuing the commands:

module load apps/octeract-engine/3.1.0/binary
octeract-engine /usr/local/packages/apps/octeract-engine/3.1.0/binary/examples/nl/ex2_1_1.nl -d ${PWD}

Batch jobs

Octeract Engine can be used in both SMP (single node only) and MPI parallel environments.

Example SMP job:

#!/bin/bash
#$ -cwd
#$ -M a.person@sheffield.ac.uk
#$ -m abe
#$ -l h_rt=02:00:00
#$ -l rmem=2G
#$ -pe smp 8
#$ -N octeract-test-8core-smp
#$ -j yes
​
module load apps/octeract-engine/3.1.0/binary
octeract-engine /usr/local/packages/apps/octeract-engine/3.1.0/binary/examples/nl/ex2_1_1.nl -n8 -d $SGE_O_WORKDIR

Example MPI job:

#!/bin/bash
#$ -cwd
#$ -M a.person@sheffield.ac.uk
#$ -m abe
#$ -l h_rt=02:00:00
#$ -l rmem=2G
#$ -pe mpi 8
#$ -N octeract-test-8core-mpi
#$ -j yes
​
module load apps/octeract-engine/3.1.0/binary
octeract-engine /usr/local/packages/apps/octeract-engine/3.1.0/binary/examples/nl/ex2_1_1.nl -n8 -d $SGE_O_WORKDIR

Using Octeract Engine with Pyomo:

Integrating the Octeract Engine with Pyomo is straightforward using our Python module.

By creating a specific Python environment for Octeract Engine and Pyomo you can help keep libraries and executables managed and available without polluting your base environment. This process, followed by running an example, is shown below:

Hint

You only need to create the conda environment and install Pyomo once. To use it for subsequent jobs you need only run the command: source activate octeract-engine-pyomo

module load apps/octeract-engine/3.1.0/binary
module load apps/python/anaconda3-4.2.0
conda create -n octeract-engine-pyomo python=3.7
source activate octeract-engine-pyomo  #Make sure to use source activate, NOT conda activate.
pip install pyomo
pyomo --version #Check this version is supported.
python3 /usr/local/packages/apps/octeract-engine/3.1.0/binary/examples/pyomo/pyomo_example.py

The above instructions have been adjusted from the following documentation provided by Octeract at: https://docs.octeract.com/htg1005-how_to_use_pyomo_with_octeract_engine


Installation notes

Octeract Engine 3.1.0 was a binary installation provided from the following link (https://download.octeract.com/octeract-engine-3.1.0-Linux-Centos7.tar.gz) and was installed using the script install_octeract-engine.sh

The software was tested by running the example batch job supplied above.