---
title: "ClikaRT::ops::qk_layer_norm_"
sidebar_label: "qk_layer_norm_"
description: "In-place qk_layer_norm: normalizes query (and key and value, when given) through their own storage (no output allocation)."
---

<!-- Generated by tools/doxygen2mdx from Doxygen XML. Do not edit. -->

<span class="api-kind api-kind--function">function</span>

## qk\_layer\_norm\_() {#qk_layer_norm_}

<div class="api-signature">

[`Tensor`](../Tensor.md)`&` **`qk_layer_norm_`**(<br />
&nbsp;&nbsp;&nbsp;&nbsp;[`Tensor`](../Tensor.md)`&` `query`,<br />
&nbsp;&nbsp;&nbsp;&nbsp;[`Tensor`](../Tensor.md)`*` `key` `=` `nullptr`,<br />
&nbsp;&nbsp;&nbsp;&nbsp;[`Tensor`](../Tensor.md)`*` `value` `=` `nullptr`,<br />
&nbsp;&nbsp;&nbsp;&nbsp;[`OptionalTensor`](../../index.md#OptionalTensor) `query_weight` `=` `{}`,<br />
&nbsp;&nbsp;&nbsp;&nbsp;[`OptionalTensor`](../../index.md#OptionalTensor) `query_bias` `=` `{}`,<br />
&nbsp;&nbsp;&nbsp;&nbsp;[`OptionalTensor`](../../index.md#OptionalTensor) `key_weight` `=` `{}`,<br />
&nbsp;&nbsp;&nbsp;&nbsp;[`OptionalTensor`](../../index.md#OptionalTensor) `key_bias` `=` `{}`,<br />
&nbsp;&nbsp;&nbsp;&nbsp;`std::int64_t` `head_dim` `=` `0`,<br />
&nbsp;&nbsp;&nbsp;&nbsp;`std::optional<double>` `eps` `=` `std::nullopt`<br />
)

</div>

In-place [`qk_layer_norm`](./qk_layer_norm.md#qk_layer_norm): normalizes `query` (and `key` and `value`, when given) through their own storage (no output allocation). `key` and `value` are optional operands written through: pass a pointer to your tensor, or `nullptr` for absent. Every written-through handle is rebound to the op's output, so under a [`TracingScope`](../TracingScope.md) the caller's `key` becomes the traced output exactly as `query` does. Otherwise the same arguments and error conditions as [`qk_layer_norm()`](./qk_layer_norm.md#qk_layer_norm). Returns `query` under the value surface, [`Result`](../Result.md)`<void>` under the [`Result`](../Result.md) surface; [`CLIKART_CHECK`](../../index.md#CLIKART_CHECK) is the mode-stable spelling.

<div class="api-declared">

Declared in `ClikaRT/compute/ops.h`, line 3669

</div>
