BwUniCluster2.0/Software/R/terra: Difference between revisions
Line 97: | Line 97: | ||
=== Compile GDAL === |
=== Compile GDAL === |
||
Building GDAL requires newer versions of <code>OpenEXR</code> and <code>libdeflate</code> then available on the system. |
Building GDAL requires newer versions of <code>OpenEXR</code> and <code>libdeflate</code> then available on the system. |
||
<pre> |
|||
OPENEXR_VER |
|||
cd $HOME/src |
|||
wget https://github.com/AcademySoftwareFoundation/openexr/releases/download/v3.3.1/openexr-3.3.1.tar.gz |
|||
tar xf openexr-3.3.1.tar.gz |
|||
cd openexr-3.3.1/ |
|||
mkdir build && cd build |
|||
# Compile OpenEXR. |
|||
cmake -DCMAKE_INSTALL_PREFIX="$HOME/sw/R" -DCMAKE_BUILD_TYPE=Release .. |
|||
cmake --build . -j 8 |
|||
cmake --build . --target install |
|||
</pre> |
|||
<pre> |
<pre> |
Revision as of 15:19, 28 October 2024
Note that the instructions provided below refer to R 4.4.1 (but not R 4.2.1)! UNDER CONSTRUCTION!!!
General information
terra is a R package for spatial data analysis with vectors (points, lines, polygons) and raster (grid) data.
sf is a R package that provides simple feature access for R.
In order to install those, we need to fulfill the following system requirements:
These packages are not available centrally on the cluster, but can be installed manually (to the $HOME
-directory). Specifically, to install these packages, they need to be built from source.
Installation
Please enter (or copy & paste) the code, presented in the boxes below, directly into your shell/command line on bwUniCluster. The whole process will take approximately 45 minutes.
First, for compilation we obtain an interactive session (on a compute node):
# Obtain interactive session salloc -n 8 -t 60 -p single
Preparations
Prepare an .R/Makevars
file (if it does not already exists). This file specifies how R should compile the packages (i.e., sets some 'compiler flags').
If an .R/Makevars
file is present in your home directory ($HOME
), check whether the flags displayed below are already set and apply adjustments, if necessary:
# Ensure that the ~/.R/Makevars file has the following lines: cat $HOME/.R/Makevars CXX14=g++ CXX17=g++ CXX14FLAGS += -std=c++14 CXX17FLAGS += -std=c++17 CXXFLAGS = -O3 -fPIC -march=cascadelake -ffp-contract=off -fno-fast-math -fno-signed-zeros -fopenmp -Wno-unknown-warning-option
Please run the following lines of code to set the flags, if necessary:
mkdir -p ~/.R echo "CXX14=g++" > ~/.R/Makevars echo "CXX17=g++" >> ~/.R/Makevars echo "CXXFLAGS = -O3 -fPIC -march=cascadelake -ffp-contract=off -fno-fast-math -fno-signed-zeros -fopenmp -Wno-unknown-warning-option" >> ~/.R/Makevars echo "CXX14FLAGS += -std=c++14" >> ~/.R/Makevars echo "CXX17FLAGS += -std=c++17" >> ~/.R/Makevars
Next, we create the directories for the source code and installation targets, respectively. Furthermore, we load all (software) modules relevant for compilation and ensure that the compilers are found:
# We install the libraries into the ~/sw/R directory. mkdir -p ~/sw/R # Source directory. mkdir -p ~/src # Load required modules. module purge module load devel/cmake/3.29.3 module load devel/python/3.12.3_gnu_13.3 # Check that the GNU compiler 13.3 is loaded. gcc --version # Set compiler for cmake and make. export CC=$(which gcc) export CXX=$(which g++)
Install external programs
First, we download the sources of GDAL, PROJ, GEOS (and their dependencies) and install them:
Compile PROJ
# Download and unpack the PROJ source code: PROJ_VER=9.4.1 cd $HOME/src wget http://download.osgeo.org/proj/proj-$PROJ_VER.tar.gz tar xf proj-$PROJ_VER.tar.gz cd proj-$PROJ_VER mkdir build && cd build # Compile and install PROJ: cmake -DCMAKE_INSTALL_PREFIX="$HOME/sw/R" .. cmake --build . -j 8 cmake --build . --target install
Compile GDAL
Building GDAL requires newer versions of OpenEXR
and libdeflate
then available on the system.
OPENEXR_VER cd $HOME/src wget https://github.com/AcademySoftwareFoundation/openexr/releases/download/v3.3.1/openexr-3.3.1.tar.gz tar xf openexr-3.3.1.tar.gz cd openexr-3.3.1/ mkdir build && cd build # Compile OpenEXR. cmake -DCMAKE_INSTALL_PREFIX="$HOME/sw/R" -DCMAKE_BUILD_TYPE=Release .. cmake --build . -j 8 cmake --build . --target install
cd $HOME/src GDAL_VER=3.8.3 wget http://download.osgeo.org/gdal/$GDAL_VER/gdal-$GDAL_VER.tar.gz tar xf gdal-$GDAL_VER.tar.gz cd gdal-$GDAL_VER mkdir build cd build cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=$HOME/sw/R .. cmake --build . -j 8 cmake --build . --target install
Finally, install GEOS
cd $HOME/src GEOS_VER=3.12.1 wget http://download.osgeo.org/geos/geos-$GEOS_VER.tar.bz2 tar xf geos-$GEOS_VER.tar.bz2 cd geos-$GEOS_VER mkdir _build cd _build cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=$HOME/sw/R .. make -j 8 ctest -j 8 make install
Installing the R packages
In order to install the two R packages, we need R to understand where we installed the 3 underlying programs, so we export the necessary paths.
export LD_LIBRARY_PATH=$HOME/sw/R/lib64:$LD_LIBRARY_PATH export PATH=$PATH:$HOME/sw/R/bin export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:$HOME/sw/R/lib64/pkgconfig export GDAL_DATA=$HOME/sw/R/share/gdal
Additionally, the R package installation features compilation of built-in C++ code, for which we specify compilation options ('compiler flags')
export CFLAGS=-I$HOME/sw/R/include export CXX="icpc -std=c++11" export CXX17=icpc
Now, we install terra and sf from within R.
module load math/R/4.1.2 R -q R> install.packages("terra") R> library(terra) terra 1.7.71 R> install.packages("sf") R> library(sf) Linking to GEOS 3.12.1, GDAL 3.8.3, PROJ 9.3.1; sf_use_s2() is TRUE
Preparations to use the terra and sf packages
Since terra and sf depend on the external programs we installed, several environment variables have to be set before using the packages to allow R to address these programs.
We recommend to add the export commands
export LD_LIBRARY_PATH=$HOME/sw/R/lib64:$LD_LIBRARY_PATH export PATH=$PATH:$HOME/sw/R/bin export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:$HOME/sw/R/lib64/pkgconfig export GDAL_DATA=$HOME/sw/R/share/gdal
to your batch job scripts that use terra and sf or to run them directly in the command line if you use an interactive session.