---
title: "BenchOptions"
sidebar_label: "BenchOptions"
description: "Kotlin binding reference: BenchOptions."
---

<!-- Generated by tools/api_reference/generate_api_docs.py. Do not edit. -->

//[clika-runtime](../../../index.md)/[io.clika.modelverse](../index.md)/[BenchOptions](index.md)

# BenchOptions

[common]\
data class [BenchOptions](index.md)(val cells: [List](https://kotlinlang.org/api/core/kotlin-stdlib/kotlin.collections/-list/index.html)&lt;[BenchCell](../BenchCell/index.md)&gt;? = null, val concurrency: [List](https://kotlinlang.org/api/core/kotlin-stdlib/kotlin.collections/-list/index.html)&lt;[Int](https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-int/index.html)&gt;? = null, val warmup: [Int](https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-int/index.html)? = null, val iters: [Int](https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-int/index.html)? = null, val cacheMode: [BenchCacheMode](../BenchCacheMode/index.md)? = null, val seed: [Long](https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-long/index.html)? = null, val kvQuant: [String](https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-string/index.html)? = null, val prefillChunkTokens: [Long](https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-long/index.html)? = null, val stepTokenBudget: [Long](https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-long/index.html)? = null, val sharedPrefixTokens: [Long](https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-long/index.html)? = null, val promptLookupNumTokens: [Long](https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-long/index.html)? = null, val uniquePrompts: [Boolean](https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-boolean/index.html)? = null, val profile: [Boolean](https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-boolean/index.html)? = null, val profilePipeline: [Boolean](https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-boolean/index.html)? = null, val profileDir: [String](https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-string/index.html)? = null, val reportPrefix: [String](https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-string/index.html)? = null, val maxKvCacheBytes: [Long](https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-long/index.html)? = null)

The knobs of [Modelverse.bench](../Modelverse/bench.md), the command line's `bench` verb's and the Python `modelverse.bench.run`'s: every field null keeps the library's own default (the one the command line prints in its `--help`), so a `BenchOptions()` runs the library's single-cell sweep at concurrency 1.

The sweep runs [cells](cells.md) times [concurrency](concurrency.md), one (cell, width) at a time: each row decodes `concurrency` sessions of the cell at once through the serving pipeline over the model, [warmup](warmup.md) unmeasured passes first (any non-zero count also runs one global one-token warm-up before the first cell, so the first row measures the packed steady state; 0 measures cold) and [iters](iters.md) measured ones, the metrics averaged over them. [cacheMode](cacheMode.md) is the key-value cache every row's decoder runs on, [seed](seed.md) draws the synthetic prompts, [kvQuant](kvQuant.md) names the cache scheme the model was loaded with for the record (the model binds it; this field reports it). [prefillChunkTokens](prefillChunkTokens.md) (prompt tokens one session ingests per step; 0 = the whole prompt) and [stepTokenBudget](stepTokenBudget.md) (the cap on tokens launched per step across sessions; 0 = unbounded) are the decoder's pacing knobs, null the platform's default. [sharedPrefixTokens](sharedPrefixTokens.md) makes a cell's prompts share a prefix (a paged cache then serves it; the `admittedTok` and `retires` columns show the reuse), [promptLookupNumTokens](promptLookupNumTokens.md) turns prompt lookup on for every request (0 = off; the `*PredictionTokens` and `speculativeSteps` columns tally it), and [uniquePrompts](uniquePrompts.md) false reuses one prompt set across the iterations so the cache serves the repeats (the warm protocol; the default regenerates every iteration's prompts, the cold one). [profile](profile.md) adds one profiled iteration per row over the decoder's phases, [profilePipeline](profilePipeline.md) over the whole request pipeline instead; [profileDir](profileDir.md) receives their artifacts (empty keeps the summary in the report alone). [reportPrefix](reportPrefix.md) streams the report to `<prefix>.json` (the configuration, before the first row) and `<prefix>.csv` (every row as it lands), so a run killed before its end keeps its finished rows. [maxKvCacheBytes](maxKvCacheBytes.md) refuses a row whose cache alone would exceed it (an `ERROR` row, never an out-of-memory); 0 disables the check, null keeps the load's own ceiling.

## Constructors

| | |
|---|---|
| [BenchOptions](BenchOptions.md) | [common]<br>constructor(cells: [List](https://kotlinlang.org/api/core/kotlin-stdlib/kotlin.collections/-list/index.html)&lt;[BenchCell](../BenchCell/index.md)&gt;? = null, concurrency: [List](https://kotlinlang.org/api/core/kotlin-stdlib/kotlin.collections/-list/index.html)&lt;[Int](https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-int/index.html)&gt;? = null, warmup: [Int](https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-int/index.html)? = null, iters: [Int](https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-int/index.html)? = null, cacheMode: [BenchCacheMode](../BenchCacheMode/index.md)? = null, seed: [Long](https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-long/index.html)? = null, kvQuant: [String](https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-string/index.html)? = null, prefillChunkTokens: [Long](https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-long/index.html)? = null, stepTokenBudget: [Long](https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-long/index.html)? = null, sharedPrefixTokens: [Long](https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-long/index.html)? = null, promptLookupNumTokens: [Long](https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-long/index.html)? = null, uniquePrompts: [Boolean](https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-boolean/index.html)? = null, profile: [Boolean](https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-boolean/index.html)? = null, profilePipeline: [Boolean](https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-boolean/index.html)? = null, profileDir: [String](https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-string/index.html)? = null, reportPrefix: [String](https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-string/index.html)? = null, maxKvCacheBytes: [Long](https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-long/index.html)? = null) |

## Properties

| Name | Summary |
|---|---|
| [cacheMode](cacheMode.md) | [common]<br>val [cacheMode](cacheMode.md): [BenchCacheMode](../BenchCacheMode/index.md)? = null |
| [cells](cells.md) | [common]<br>val [cells](cells.md): [List](https://kotlinlang.org/api/core/kotlin-stdlib/kotlin.collections/-list/index.html)&lt;[BenchCell](../BenchCell/index.md)&gt;? = null |
| [concurrency](concurrency.md) | [common]<br>val [concurrency](concurrency.md): [List](https://kotlinlang.org/api/core/kotlin-stdlib/kotlin.collections/-list/index.html)&lt;[Int](https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-int/index.html)&gt;? = null |
| [iters](iters.md) | [common]<br>val [iters](iters.md): [Int](https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-int/index.html)? = null |
| [kvQuant](kvQuant.md) | [common]<br>val [kvQuant](kvQuant.md): [String](https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-string/index.html)? = null |
| [maxKvCacheBytes](maxKvCacheBytes.md) | [common]<br>val [maxKvCacheBytes](maxKvCacheBytes.md): [Long](https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-long/index.html)? = null |
| [prefillChunkTokens](prefillChunkTokens.md) | [common]<br>val [prefillChunkTokens](prefillChunkTokens.md): [Long](https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-long/index.html)? = null |
| [profile](profile.md) | [common]<br>val [profile](profile.md): [Boolean](https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-boolean/index.html)? = null |
| [profileDir](profileDir.md) | [common]<br>val [profileDir](profileDir.md): [String](https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-string/index.html)? = null |
| [profilePipeline](profilePipeline.md) | [common]<br>val [profilePipeline](profilePipeline.md): [Boolean](https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-boolean/index.html)? = null |
| [promptLookupNumTokens](promptLookupNumTokens.md) | [common]<br>val [promptLookupNumTokens](promptLookupNumTokens.md): [Long](https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-long/index.html)? = null |
| [reportPrefix](reportPrefix.md) | [common]<br>val [reportPrefix](reportPrefix.md): [String](https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-string/index.html)? = null |
| [seed](seed.md) | [common]<br>val [seed](seed.md): [Long](https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-long/index.html)? = null |
| [sharedPrefixTokens](sharedPrefixTokens.md) | [common]<br>val [sharedPrefixTokens](sharedPrefixTokens.md): [Long](https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-long/index.html)? = null |
| [stepTokenBudget](stepTokenBudget.md) | [common]<br>val [stepTokenBudget](stepTokenBudget.md): [Long](https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-long/index.html)? = null |
| [uniquePrompts](uniquePrompts.md) | [common]<br>val [uniquePrompts](uniquePrompts.md): [Boolean](https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-boolean/index.html)? = null |
| [warmup](warmup.md) | [common]<br>val [warmup](warmup.md): [Int](https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-int/index.html)? = null |