phasicFlow/README.md

42 lines
2.5 KiB
Markdown
Raw Normal View History

2022-08-26 13:37:47 +00:00
# phasicFlow
2022-08-28 07:31:23 +00:00
phasicFlow is a parallel C++ code for performing DEM simulations. It can run on shared-memory multi-core computational units such as multi-core CPUs or GPUs (for now it works on CUDA-enabled GPUs). The parallelization method mainly relies on loop-level parallelization on a shared-memory computational unit. You can build and run phasicFlow in serial mode on regualr PCs, in parallel mode for multi-core CPUs, or build it for a GPU device to off-load computations to a GPU.
2022-08-26 14:12:07 +00:00
2022-08-26 14:12:36 +00:00
# Requirements
2022-08-28 08:26:49 +00:00
### Compilers
2022-08-26 14:14:20 +00:00
phasicFlow should work with every gnu compiler that implements C++17 standards. For now, it is tested on Ubuntu distribution of linux operating systems. If the minimum requirements are met, there should not be any problem with compiling the code. However, there are always compiler bugs from one version to another that may need you extra attempts for upgrading to newer versions or downgrading to prior versions of the compiler.
2022-08-28 07:31:23 +00:00
* for CPU builds: It requires gcc-6.x or higher.
* for GPU (CUDA-enabled): NVCC-10.x or higher.
2022-08-26 14:12:07 +00:00
2022-08-28 08:26:49 +00:00
### Required packages
2022-08-28 07:31:23 +00:00
phasicFlow uses [Kokkos]( https://github.com/kokkos/kokkos) as the backend for parallelization. So, you need to have the code in the local machine alongside phasicFlow. The make system is adjusted in a way so you do not need to compile Kokkos separately and the required source code files from Kokkos are compiled alongside the phasicFlow.
2022-08-28 08:26:49 +00:00
### CMake
2022-09-02 08:14:25 +00:00
You also need to have CMake installed on your computer. At the moment CMake-3.22 or higher is needed.
### tbb
For now, some parallel algorithms rely on tbb parallel library (C++ parallel backend). This dependency will be removed soon. Use the following commands to install it:
`sudo apt update`
`sudo apt install libtbb-dev`
2022-08-27 07:30:58 +00:00
2022-08-26 14:24:24 +00:00
# How to build?
2022-08-27 07:30:58 +00:00
phasicFlow uses CMake as the build system. you need to have CMake-3.22 or higher installed on your machine. you can either use the command line for setting-up the build system, or use `cmake-gui` to setup your build system through the GUI.
2022-08-26 14:14:20 +00:00
2022-08-26 14:24:50 +00:00
### build for serial execution
2022-08-26 14:31:35 +00:00
2022-08-26 14:24:50 +00:00
### build for parallel execution on CPU
2022-08-26 14:31:35 +00:00
2022-08-26 14:24:50 +00:00
### build for parallel execution on CUDA-enabled GPUs
2022-08-26 14:31:35 +00:00
2022-08-26 14:24:24 +00:00
# How to use phasicFlow?
2022-08-28 08:26:49 +00:00
2022-08-26 14:31:35 +00:00
# Extentions in future
### parallelization
2022-08-27 07:33:44 +00:00
* Extending the code for using OpenMPTarget backend to include more GPUs for off-loading the computations.
2022-08-26 14:31:35 +00:00
* Extending high-level parallelization and impelmenting spacial partitioning and load balancing for muilti-GPU computations and running phasicFlow on distributed memory super-computers
### basic features