Skip to content

Installation

Access Notice

This code is not yet public. This page documents the code for current users only.

Containers Available

Apptainer containers provide an alternative to compiling from source (experimental, CPU only).

Requirements

  • Clang >= 18.0 (required)
  • CMake >= 3.29.0 && < 4.0.0
  • Git with submodules
  • MPI (for distributed computing)
  • SYCL implementation: AdaptiveCpp (recommended) or Intel oneAPI

PointCloud limitation

PointCloud datasets with Voronoi tessellation are not supported with Intel oneAPI—use AdaptiveCpp.

Setup

1. Clone the repository

git clone https://github.com/cbyrohl/thor.git
cd thor
git submodule update --init --recursive

Latter command will initialize a number of dependencies that might not be available on the system otherwise.

2. Install SYCL runtime

You need either AdaptiveCpp (recommended) or Intel oneAPI. If your HPC provider doesn't offer these as modules, you'll need to compile AdaptiveCpp from source. See AdaptiveCpp setup for guidance.

3. Build

export CXX="<c++ compiler>"
export CC="<c compiler>"
cmake -S . -B build
cmake --build build

Set CC and CXX to the paths of your SYCL compiler. For AdaptiveCpp, the executables are clang and acpp, while for Intel oneAPI these are icx and icpx, see here for more details.

Memory Usage

Compilation can require large amounts of memory. If you run out of memory during the build, reduce the number of concurrent builders by adding -j1 to the build command:

cmake --build build -j1

Getting Help