Provided by: libcufile-dev_1.5.1.14~12.0.1-2_amd64 bug

NAME

       cufile.h - cuFile C APIs

SYNOPSIS

   Data Structures
       struct CUfileDescr_t
       struct CUfileDrvProps
       struct CUfileError
           cufileop status string
       struct CUfileFSOps
       struct CUfileIOEvents
       struct CUfileIOParams
       struct cufileRDMAInfo

   Macros
       #define CU_FILE_CUDA_ERR(status)   ((status).cu_err)
       #define CU_FILE_RDMA_REGISTER   1
       #define CU_FILE_RDMA_RELAXED_ORDERING   (1<<1)
       #define CUFILE_ERRSTR(err)   cufileop_status_error((CUfileOpError)abs((err)))
       #define cuFileDriverClose   cuFileDriverClose_v2
       #define IS_CUDA_ERR(status)   ((status).err == CU_FILE_CUDA_DRIVER_ERROR)
       #define IS_CUFILE_ERR(err)   (abs((err)) > CUFILEOP_BASE_ERR)
           error macros to inspect error status of type CUfileOpError

   Typedefs
       typedef void * CUfileBatchHandle_t
       typedef enum cufileBatchMode CUfileBatchMode_t
       typedef struct CUfileDescr_t CUfileDescr_t
       typedef enum CUfileDriverControlFlags CUfileDriverControlFlags_t
       typedef enum CUfileDriverStatusFlags CUfileDriverStatusFlags_t
       typedef struct CUfileDrvProps CUfileDrvProps_t
       typedef struct CUfileError CUfileError_t
           cufileop status string
       typedef enum CUfileFeatureFlags CUfileFeatureFlags_t
       typedef struct CUfileFSOps CUfileFSOps_t
       typedef void * CUfileHandle_t
           File handle type.
       typedef struct CUfileIOEvents CUfileIOEvents_t
       typedef struct CUfileIOParams CUfileIOParams_t
       typedef enum CUfileOpcode CUfileOpcode_t
       typedef struct cufileRDMAInfo cufileRDMAInfo_t
       typedef enum CUFILEStatus_enum CUfileStatus_t
       typedef struct sockaddr sockaddr_t

   Enumerations
       enum cufileBatchMode { CUFILE_BATCH = 1 }
       enum CUfileDriverControlFlags { CU_FILE_USE_POLL_MODE = 0, CU_FILE_ALLOW_COMPAT_MODE = 1 }
       enum CUfileDriverStatusFlags { CU_FILE_LUSTRE_SUPPORTED = 0, CU_FILE_WEKAFS_SUPPORTED = 1,
           CU_FILE_NFS_SUPPORTED = 2, CU_FILE_GPFS_SUPPORTED = 3, CU_FILE_NVME_SUPPORTED = 4,
           CU_FILE_NVMEOF_SUPPORTED = 5, CU_FILE_SCSI_SUPPORTED = 6,
           CU_FILE_SCALEFLUX_CSD_SUPPORTED = 7, CU_FILE_NVMESH_SUPPORTED = 8,
           CU_FILE_BEEGFS_SUPPORTED = 9 }
       enum CUfileFeatureFlags { CU_FILE_DYN_ROUTING_SUPPORTED = 0, CU_FILE_BATCH_IO_SUPPORTED =
           1, CU_FILE_STREAMS_SUPPORTED = 2 }
       enum CUfileFileHandleType { CU_FILE_HANDLE_TYPE_OPAQUE_FD = 1,
           CU_FILE_HANDLE_TYPE_OPAQUE_WIN32 = 2, CU_FILE_HANDLE_TYPE_USERSPACE_FS = 3 }
       enum CUfileOpcode { CUFILE_READ = 0, CUFILE_WRITE }
       enum CUFILEStatus_enum { CUFILE_WAITING = 0x000001, CUFILE_PENDING = 0x000002,
           CUFILE_INVALID = 0x000004, CUFILE_CANCELED = 0x000008, CUFILE_COMPLETE = 0x0000010,
           CUFILE_TIMEOUT = 0x0000020, CUFILE_FAILED = 0x0000040 }

   Functions
       CUfileError_t cuFileBatchIOCancel (CUfileBatchHandle_t batch_idp)
       void cuFileBatchIODestroy (CUfileBatchHandle_t batch_idp)
       CUfileError_t cuFileBatchIOGetStatus (CUfileBatchHandle_t batch_idp, unsigned min_nr,
           unsigned *nr, CUfileIOEvents_t *iocbp, struct timespec *timeout)
       CUfileError_t cuFileBatchIOSetUp (CUfileBatchHandle_t *batch_idp, unsigned nr)
       CUfileError_t cuFileBatchIOSubmit (CUfileBatchHandle_t batch_idp, unsigned nr,
           CUfileIOParams_t *iocbp, unsigned int flags)
       CUfileError_t cuFileBufDeregister (const void *devPtr_base)
           deregister an already registered device memory from cuFile
       CUfileError_t cuFileBufRegister (const void *devPtr_base, size_t length, int flags)
           register an existing cudaMalloced memory with cuFile to pin for GPUDirect Storage
           access.
       CUfileError_t cuFileDriverClose (void)
       CUfileError_t cuFileDriverClose_v2 (void)
           reset the cuFile library and release the nvidia-fs driver
       CUfileError_t cuFileDriverGetProperties (CUfileDrvProps_t *props)
           Gets the Driver session properties.
       CUfileError_t cuFileDriverOpen (void)
           Initialize the cuFile library and open the nvidia-fs driver.
       CUfileError_t cuFileDriverSetMaxCacheSize (size_t max_cache_size)
           Control parameter to set maximum GPU memory reserved per device by the library for
           internal buffering.
       CUfileError_t cuFileDriverSetMaxDirectIOSize (size_t max_direct_io_size)
           Control parameter to set max IO size(KB) used by the library to talk to nvidia-fs
           driver.
       CUfileError_t cuFileDriverSetMaxPinnedMemSize (size_t max_pinned_size)
           Sets maximum buffer space that is pinned in KB for use by cuFileBufRegister.
       CUfileError_t cuFileDriverSetPollMode (bool poll, size_t poll_threshold_size)
           Sets whether the Read/Write APIs use polling to do IO operations.
       void cuFileHandleDeregister (CUfileHandle_t fh)
           releases a registered filehandle from cuFile
       CUfileError_t cuFileHandleRegister (CUfileHandle_t *fh, CUfileDescr_t *descr)
           cuFileHandleRegister is required, and performs extra checking that is memoized to
           provide increased performance on later cuFile operations.
       ssize_t cuFileRead (CUfileHandle_t fh, void *devPtr_base, size_t size, off_t file_offset,
           off_t devPtr_offset)
           read data from a registered file handle to a specified device memory
       long cuFileUseCount (void)
           returns use count of cufile drivers at that moment by the process.
       ssize_t cuFileWrite (CUfileHandle_t fh, const void *devPtr_base, size_t size, off_t
           file_offset, off_t devPtr_offset)
           write data from a specified device memory to a registered file handle

   Variables
       CUfileOpError

