Skip to content

HayleyDeckers/cern-work

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

O2

Thesis work at CERN on optimized array math for structs of arrays. This project provides an Entity–Component design for the O2 AOD (Analysis Object Data) framework, with vectorized and multithreaded array operations powered by expression templates and SIMD.

Overview

  • Structs of arrays: Data is laid out in columnar form (arrays per component) for cache-friendly, vectorized access.
  • Expression templates: Array operations are built as lazy expressions and evaluated in a single pass, avoiding temporary allocations.
  • SIMD + OpenMP: Uses vectorized_types for explicit vectorization (SSE/AVX/AVX2) and OpenMP for threading.
  • Entity–Component model: Entities and components are defined in Entities/ and Components/; entities reference collections and behave like lightweight structs.

Dependencies

Build

Prerequisites

  • CMake 3.14+
  • C++14 compiler (MSVC, GCC, or Clang)
  • vcpkg with Boost installed:
    vcpkg install boost-iostreams:x64-windows

Configure and build

Using the preset (recommended; uses vcpkg toolchain automatically):

cmake --preset default
cmake --build build

Or manually with vcpkg:

cmake -B build -S . -DCMAKE_TOOLCHAIN_FILE=C:/dev/vcpkg/scripts/buildsystems/vcpkg.cmake
cmake --build build

Adjust the vcpkg path if needed (e.g. C:/dev/vcpkg or your install location).

Submodules

If you clone without --recursive, initialize submodules:

git submodule update --init --recursive

Project layout

Directory Description
Entities/ Entity type definitions
Components/ Component types (structs of arrays)
ecs/ Entity–Component infrastructure, collections
Histogram.h Histogram filling with vectorized expressions

License

See repository for license information.

About

stuff i did for my thesis at CERN way back when

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors