use gam_gpu::backend_probe::CudaBackendParts;
use gam_gpu::device_cache::KeyedPtxModuleCache;
use gam_gpu::gpu_error::GpuError;
use cudarc::driver::{CudaContext, CudaStream};
use std::sync::Arc;
pub(super) struct ScoreRouterBackend {
pub(super) ctx: Arc<CudaContext>,
pub(super) stream: Arc<CudaStream>,
pub(super) modules: KeyedPtxModuleCache<usize>,
pub(super) max_shared_mem_per_block: usize,
}
impl ScoreRouterBackend {
pub(super) fn from_parts(parts: CudaBackendParts) -> Result<Self, GpuError> {
Ok(Self {
ctx: parts.ctx,
stream: parts.stream,
modules: KeyedPtxModuleCache::new(),
max_shared_mem_per_block: gam_gpu::GpuRuntime::require()?
.selected_device()
.max_shared_mem_per_block,
})
}
}