Turbo Constraint Solver
Loading...
Searching...
No Matches
barebones Namespace Reference

Functions

void barebones_dive_and_solve (const Configuration< battery::standard_allocator > &config)
 

Detailed Description

The full GPU version (gpu_dive_and_solve) is not compiling on modern GPU hardware (SM >= 9) due to the kernel being too large. We circuvanted this issue by creating an hybrid version where only propagation is executed on the GPU (hybrid_dive_and_solve). This has the disadvantage of memory transfers between CPU and GPU and synchronization overheads. We propose a new "barebones" version which contains less abstractions than the GPU and hybrid versions, but have the same functionalities. In particular, we directly implement the branch-and-bound algorithm here and avoid using lala::BAB and lala::SearchTree which are nice from a software engineering perspective but bring significant overhead. This version is intended to reach the best possible performance.

Terminology:

  • unified data: data available to both the CPU and GPU.
  • block data: data used within a single block.
  • grid data: data shared among all blocks in the grid.

Function Documentation

◆ barebones_dive_and_solve()

void barebones::barebones_dive_and_solve ( const Configuration< battery::standard_allocator > &  config)