TraceMaker
C++ API of the engine
Loading...
Searching...
No Matches
field.hpp File Reference

Cost-to-go fields for the router (design doc 05 §5.2, doc 07 §2): exact shortest-path distances from a set of target lattice points over a window, on an octilinear multi-layer lattice with through-via moves. More...

#include <cstdint>
#include <limits>
#include <vector>
#include "gpu/philox_fill.hpp"

Go to the source code of this file.

Classes

struct  tmk::gpu::FieldProblem

Namespaces

namespace  tmk
namespace  tmk::gpu

Functions

int tmk::gpu::field_cpu (const FieldProblem &p, std::vector< std::int32_t > &out)
 CPU reference. out is resized to layers*h*w. Returns the number of sweep rounds.
GpuStatus tmk::gpu::field_gpu (int device_index, const FieldProblem &p, std::vector< std::int32_t > &out)
 Compiled GPU backend; on failure (no device, no memory) returns !ok and leaves out empty.

Variables

constexpr std::int32_t tmk::gpu::kFieldInf = std::numeric_limits<std::int32_t>::max() / 4

Detailed Description

Cost-to-go fields for the router (design doc 05 §5.2, doc 07 §2): exact shortest-path distances from a set of target lattice points over a window, on an octilinear multi-layer lattice with through-via moves.

Computed by alternating line sweeps (row, column and both diagonals, each in both directions) plus via relaxation, repeated to a fixpoint (GAMER, Lin et al., TCAD 2023). The fixpoint is the unique shortest-path distance, so the CPU reference and the GPU kernel produce identical results whatever the sweep order.

Definition in file field.hpp.