"""GPU management API endpoints.""" from fastapi import APIRouter, HTTPException from pydantic import BaseModel from app.services.gpu_backend import gpu_manager router = APIRouter() class SetDeviceRequest(BaseModel): backend: str index: int = 0 @router.get("/status") async def gpu_status(): """Return GPU manager status: active backend, device, available devices.""" return gpu_manager.get_status() @router.get("/devices") async def gpu_devices(): """Return list of available compute devices.""" return {"devices": gpu_manager.get_devices()} @router.post("/set") async def gpu_set_device(request: SetDeviceRequest): """Switch active compute device.""" try: result = gpu_manager.set_device(request.backend, request.index) return {"status": "ok", **result} except ValueError as e: raise HTTPException(status_code=400, detail=str(e)) @router.get("/diagnostics") async def gpu_diagnostics(): """Full GPU diagnostic info for troubleshooting detection issues.""" return gpu_manager.get_diagnostics()