Source code for isaaclab.utils.seed
# Copyright (c) 2022-2026, The Isaac Lab Project Developers (https://github.com/isaac-sim/IsaacLab/blob/main/CONTRIBUTORS.md).
# All rights reserved.
#
# SPDX-License-Identifier: BSD-3-Clause
import numpy as np
import os
import random
import torch
import warp as wp
[docs]def configure_seed(seed: int | None, torch_deterministic: bool = False) -> int:
"""Set seed across all random number generators (torch, numpy, random, warp).
Args:
seed: The random seed value. If None, generates a random seed.
torch_deterministic: If True, enables deterministic mode for torch operations.
Returns:
The seed value that was set.
"""
if seed is None or seed == -1:
seed = 42 if torch_deterministic else random.randint(0, 10000)
random.seed(seed)
np.random.seed(seed)
torch.manual_seed(seed)
os.environ["PYTHONHASHSEED"] = str(seed)
torch.cuda.manual_seed(seed)
torch.cuda.manual_seed_all(seed)
wp.rand_init(seed)
if torch_deterministic:
# refer to https://docs.nvidia.com/cuda/cublas/index.html#cublasApi_reproducibility
os.environ["CUBLAS_WORKSPACE_CONFIG"] = ":4096:8"
torch.backends.cudnn.benchmark = False
torch.backends.cudnn.deterministic = True
torch.use_deterministic_algorithms(True)
else:
torch.backends.cudnn.benchmark = True
torch.backends.cudnn.deterministic = False
return seed