ioengine: Add libcufile I/O engine
authorBrian T. Smith <bsmith@systemfabricworks.com>
Tue, 3 Nov 2020 23:54:55 +0000 (23:54 +0000)
committerBrian T. Smith <bsmith@systemfabricworks.com>
Sat, 5 Dec 2020 20:46:46 +0000 (20:46 +0000)
commit10756b2c95ef275501d4dbda060caac072cf6973
treeb73cc6bf8eaf3204f5af6ee3868524a392ba1d41
parent7914c6147adaf3ef32804519ced850168fff1711
ioengine: Add libcufile I/O engine

The libcufile I/O engine uses NVIDIA GPUDirect Storage (GDS) cuFile API to perform
synchronous I/O directly against GPU buffers via nvidia-fs and a GDS-supported
filesystem.

'configure --enable-libcufile' enables the libcufile engine.

CFLAGS must specify the location of CUDA and cuFile headers.
e.g. CFLAGS="-I/usr/local/cuda/include -I/usr/local/cuda/lib64"

LDFLAGS must specify the location of CUDA and cuFile libraries.
e.g. LDFLAGS="-L/usr/local/cuda/lib64"

The paths used in CFLAGS and LDFLAGS depend upon the build host's
CUDA installation.

libcufile adds the following optons: gpu_dev_ids, cuda_io
Usage is documented in HOWTO, fio.1, examples/libcufile-cufile.fio
and examples/libcufile-posix.fio.

Note that enabling verify when cuda_io=cufile necessitates
cudaMemcpy() to populate the GPU buffer on a write and populate the
CPU buffer on a read. The primary goal of GDS is to not copy data
between CPU and GPU buffers.

Signed-off-by: Brian T. Smith <bsmith@systemfabricworks.com>
HOWTO
Makefile
configure
engines/libcufile.c [new file with mode: 0644]
examples/libcufile-cufile.fio [new file with mode: 0644]
examples/libcufile-posix.fio [new file with mode: 0644]
fio.1
optgroup.c
optgroup.h