36 lines
903 B
Python
36 lines
903 B
Python
"""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))
|