Hydra composes the command-line configuration, and Pydantic validates it. The schemas are declared in config.py and registered in config_store.py.
The console scripts are gpuastar and gpuastar-aoti-export. The top-level command option selects the execution module:
astar_search(default): runs batch weighted A* search on a set of input states.aoti_export: compiles a heuristic model checkpoint into an AOTInductor shared library package. Thegpuastar-aoti-exportconsole script runs the same exporter.cpp_workflows: runs C++ build and solver workflows.
The defaults listed below are the values defined in the base gpuastar package. When the gpuastar[experiments] extra is installed, the overlays in command_defaults/ replace some of them with Rubik's Cube example values, which are noted where they apply. Explicit command line overrides always win.
Options are grouped into namespaces and overridden with dot notation, for example algorithm.batch_size=5000.
Paths and index ranges for the search run. The base package has no environment, dataset, model, or results defaults, so the first four options must be set explicitly unless the gpuastar[experiments] extra provides them.
input.states: path to the serialized input states file. No base default. The experiments overlay setsexperiments/src/gpuastar_experiments/data/cube3/test/data_0.pkl.input.model: path to the neural network checkpoint. No base default. The experiments overlay setsexperiments/src/gpuastar_experiments/saved_models/cube3/current/model_state_dict.pt.input.env: registered name of the search environment. No base default. The experiments overlay setscube3.input.results_dir: output directory for search results. No base default. The experiments overlay setsresults/cube3.input.start_idx: first state index to read from the input file. Default is0.input.max_states: maximum number of states to process,-1processes all states. Default is-1.
Search parameters for the weighted evaluation.
-
algorithm.batch_size: number of states popped from the open list and expanded per iteration. Base default is1. The experiments overlay sets10000. -
algorithm.weight: multiplier$w$ applied to the heuristic value$h(s)$ in$f(s) = g(s) + w \cdot h(s)$ . Base default is1.0. The experiments overlay sets0.6. -
algorithm.instance_batch_size: number of independent search instances run in parallel. Default is1. -
algorithm.hash_capacity_factor: capacity of the closed-set hash table relative to the expected number of states. Default is4.0. -
algorithm.capacity_mode: resizing policy for the closed-set hash table,adaptiveorfixed. Default isadaptive. -
algorithm.hashtable_algorithm: closed-set implementation,python_dictorlinear_probing. Default ispython_dict. -
algorithm.solution_move_source: solution path reconstruction,inferretraces parent pointers andstoredreads stored moves. Default isinfer. -
algorithm.duplicate_update_mode: handling of rediscovered states,in_placeupdates the existing slot andnew_slotinserts a new entry. Default isin_place. -
algorithm.goal_stop_mode: termination criterion,stop_before_goalhalts when a goal is popped andexpand_popped_batchfinishes the current popped batch first. Default isstop_before_goal. -
algorithm.expand_push_mode: child-materialization used by Python CPU A* (backend.language=python,backend.gpu_only=false) only.single_passbuilds child nodes in one index-tracking pass used by the paper's reference implementation.flattenuses heavier flatten/unflatten reshaping that produces identical child nodes with extra per-batch work. Default issingle_pass. Other backends accept only the default value. -
algorithm.nnet_batch_size: batch size for heuristic model inference,0matches the expansion batch size. Base default is0. The experiments overlay sets10000. -
algorithm.search_budget: limit on node expansions,0disables the limit. Default is0.
Solver implementation and device selection.
backend.language: solver backend, one ofpython,cpp,cu, orauto. Default ispython.backend.gpu_only: if true, the entire search loop runs in device-resident tensors instead of host data structures. Default isfalse.backend.device: execution device, for examplecpu,cuda:0, orauto. Default isauto.backend.heuristic_device: separate device for model inference. Falls back tobackend.devicewhen unset. Default is unset.
Compilation, precision, and distributed execution controls.
torch.compile_all: if true, enablestorch.compilefor all compile targets. Default isfalse.torch.compile:torch.compileoptions for heuristic evaluation (fieldsenabled,backend,fullgraph,dynamic,options).torch.compile_env:torch.compileoptions for the environment transition functions.torch.compile_astar_closed:torch.compileoptions for closed-set matching.torch.compile_mode: compilation mode, such asdefault,reduce-overhead, ormax-autotune. Default isdefault.torch.fsdp: enables Fully Sharded Data Parallel (FSDP2) parameter sharding. Default isfalse.torch.fsdp_reshard_after_forward: whether sharded parameters are freed after each forward pass. Default is unset, which uses the FSDP2 default.torch.tensor_parallel: enables tensor parallel sharding across GPUs. Default isfalse.torch.dtensor: wraps model parameters as DTensors. Default isfalse.torch.dtensor_placement: DTensor placement,replicateorshard_dim0. Default isreplicate.torch.distributed_sort_policy: state grouping before scattering to ranks,none,local, orglobal. Default isnone.torch.cuda_graphs: captures the static portion of the search loop as a CUDA graph. Default isfalse.torch.cudagraph_warmup: warmup iterations executed before graph capture. Default is2.torch.amp: enables automatic mixed precision for inference. Default isfalse.torch.amp_dtype: mixed precision dtype,float16orbfloat16. Default isfloat16.torch.tf32: enables TensorFloat-32 matrix math on NVIDIA Ampere and newer GPUs. Default isfalse.
Data types of the tensor-backed search storage. Narrower types reduce memory traffic in device-resident modes.
-
memory_dtype.node_state: dtype of stored states. Default isint64. -
memory_dtype.open_index: dtype of open-list indices. Default isint64. -
memory_dtype.open_cost: dtype of open-list priorities. Default isfloat32. -
memory_dtype.closed_key: dtype of closed-set keys. Default isint64. -
memory_dtype.closed_cost: dtype of closed-set costs. Default isfloat32. -
memory_dtype.parent_index: dtype of parent pointers. Default isint64. -
memory_dtype.parent_move: dtype of stored parent moves. Default isint64. -
memory_dtype.path_cost: dtype of the path cost$g(s)$ . Default isfloat32. -
memory_dtype.heuristic: dtype of the heuristic estimate$h(s)$ . Default isfloat32. -
memory_dtype.total_cost: dtype of the total cost$f(s)$ . Default isfloat32.
Profiler and timing instrumentation.
profile.enabled: activates the PyTorch profiler. Default isfalse.profile.operation_breakdown: records timing for the individual search operations (pop, expand, heuristic, push, closed-set check). Default isfalse.profile.cuda_sync_timing: synchronizes CUDA streams around measured intervals so that durations include kernel execution. Default isfalse.profile.cpp_traceandprofile.cpp_summary: enable the timers built into the C++ solvers. Defaults arefalse.
metrics.json_path: destination of the metrics file. Default is<results_dir>/search_metrics.json.metrics.no_json: disables writing the metrics file. Default isfalse.
verbose: console output level from0(quiet) upward. Default is1.
gpuastar command=astar_search \
backend.language=python \
backend.device=cuda:0 \
algorithm.batch_size=1000 \
algorithm.weight=0.8gpuastar command=astar_search \
backend.language=cpp \
backend.gpu_only=true \
memory_dtype.open_cost=float32 \
memory_dtype.closed_cost=float32gpuastar-aoti-export \
export.model_dir=experiments/src/gpuastar_experiments/saved_models/cube3/current \
export.env=cube3 \
export.max_dynamic_batch=10000