Skip to main content

Platforms & Flavors Overview

The numerous outputs of the Hybridizer are called Flavors. Flavors define the language or jargon in which the Hybridizer outputs code. This output is then compiled using the appropriate compiler to generate machine code for the target architecture.

Hybridizer Flavors

Available Flavors

FlavorTargetCompilerBest For
CUDANVIDIA GPUsnvccMassive parallel throughput
OMPMulti-core CPUsgcc/clang with OpenMPPortability, debugging
AVXIntel/AMD CPUsgcc/clangHigh-perf CPU SIMD
AVX512Intel Xeon/HPCgcc/clangWide vector operations
NEONARM processorsgcc/clangEmbedded, mobile
POWERIBM POWERxlc/gccHPC systems

Choosing a Flavor

Flavor Details

CUDA Flavor

For NVIDIA GPUs. Generates .cu files with __device__ and __global__ attributes. Best for massive parallel throughput.

CUDA Backend Details

OMP Flavor

Plain C/C++ with OpenMP support. Useful for:

  • Testing: Disambiguating issues between input code and flavor source-code generation
  • Portability: Sequential fallback if compiled without OpenMP
  • Performance: Optimizing compilers may generate better machine code than the JIT

OMP Backend Details

Vector Flavors (AVX/NEON/POWER)

C++ code using a micro-library for vectorization. The implementation is specific to each hardware architecture, but the interface is common.

Vector Backends Details

Next Steps