"""Detecta disponibilidad de CUDA via torch sin lanzar excepcion si torch no esta instalado.""" from __future__ import annotations def cuda_available() -> dict: """Detecta si CUDA esta disponible y devuelve info de los dispositivos GPU. No requiere torch instalado: si no esta presente, devuelve `torch_version='not_installed'` y `available=False`. Returns: dict con claves: available (bool): True si torch.cuda.is_available(). device_count (int): numero de GPUs detectadas (0 si no hay CUDA). devices (list[str]): nombres de cada GPU (ej. "NVIDIA RTX 4090"). torch_version (str): version de torch o "not_installed". cuda_version (str | None): version de CUDA usada por torch, o None. """ try: import torch except ImportError: return { "available": False, "device_count": 0, "devices": [], "torch_version": "not_installed", "cuda_version": None, } available = torch.cuda.is_available() device_count = torch.cuda.device_count() if available else 0 devices = [torch.cuda.get_device_name(i) for i in range(device_count)] cuda_version = torch.version.cuda if available else None return { "available": available, "device_count": device_count, "devices": devices, "torch_version": torch.__version__, "cuda_version": cuda_version, }