import multiprocessing as mp from fastapi import APIRouter router = APIRouter() @router.get("/info") async def get_system_info(): """Return system info: CPU cores, GPU availability, parallel backend.""" cpu_cores = mp.cpu_count() or 1 # Check Ray ray_available = False ray_initialized = False try: from app.services.parallel_coverage_service import RAY_AVAILABLE ray_available = RAY_AVAILABLE if ray_available: import ray ray_initialized = ray.is_initialized() except Exception: pass # Check GPU via gpu_service from app.services.gpu_service import gpu_service gpu_info = gpu_service.get_info() # Determine parallel backend if ray_available: parallel_backend = "ray" elif cpu_cores > 1: parallel_backend = "process_pool" else: parallel_backend = "sequential" return { "cpu_cores": cpu_cores, "parallel_workers": min(cpu_cores, 14), "parallel_backend": parallel_backend, "ray_available": ray_available, "ray_initialized": ray_initialized, "gpu": gpu_info, "gpu_available": gpu_info.get("available", False), }