Detailed Description

       cuFile C APIs

       This file contains all the C APIs to perform GPUDirect Storage supported IO operations

Macro Definition Documentation

   #define CU_FILE_CUDA_ERR(status)   ((status).cu_err)
   #define CU_FILE_RDMA_REGISTER   1
   #define CU_FILE_RDMA_RELAXED_ORDERING   (1<<1)
   #define CUFILE_ERRSTR(err)   cufileop_status_error((CUfileOpError)abs((err)))
   #define cuFileDriverClose   cuFileDriverClose_v2
   #define IS_CUDA_ERR(status)   ((status).err == CU_FILE_CUDA_DRIVER_ERROR)
   #define IS_CUFILE_ERR(err)   (abs((err)) > CUFILEOP_BASE_ERR)
       error macros to inspect error status of type CUfileOpError

Typedef Documentation

   typedef void* CUfileBatchHandle_t
   typedef enum cufileBatchMode  CUfileBatchMode_t
   typedef struct CUfileDescr_t CUfileDescr_t
   typedef enum CUfileDriverControlFlags CUfileDriverControlFlags_t
   typedef enum CUfileDriverStatusFlags CUfileDriverStatusFlags_t
   typedef struct CUfileDrvProps CUfileDrvProps_t
   typedef struct CUfileError CUfileError_t
       cufileop status string

   typedef enum CUfileFeatureFlags CUfileFeatureFlags_t
   typedef struct CUfileFSOps CUfileFSOps_t
   typedef void* CUfileHandle_t
       File handle type.

   typedef struct CUfileIOEvents CUfileIOEvents_t
   typedef struct CUfileIOParams CUfileIOParams_t
   typedef enum CUfileOpcode CUfileOpcode_t
   typedef struct cufileRDMAInfo cufileRDMAInfo_t
   typedef enum CUFILEStatus_enum CUfileStatus_t
   typedef struct sockaddr sockaddr_t

