py_ds_aio.cpp 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. // Copyright (c) Microsoft Corporation.
  2. // SPDX-License-Identifier: Apache-2.0
  3. // DeepSpeed Team
  4. /*
  5. Functionality for swapping optimizer tensors to/from (NVMe) storage devices.
  6. */
  7. #include <torch/extension.h>
  8. #include "deepspeed_py_aio_handle.h"
  9. #include "deepspeed_py_copy.h"
  10. PYBIND11_MODULE(TORCH_EXTENSION_NAME, m)
  11. {
  12. m.def("aio_read", &deepspeed_py_aio_read, "DeepSpeed Asynchronous I/O Read");
  13. m.def("aio_write", &deepspeed_py_aio_write, "DeepSpeed Asynchronous I/O Write");
  14. m.def("deepspeed_memcpy", &deepspeed_py_memcpy, "DeepSpeed Memory Copy");
  15. py::class_<deepspeed_aio_handle_t>(m, "aio_handle")
  16. .def(py::init<const int, const int, const bool, const bool, const int>())
  17. .def("get_block_size", &deepspeed_aio_handle_t::get_block_size)
  18. .def("get_queue_depth", &deepspeed_aio_handle_t::get_queue_depth)
  19. .def("get_single_submit", &deepspeed_aio_handle_t::get_single_submit)
  20. .def("get_overlap_events", &deepspeed_aio_handle_t::get_overlap_events)
  21. .def("get_thread_count", &deepspeed_aio_handle_t::get_thread_count)
  22. .def("read", &deepspeed_aio_handle_t::read)
  23. .def("write", &deepspeed_aio_handle_t::write)
  24. .def("pread", &deepspeed_aio_handle_t::pread)
  25. .def("pwrite", &deepspeed_aio_handle_t::pwrite)
  26. .def("sync_pread", &deepspeed_aio_handle_t::sync_pread)
  27. .def("sync_pwrite", &deepspeed_aio_handle_t::sync_pwrite)
  28. .def("async_pread", &deepspeed_aio_handle_t::async_pread)
  29. .def("async_pwrite", &deepspeed_aio_handle_t::async_pwrite)
  30. .def("new_cpu_locked_tensor", &deepspeed_aio_handle_t::new_cpu_locked_tensor)
  31. .def("free_cpu_locked_tensor", &deepspeed_aio_handle_t::free_cpu_locked_tensor)
  32. .def("wait", &deepspeed_aio_handle_t::wait);
  33. }