Installation
Code Availability
THOR is available via Apptainer containers. The source code will be released openly after publication of the code paper (under review). For early source access or contributions, contact contact@thor-rt.org.
Containers Available
Apptainer containers provide an alternative to compiling from source — the generic image runs on CPU, NVIDIA, or AMD GPU, MPI included (experimental).
Requirements
- Clang >= 18.0 (required)
- CMake >= 3.29.0 && < 4.0.0
- Git with submodules
- MPI (for distributed computing)
- SYCL implementation: AdaptiveCpp >= 25.10.0 with the required PTX logarithm fix (recommended), or Intel oneAPI
PointCloud/Voronoi datasets use portable SYCL kernels and oneDPL sorting when built with Intel oneAPI. Install the oneDPL headers alongside the compiler.
Setup
1. Clone the repository
Use graphical instead for native-display or GUI-test dependencies; all
initializes every nested submodule. Failed updates retry after 15, 30, and 60
seconds before tag-fetch and broken-checkout repair. Successful updates incur
no delay; a persistent failure adds at most 105 seconds of backoff, plus the
Git operations themselves. The same helper is used by CI. [AI-Codex]
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
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.
AdaptiveCpp targets: use generic only
The supported and tested AdaptiveCpp configuration is the default generic
(SSCP/JIT) target — a single build serves both CPU and GPU execution.
Only change ACPP_TARGETS if you know what you are doing, see
Compiler Settings.
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:
Python Packages
For the full Python environment without compiling the C++ bindings, run from the repository root:
This installs the analysis helpers, live client, MCP interface, and test helpers.
Install thor-bindings separately if needed.
For reference-data preparation, install the base package:
See Preparing reference data for catalog manifests, downloads, verification, and shared data storage.
THOR includes Python packages for post-processing and visualization. To install the thor-tools CLI globally:
For development (editable install into the current environment):
See Python Packages for details on individual packages and the C++ bindings.