lmcache--lmcache
47 行
1.8 KiB
Python
47 行
1.8 KiB
Python
# SPDX-License-Identifier: Apache-2.0
|
|
"""Platform dispatch for the GDS async backend.
|
|
|
|
Selects the GDSContext-facing backend by platform -- the cuFile wrapper
|
|
(:mod:`lmcache.v1.gpu_connector._cufile_async`) on NVIDIA, or the hipFile
|
|
wrapper (:mod:`lmcache.v1.gpu_connector._hipfile_async`) on AMD ROCm. Both
|
|
modules expose an identical API -- :class:`AsyncHandle`, :class:`Submission`,
|
|
and the ``register_*`` / ``deregister_*`` / ``close_driver`` functions -- so
|
|
:mod:`lmcache.v1.gpu_connector.gds_context` imports this shim as ``ca`` and is
|
|
platform-agnostic.
|
|
|
|
Selection is by ``torch.version.hip``: a ROCm torch build reports a non-None
|
|
HIP version. Importing this shim does not dlopen any GPU IO driver; both
|
|
backends bind ``libcufile``/``libhipfile`` lazily on first use.
|
|
"""
|
|
|
|
# Standard
|
|
from typing import TYPE_CHECKING
|
|
|
|
# Third Party
|
|
import torch
|
|
|
|
# A static type checker analyzes the TYPE_CHECKING branch only (one ``_backend``
|
|
# binding, so no ``no-redef``); at runtime the ``elif``/``else`` pick the real
|
|
# backend by platform.
|
|
if TYPE_CHECKING:
|
|
# First Party
|
|
from lmcache.v1.gpu_connector import _cufile_async as _backend
|
|
elif torch.version.hip is not None:
|
|
# First Party
|
|
from lmcache.v1.gpu_connector import _hipfile_async as _backend
|
|
else:
|
|
# First Party
|
|
from lmcache.v1.gpu_connector import _cufile_async as _backend
|
|
|
|
# Re-export the selected backend's surface under stable names so callers
|
|
# (and test monkeypatches) target this module.
|
|
AsyncHandle = _backend.AsyncHandle
|
|
Submission = _backend.Submission
|
|
close_driver = _backend.close_driver
|
|
register_handle = _backend.register_handle
|
|
deregister_handle = _backend.deregister_handle
|
|
register_buffer = _backend.register_buffer
|
|
deregister_buffer = _backend.deregister_buffer
|
|
register_stream = _backend.register_stream
|
|
deregister_stream = _backend.deregister_stream
|