Asynchronous I/O API reference#
The hipFile asynchronous API lets you enqueue non-blocking reads and writes on HIP streams. Stream registration communicates hints about fixed offsets and alignment to the driver.
For a step-by-step guide to using these functions, see Asynchronous multi-stream I/O with registered streams.
Stream registration flags#
Flags passed to hipFileStreamRegister to optimize stream processing when
transfer parameters are known at registration time.
-
HIPFILE_STREAM_FIXED_BUF_OFFSET#
Buffer offset is fixed at time of submission.
-
HIPFILE_STREAM_FIXED_FILE_OFFSET#
File offset is fixed at time of submission.
-
HIPFILE_STREAM_FIXED_FILE_SIZE#
File size is fixed at time of submission.
-
HIPFILE_STREAM_PAGE_ALIGNED_INPUTS#
Offsets and size are 4k aligned.
-
HIPFILE_STREAM_FLAGS_MASK#
Mask for selecting flag bits.
Asynchronous I/O and stream registration functions#
Functions to enqueue non-blocking reads and writes on HIP streams and to register and deregister streams with the hipFile driver.
-
HIPFILE_API hipFileError_t hipFileReadAsync(hipFileHandle_t fh, void *buffer_base, size_t *size_p, hoff_t *file_offset_p, hoff_t *buffer_offset_p, ssize_t *bytes_read_p, hipStream_t stream)#
Perform an asynchronous read from a stream.
Note
The maximum I/O size is determined by the Linux kernel and is currently 2^31 - the system page size
- Parameters:
fh – [in] Opaque file handle for GPU I/O operations
buffer_base – [in] Base address of the GPU buffer
size_p – [in] Number of bytes that should be read
file_offset_p – [in] Offset into the file that should be read from
buffer_offset_p – [in] Offset of the GPU buffer that that the data should be written to
bytes_read_p – [out] Number of bytes read
stream – [in] The stream used for async I/O requests. If NULL, this request will be synchronous.
- Returns:
A hipFileError_t struct that holds both hipFile and HIP error values
-
HIPFILE_API hipFileError_t hipFileWriteAsync(hipFileHandle_t fh, void *buffer_base, size_t *size_p, hoff_t *file_offset_p, hoff_t *buffer_offset_p, ssize_t *bytes_written_p, hipStream_t stream)#
Perform an asynchronous write to a stream.
Note
The maximum I/O size is determined by the Linux kernel and is currently 2^31 - the system page size
- Parameters:
fh – [in] Opaque file handle for GPU I/O operations
buffer_base – [in] Base address of the GPU buffer
size_p – [in] Number of bytes that should be written
file_offset_p – [in] Offset into the file that should be written to
buffer_offset_p – [in] Offset of the GPU buffer that that the data should be read from
bytes_written_p – [out] Number of bytes written
stream – [in] The stream used for async I/O requests. If NULL, this request will be synchronous.
- Returns:
A hipFileError_t struct that holds both hipFile and HIP error values
-
HIPFILE_API hipFileError_t hipFileStreamRegister(hipStream_t stream, unsigned flags)#
Register a stream to be used by for asynchronous GPU IO.
- Parameters:
stream – [in] The stream used for async I/O requests
flags – [in] Flags that can optimize stream processing if parameters are known/are aligned at time of request submission
- Returns:
A hipFileError_t struct that holds both hipFile and HIP error values
-
HIPFILE_API hipFileError_t hipFileStreamDeregister(hipStream_t stream)#
Deregister a stream and free the associated resources.
- Parameters:
stream – [in] The stream used for async I/O requests
- Returns:
A hipFileError_t struct that holds both hipFile and HIP error values