ttnn.gelu

ttnn.gelu(input_tensor: ttnn.Tensor, *, variant: ttnn.GeluVariant = GeluVariant.Accurate, fast_and_approximate_mode: bool = False, memory_config: ttnn.MemoryConfig = None, output_tensor: ttnn.Tensor = None, sub_core_grids: ttnn.CoreRangeSet = None) ttnn.Tensor

Applies gelu to input_tensor element-wise.

\[\mathrm{output\_tensor}_i = gelu(\mathrm{input\_tensor}_i)\]
Parameters:

input_tensor (ttnn.Tensor) – the input tensor.

Keyword Arguments:
  • variant (ttnn.GeluVariant, optional) – Select GELU implementation. Defaults to GeluVariant.Accurate. - Accurate: piecewise CDF (BF16) or FP32 erf — matches torch.nn.functional.gelu (exact). - FastLut: 6-segment piecewise-linear LUT — fastest, ~1% absolute error. - Tanh: 0.5*x*(1 + tanh(sqrt(2/pi)*(x + 0.044715*x^3))) in FP32 — matches torch.nn.functional.gelu(approximate=”tanh”).

  • fast_and_approximate_mode (bool, optional) – Legacy alias. True maps to variant=FastLut, False to variant=Accurate. Defaults to False.

  • memory_config (ttnn.MemoryConfig, optional) – Memory configuration for the operation. Defaults to None.

  • output_tensor (ttnn.Tensor, optional) – preallocated output tensor. Defaults to None.

  • sub_core_grids (ttnn.CoreRangeSet, optional) – sub core grids for the operation. Defaults to None.

Returns:

ttnn.Tensor – the output tensor.

Note

Supported dtypes and layouts:

Dtypes

Layouts

BFLOAT16, BFLOAT8_B

TILE, ROW_MAJOR

Example

# Create a tensor with specific values
tensor = ttnn.from_torch(
    torch.tensor([[1, 2], [3, 4]], dtype=torch.bfloat16),
    dtype=ttnn.bfloat16,
    layout=ttnn.TILE_LAYOUT,
    device=device,
)

# Apply GELU activation function
output = ttnn.gelu(tensor, fast_and_approximate_mode=True)
logger.info(f"GELU: {output}")