Enumeration Type Documentation

   enum cufileBatchMode
       Enumerator

       CUFILE_BATCH

   enum CUfileDriverControlFlags
       Enumerator

       CU_FILE_USE_POLL_MODE
              use POLL mode. properties.use_poll_mode

       CU_FILE_ALLOW_COMPAT_MODE
              allow COMPATIBILITY mode. properties.allow_compat_mode

   enum CUfileDriverStatusFlags
       Enumerator

       CU_FILE_LUSTRE_SUPPORTED
              Support for DDN LUSTRE

       CU_FILE_WEKAFS_SUPPORTED
              Support for WEKAFS

       CU_FILE_NFS_SUPPORTED
              Support for NFS

       CU_FILE_GPFS_SUPPORTED

       CU_FILE_NVME_SUPPORTED
              < Support for GPFS Support for NVMe

       CU_FILE_NVMEOF_SUPPORTED
              Support for NVMeOF

       CU_FILE_SCSI_SUPPORTED
              Support for SCSI

       CU_FILE_SCALEFLUX_CSD_SUPPORTED
              Support for Scaleflux CSD

       CU_FILE_NVMESH_SUPPORTED
              Support for NVMesh Block Dev

       CU_FILE_BEEGFS_SUPPORTED
              Support for BeeGFS

   enum CUfileFeatureFlags
       Enumerator

       CU_FILE_DYN_ROUTING_SUPPORTED
              Support for Dynamic routing to handle devices across the PCIe bridges

       CU_FILE_BATCH_IO_SUPPORTED
              Unsupported

       CU_FILE_STREAMS_SUPPORTED
              Unsupported

   enum CUfileFileHandleType
       Enumerator

       CU_FILE_HANDLE_TYPE_OPAQUE_FD
              Linux based fd

       CU_FILE_HANDLE_TYPE_OPAQUE_WIN32
              Windows based handle (unsupported)

       CU_FILE_HANDLE_TYPE_USERSPACE_FS

   enum CUfileOpcode
       Enumerator

       CUFILE_READ

       CUFILE_WRITE

   enum CUFILEStatus_enum
       Enumerator

       CUFILE_WAITING

       CUFILE_PENDING

       CUFILE_INVALID

       CUFILE_CANCELED

       CUFILE_COMPLETE

       CUFILE_TIMEOUT

       CUFILE_FAILED

