- Simple benchmark code for GPUDirect Storage (GDS) via HDF5
- Developed by Yohei MIKI (Information Technology Center, The University of Tokyo)
- Released under the MIT license, see LICENSE for detail
- Copyright (c) 2023 Information Technology Center, The University of Tokyo
-
Required software
- CMake (>= 3.20.0)
- Boost C++ Libraries
- CUDA Toolkit (with GDS support)
- CUDA Samples
- set path of directly contains
helper_cuda.hasCPATH,CUDA_SAMPLES_DIR, orCUDA_SAMPLES_INCfor CMake - otherwise, edit
cmake/modules/FindCUDA_samples.cmakeproperly
- set path of directly contains
- HDF5 (>= 1.14.0)
- HDF5 Nvidia GPUDirect Storage VFD
- set path of directly contains
H5FDgds.hasCPATH,VFD_GDS_DIR, orVFD_GDS_INCfor CMake - set path of directly contains
libhdf5_vfd_gds.soasLD_LIBRARY_PATH,VFD_GDS_DIR, orVFD_GDS_LIBfor CMake - otherwise, edit
cmake/modules/FindHDF5VFD_GDS.cmakeproperly
- set path of directly contains
-
Configuration using CUI
cmake -S . -B build [option] cd build make
-
Configuration using GUI
cmake -S . -B build cd build ccmake -S .. # set options using the GUI interface make
-
List of configure option(s)
input note -DTARGET_GPU=[NVIDIA_CC90 NVIDIA_CC80 NVIDIA_CC86]target GPU architecture (e.g., NVIDIA_CC90 for NVIDIA H100)
-
Execution
bin/h5gds [option]
-
Execution in native mode (force to use GDS)
CUFILE_JSON=./disable_compat.json bin/h5gds [option]
-
Execution in compatible mode (read/write via host CPU)
CUFILE_JSON=./force_compat.json bin/h5gds [option]
-
-
List of execution options
-
options have impact on benchmark score
input note --asisadopt asis mode: read/write without hyperslab (i.e., disable hyperslab mode) --num VALUEset VALUE as number of particles --fblk VALUEset VALUE as file block size (byte) --cbuf VALUEset VALUE as copy buffer size (byte); must be a multiple of the file block size --memb VALUEset VALUE as memory boundary (byte) -
options have no impact on benchmark score
input note --helpshow help message --skipskip consistency check between read and original data --virial VALUEset VALUE as the initial Virial ratio of the system --radius VALUEset VALUE as the initial radius of the system --mass VALUEset VALUE as the total mass of the system --xdmfgenerate XDMF file to visualize the snapshot (only effective under hyperslab mode)
-
-
$N$ -element arrays to represent$N$ -body particlesquantity data on GPU dataset in HDF5 file
(asis mode)dataset in HDF5 file
(hyperslab mode)position (x, y, z)
mass (w)float4 pos[N] float4 pos[N] float position[N][3]
float mass[N]velocity (x, y)
velocity(z)float2 vel_xy[N]
float vel_z[N]float2 vel_xy[N]
float vel_z[N]float velocity[N][3] particle ID uint64_t idx[N] uint64_t id[N] uint64_t id[N]