diff options
author | Brian T. Smith <bsmith@systemfabricworks.com> | 2020-11-03 23:54:55 +0000 |
---|---|---|
committer | Brian T. Smith <bsmith@systemfabricworks.com> | 2020-12-05 20:46:46 +0000 |
commit | 10756b2c95ef275501d4dbda060caac072cf6973 (patch) | |
tree | b73cc6bf8eaf3204f5af6ee3868524a392ba1d41 /configure | |
parent | 7914c6147adaf3ef32804519ced850168fff1711 (diff) | |
download | fio-10756b2c95ef275501d4dbda060caac072cf6973.tar.gz fio-10756b2c95ef275501d4dbda060caac072cf6973.tar.bz2 |
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>
Diffstat (limited to 'configure')
-rwxr-xr-x | configure | 30 |
1 files changed, 30 insertions, 0 deletions
@@ -162,6 +162,7 @@ pmemblk="no" devdax="no" pmem="no" cuda="no" +libcufile="no" disable_lex="" disable_pmem="no" disable_native="no" @@ -224,6 +225,8 @@ for opt do ;; --enable-cuda) cuda="yes" ;; + --enable-libcufile) libcufile="yes" + ;; --disable-native) disable_native="yes" ;; --with-ime=*) ime_path="$optarg" @@ -272,6 +275,7 @@ if test "$show_help" = "yes" ; then echo "--disable-shm Disable SHM support" echo "--disable-optimizations Don't enable compiler optimizations" echo "--enable-cuda Enable GPUDirect RDMA support" + echo "--enable-libcufile Enable GPUDirect Storage cuFile support" echo "--disable-native Don't build for native host" echo "--with-ime= Install path for DDN's Infinite Memory Engine" echo "--enable-libiscsi Enable iscsi support" @@ -2496,6 +2500,29 @@ fi print_config "cuda" "$cuda" ########################################## +# libcufile probe +if test "$libcufile" != "no" ; then +cat > $TMPC << EOF +#include <cufile.h> + +int main(int argc, char* argv[]) { + cuFileDriverOpen(); + return 0; +} +EOF + if compile_prog "" "-lcuda -lcudart -lcufile" "libcufile"; then + libcufile="yes" + LIBS="-lcuda -lcudart -lcufile $LIBS" + else + if test "$libcufile" = "yes" ; then + feature_not_found "libcufile" "" + fi + libcufile="no" + fi +fi +print_config "libcufile" "$libcufile" + +########################################## # check for cc -march=native build_native="no" cat > $TMPC << EOF @@ -2966,6 +2993,9 @@ fi if test "$cuda" = "yes" ; then output_sym "CONFIG_CUDA" fi +if test "$libcufile" = "yes" ; then + output_sym "CONFIG_LIBCUFILE" +fi if test "$march_set" = "no" && test "$build_native" = "yes" ; then output_sym "CONFIG_BUILD_NATIVE" fi |