表示异步 IO 操作的 Future。 更多...
#include <stream.hpp>
公有成员函数 | |
StreamFuture (void *devPtr_base, std::size_t size, off_t file_offset, off_t devPtr_offset, CUstream stream) | |
StreamFuture (StreamFuture const &)=delete | |
StreamFuture 支持移动语义,但不可复制。 | |
StreamFuture & | operator= (StreamFuture &o)=delete |
StreamFuture (StreamFuture &&o) noexcept | |
StreamFuture & | operator= (StreamFuture &&o) noexcept |
std::tuple< void *, std::size_t *, off_t *, off_t *, ssize_t *, CUstream > | get_args () const |
返回 future 调用的参数。 更多... | |
std::size_t | check_bytes_done () |
返回 future 操作读取或写入的字节数。 更多... | |
~StreamFuture () noexcept | |
释放按值传递的参数,并确保相关的 CUDA 流已同步。 | |
表示异步 IO 操作的 Future。
不应直接使用此类,而是一些流操作(例如 FileHandle.read_async
和 FileHandle.write_async
)返回此类的实例。使用 .check_bytes_done()
可同步相关的 CUDA 流并返回操作读取或写入的字节数。
此类有两个目标
read_async
和 write_async
返回一个对象,该对象明确将函数参数与使用的 CUDA 流关联起来。这很有用,因为参数的当前有效性取决于流。read_async
和 write_async
。为了支持按值传递的参数,我们在堆上分配参数 (malloc ArgByVal
) 并让按引用传递的参数指向 ArgByVal
。这样,read_async
和 write_async
就可以调用 .get_args()
来获取 cuFile 流 API 所需的按引用传递的参数。
定义于文件 stream.hpp 的 46 行。
std::size_t kvikio::StreamFuture::check_bytes_done | ( | ) |
返回 future 操作读取或写入的字节数。
同步相关的 CUDA 流。
std::tuple<void*, std::size_t*, off_t*, off_t*, ssize_t*, CUstream> kvikio::StreamFuture::get_args | ( | ) | const |
返回 future 调用的参数。
FileHandle.read()
和 FileHandle.write()
顺序一致的参数。