# Use ultraFluidX

Check system requirements and launch ultraFluidX.

Before using ultraFluidX, make sure that enough compatible GPU devices are available on your machine(s) for your desired simulation, especially in terms of available memory on the devices and their compute performance.

ultraFluidX requires at least one NVIDIA GPU device with compute capability 3.5 or higher and NVIDIA drivers version 450.80.02 or higher, and it is strongly recommended to use a minimum of four GPUs based on the NVIDIA Ampere Architecture, for example, NVIDIA A100, to allow for overnight simulations of typical passenger-car setups on a single machine.

ultraFluidX always needs MPI to run a simulation. The main rank, 0 handles the preprocessing and the I/O, whereas each additional secondary rank 1...n handles one GPU device each. Therefore, ultraFluidX must be started with a minimum of 2 MPI ranks to use at least 1 GPU device for the simulation.

To start ultraFluidX on 4 GPU devices for example, execute the BASH command,
mpirun -np 5 ultraFluidX case.xml

case.xml specifies the simulation parameters and needs to reference a tessellated surface mesh in STL format, a small example (cube.xml, cube.stl) is located in the installation folder uFX/examples/cube/.

If there are more GPUs available than needed for running the simulation, the number of GPUs that is accessible by ultraFluidX can be selected via the environment variable CUDA_VISIBLE_DEVICES, that is, by executing the BASH command,
export CUDA_VISIBLE_DEVICES=0,1,2,3
in your terminal to restrict the usable GPUs on the respective machine to devices 0 to 3.
CAUTION:
If ultraFluidX cannot find as many GPU devices as you expect to be available on your machine, verify that CUDA_VISIBLE_DEVICES has not been set unintentionally.
For convenience, ultraFluidX can also be launched via the uFX script in the altair/scripts folder:
ufx -np 5 -inpFile case.xml

The script sets the required environment variables, wraps the mpirun call, and redirects the output of ultraFluidX into a log file that is automatically tagged with the current time stamp.