Function Documentation

   CUfileError_t cuFileBatchIOCancel (CUfileBatchHandle_t batch_idp)
   void cuFileBatchIODestroy (CUfileBatchHandle_t batch_idp)
   CUfileError_t cuFileBatchIOGetStatus (CUfileBatchHandle_t batch_idp, unsigned min_nr, unsigned
       * nr, CUfileIOEvents_t * iocbp, struct timespec * timeout)
   CUfileError_t cuFileBatchIOSetUp (CUfileBatchHandle_t * batch_idp, unsigned nr)
   CUfileError_t cuFileBatchIOSubmit (CUfileBatchHandle_t batch_idp, unsigned nr,
       CUfileIOParams_t * iocbp, unsigned int flags)
   CUfileError_t cuFileBufDeregister (const void * devPtr_base)
       deregister an already registered device memory from cuFile

       Parameters:
           devPtr_base device pointer to deregister

       Returns:
           CU_FILE_SUCCESS on success

           CU_FILE_INVALID_VALUE on invalid memory pointer or unregistered memory pointer

       See also:
           cuFileBufRegister

           cuFileRead

           cuFileWrite

   CUfileError_t cuFileBufRegister (const void * devPtr_base, size_t length, int flags)
       register an existing cudaMalloced memory with cuFile to pin for GPUDirect Storage access.

       Parameters:
           devPtr_base device pointer to allocated
           length size of memory region from the above specified devPtr
           flags CU_FILE_RDMA_REGISTER

       Returns:
           CU_FILE_SUCCESS on success

           CU_FILE_NVFS_DRIVER_ERROR

           CU_FILE_INVALID_VALUE

           CU_FILE_CUDA_ERROR for unsupported memory type

           CU_FILE_MEMORY_ALREADY_REGISTERED on error

           CU_FILE_GPU_MEMORY_PINNING_FAILED if not enough pinned memory is available

       Note:
           This memory will be use to perform GPU direct DMA from the supported storage.

       Warning:
           This API is intended for usecases where the memory is used as streaming buffer that is
           reused across multiple cuFile IO operations before calling cuFileBufDeregister

       See also:
           cuFileBufDeregister

           cuFileRead

           cuFileWrite

   CUfileError_t cuFileDriverClose (void)
   CUfileError_t cuFileDriverClose_v2 (void)
       reset the cuFile library and release the nvidia-fs driver

       Returns:
           CU_FILE_SUCCESS on success

           CU_FILE_DRIVER_CLOSING if there are any active IO operations using cuFileRead or
           cuFileWrite

       See also:
           cuFileDriverOpen

   CUfileError_t cuFileDriverGetProperties (CUfileDrvProps_t * props)
       Gets the Driver session properties.

       Returns:
           CU_FILE_SUCCESS on success

       See also:
           cuFileDriverSetPollMode

           cuFileDriverSetMaxDirectIOSize

           cuFileDriverSetMaxCacheSize

           cuFileDriverSetMaxPinnedMemSize

   CUfileError_t cuFileDriverOpen (void)
       Initialize the cuFile library and open the nvidia-fs driver.

       Returns:
           CU_FILE_SUCCESS on success

           CU_FILE_DRIVER_NOT_INITIALIZED

           CU_FILE_DRIVER_VERSION_MISMATCH on driver version mismatch error

       See also:
           cuFileDriverClose

   CUfileError_t cuFileDriverSetMaxCacheSize (size_t max_cache_size)
       Control parameter to set maximum GPU memory reserved per device by the library for
       internal buffering.

       Parameters:
           max_cache_size The maximum GPU buffer space per device used for internal use in KB

       Returns:
           CU_FILE_SUCCESS on success

           CU_FILE_DRIVER_NOT_INITIALIZED if the driver is not initialized

           CU_FILE_DRIVER_VERSION_MISMATCH, CU_FILE_DRIVER_UNSUPPORTED_LIMIT on error

       Warning:
           This is an advanced command and should be tuned based on supported GPU memory

       See also:
           cuFileDriverGetProperties

   CUfileError_t cuFileDriverSetMaxDirectIOSize (size_t max_direct_io_size)
       Control parameter to set max IO size(KB) used by the library to talk to nvidia-fs driver.

       Parameters:
           max_direct_io_size maximum allowed direct io size in KB

       Returns:
           CU_FILE_SUCCESS on success

           CU_FILE_DRIVER_NOT_INITIALIZED if the driver is not initialized

           CU_FILE_DRIVER_VERSION_MISMATCH, CU_FILE_DRIVER_UNSUPPORTED_LIMIT on error

       Warning:
           This is an advanced command and should be tuned based on available system memory

       See also:
           cuFileDriverGetProperties

   CUfileError_t cuFileDriverSetMaxPinnedMemSize (size_t max_pinned_size)
       Sets maximum buffer space that is pinned in KB for use by cuFileBufRegister.

       Parameters:
           max_pinned_size maximum buffer space that is pinned in KB

       Returns:
           CU_FILE_SUCCESS on success

           CU_FILE_DRIVER_NOT_INITIALIZED if the driver is not initialized

           CU_FILE_DRIVER_VERSION_MISMATCH, CU_FILE_DRIVER_UNSUPPORTED_LIMIT on error

       Warning:
           This is an advanced command and should be tuned based on supported GPU memory

       See also:
           cuFileDriverGetProperties

   CUfileError_t cuFileDriverSetPollMode (bool poll, size_t poll_threshold_size)
       Sets whether the Read/Write APIs use polling to do IO operations.

       Parameters:
           poll boolean to indicate whether to use poll mode or not
           poll_threshold_size max IO size to use for POLLING mode in KB

       Returns:
           CU_FILE_SUCCESS on success

           CU_FILE_DRIVER_NOT_INITIALIZED if the driver is not initialized

           CU_FILE_DRIVER_VERSION_MISMATCH, CU_FILE_DRIVER_UNSUPPORTED_LIMIT on error

       Warning:
           This is an advanced command and should be tuned based on available system memory

       See also:
           cuFileDriverGetProperties

   void cuFileHandleDeregister (CUfileHandle_t fh)
       releases a registered filehandle from cuFile

       Parameters:
           fh CUfileHandle_t file handle

       Returns:
           void

       See also:
           cuFileHandleRegister

   CUfileError_t cuFileHandleRegister (CUfileHandle_t * fh, CUfileDescr_t * descr)
       cuFileHandleRegister is required, and performs extra checking that is memoized to provide
       increased performance on later cuFile operations.

       Parameters:
           fh CUfileHandle_t opaque file handle for IO operations
           descr CUfileDescr_t file descriptor (OS agnostic)

       Returns:
           CU_FILE_SUCCESS on successful completion. fh will be updated for use in cuFileRead,
           cuFileWrite, cuFileHandleDeregister

           CU_FILE_DRIVER_NOT_INITIALIZED on failure to load driver

           CU_FILE_IO_NOT_SUPPORTED - if filesystem is not supported

           CU_FILE_INVALID_VALUE if null or bad api arguments

           CU_FILE_INVALID_FILE_OPEN_FLAG if file is opened with unsupported modes like no
           O_DIRECT

           CU_FILE_INVALID_FILE_TYPE if filepath is not valid or is not a regular file

           CU_FILE_HANDLE_ALREADY_REGISTERED if file handle/descriptor is already registered

       Description cuFileHandleRegister registers the open file descriptor for use with cuFile IO
       operations.

       This API will ensure that the file’s descriptor is checked for GPUDirect Storage support
       and returns a valid file handle on CU_FILE_SUCCESS.

       Note:
           the file needs to be opened in O_DIRECT mode to support GPUDirect Storage.

       See also:
           cuFileRead

           cuFileWrite

           cuFileHandleDeregister

   ssize_t cuFileRead (CUfileHandle_t fh, void * devPtr_base, size_t size, off_t file_offset,
       off_t devPtr_offset)
       read data from a registered file handle to a specified device memory

       Parameters:
           fh CUfileHandle_t opaque file handle
           devPtr_base base address of buffer in device memory
           size size bytes to read
           file_offset file-offset from beginning of the file
           devPtr_offset offset relative to the devPtr_base pointer to read into.

       Returns:
           size of bytes successfully read

           -1 on error, in which case errno is set to indicate filesystem errors.

           all other errors will return a negative integer value of CUfileOpError enum value.

       Note:
           If the devPtr is not registered with cuFileBufRegister, the data will be buffered
           through preallocated pinned buffers.

           This is useful for applications that need to perform IO to unaligned file offsets
           and/or size. This is also recommended for cases where the BAR1 memory size is smaller
           than the size of the allocated memory.

       See also:
           cuFileBufRegister

           cuFileHandleRegister

           cuFileWrite

   long cuFileUseCount (void)
       returns use count of cufile drivers at that moment by the process.

   ssize_t cuFileWrite (CUfileHandle_t fh, const void * devPtr_base, size_t size, off_t
       file_offset, off_t devPtr_offset)
       write data from a specified device memory to a registered file handle

       Parameters:
           fh CUfileHandle_t opaque file handle
           devPtr_base base address of buffer in device memory
           size size bytes to write
           file_offset file-offset from beginning of the file
           devPtr_offset offset relative to the devPtr_base pointer to read into.

       Returns:
           size of bytes successfully written

           -1 on error, in which case errno is set to indicate filesystem errors.

           all other errors will return a negative integer value of CUfileOpError enum value.

       Note:
           If the devPtr is not registered with cuFileBufRegister, the data will be buffered
           through preallocated pinned buffers.

           This is useful for applications that need to perform IO to unaligned file offsets
           and/or size. This is also recommended for cases where the BAR1 memory size is smaller
           than the size of the allocated memory.

       See also:
           cuFileBufRegister

           cuFileHandleRegister

           cuFileRead

Variable Documentation

   CUfileOpError

Author

       Generated automatically by Doxygen for GPUDirect Storage from the source code.