快捷键

torch.cuda.gds 的源代码

导入 操作系统
导入 系统
来自 打字 导入 可调用, 可选

导入 火炬
来自 torch 的类型 导入 存储


__all__: 列表[str] = [
    gds_register_buffer,
    gds_deregister_buffer,
    Gds 文件,
]


def _dummy_fn(名称: str) -> 可调用:
    def 函数(*参数, **kwargs):  # 类型:忽略[未指定类型定义]
        抛出 运行时错误(f"torch._C."{名称}此平台不支持)

    返回 fn


如果  有属性(PyTorch._C, "_gds 注册缓冲区"):
    断言  有属性(PyTorch._C, "_gds 注销缓冲区")
    断言  有属性(PyTorch._C, "_gds 注册句柄")
    断言  有属性(PyTorch._C, "_gds_deregister_handle")
    断言  有属性(PyTorch._C, "_gds_load_storage")
    断言  有属性(PyTorch._C, "_gds_save_storage")
    # 定义函数
    PyTorch._C.字典[_gds 注册缓冲区] = _dummy 函数(_gds 注册缓冲区)
    PyTorch._C.字典[_gds 注销缓冲区] = _dummy_fn(_gds_deregister_buffer)
    PyTorch._C.字典[_gds_register_handle] = _dummy_fn(_gds 注册句柄)
    PyTorch._C.字典[_gds 注销句柄] = _dummy 函数(_gds 注销句柄)
    PyTorch._C.字典[_gds 加载存储] = _dummy 函数(_gds 加载存储)
    PyTorch._C.字典[_gds 保存存储] = _dummy_fn("_gds_save_storage")


[文档]def gds_register_buffer(s: Storage) -> None: """在 CUDA 设备上注册存储为 cufile 缓冲区。 示例:: >>> # xdoctest: +SKIP("gds 文件系统要求") >>> src = torch.randn(1024, device="cuda") >>> s = src.untyped_storage() >>> gds_register_buffer(s) 参数: s (Storage): 要注册的缓冲区。 """ torch._C._gds_register_buffer(s)
[文档]def gds_deregister_buffer(s: Storage) -> None: “取消在 CUDA 设备上之前已注册的存储作为 cufile 缓冲区的注册。” 示例:: >>> # xdoctest: +SKIP("gds 文件系统要求") >>> src = torch.randn(1024, device="cuda") >>> s = src.untyped_storage() >>> gds_register_buffer(s) >>> gds_deregister_buffer(s) 参数: s (存储): 要注册的缓冲区。 """ torch._C._gds_deregister_buffer(s)
[文档] GdsFile: r"""Wrapper around cuFile. cuFile 是一个类似于文件的接口,用于访问 GPUDirect Storage (GDS) API。 请参阅 `cufile 文档 `_ 更多详情请查看。 参数: 文件名 (str):要打开的文件名。 标志 (int):打开文件时传递给 `os.open` 的标志。`os.O_DIRECT` 将 自动添加。 示例:: >>> # xdoctest: +SKIP("gds 文件系统要求") >>> src1 = torch.randn(1024, device="cuda") >>> src2 = torch.randn(2, 1024, device="cuda") >>> file = torch.cuda.gds.GdsFile(f, os.O_CREAT | os.O_RDWR) >>> 文件保存存储(src1.untyped_storage(), 偏移量=0) >>> 文件保存存储(src2.untyped_storage(), 偏移量=src1.nbytes) >>> dest1 = torch.empty(1024, 设备="cuda") >>> dest2 = torch.empty(2, 1024, 设备="cuda") >>> file.load_storage(dest1.untyped_storage(), offset=0) >>> file.load_storage(dest2.untyped_storage(), offset=src1.nbytes) >>> torch.equal(src1, dest1) True >>> torch.equal(src2, dest2) True """ def __init__(self, 文件名: str, 标志: int): 如果 系统模块.平台 == win32: 抛出 运行时错误("此平台不支持 GdsFile") self.文件名 = 文件名 self.标志 = 标志 self.fd = os.打开(文件名, 标志 | os.O_DIRECT) # 类型:忽略[已定义] self.处理: 可选[int] = self.注册句柄() def __del__(self) -> : 如果 self.handle : self.解除注册句柄() os.关闭(self.fd)
[文档] def 注册句柄(self) -> None: """注册文件描述符到 cuFile 驱动器。 这是围绕 ``cuFileHandleRegister`` 的包装器。 """ assert ( self.handle 是 None ), "无法注册已注册的句柄。" self.handle = torch._C._gds_register_handle(self.fd)
[文档] def deregister_handle(self) -> None: """注销文件描述符从 cuFile 驱动程序。 这是围绕`cuFileHandleDeregister`的包装。 """ assert ( self.handle 不是 None ), "无法注销未注册的句柄。" torch._C._gds_deregister_handle(self.handle) self.handle = None
[文档] def load_storage(self, storage: Storage, offset: int = 0) -> None: """从文件中加载数据到存储。 这是一个关于 `cuFileRead` 的包装器。`storage.nbytes()` 的数据 将从文件在“偏移量”处加载到存储中。 参数: 存储(存储):用于加载数据的存储。 offset (int, 可选): 从文件中开始加载的偏移量。(默认:0) """ assert ( self.handle is not None 无法从未注册的文件加载数据。 torch._C._gds_load_storage(self.handle, storage, offset)
[文档] def save_storage(self, storage: Storage, offset: int = 0) -> None: "将存储中的数据保存到文件中。" 这是一个围绕 `cuFileWrite` 的包装器。存储的所有字节 将被写入到位于 ``偏移量`` 的文件中。 参数: 存储(存储):用于保存数据的存储。 offset (int, 可选): 从文件中开始保存的偏移量。(默认:0) """ assert ( self.handle is not None 无法保存到未注册的文件。 torch._C._gds_save_storage(self.handle, storage, offset)

© 版权所有 PyTorch 贡献者。

使用 Sphinx 构建,并使用 Read the Docs 提供的主题。

文档

查看 PyTorch 的全面开发者文档

查看文档

教程

深入了解初学者和高级开发者的教程

查看教程

资源

查找开发资源,获取您的疑问解答

查看资源