From fa8044ad23a9f8f9f09f0f050ecf67164db1595b Mon Sep 17 00:00:00 2001 From: Hamidreza Norouzi <72734524+hamidrezanorouzi@users.noreply.github.com> Date: Thu, 28 Sep 2023 23:29:51 +0330 Subject: [PATCH] Update README.md --- README.md | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 8abc5fda..a85ef5e6 100644 --- a/README.md +++ b/README.md @@ -3,8 +3,16 @@ -**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 regular PCs, in parallel mode for multi-core CPUs, or build it for a GPU device to off-load computations to a GPU. In its current statues you can simulate millions of particles (up to 80M particles tested) on a single desktop computer. You can see the [performance tests of PhasicFlow](https://github.com/PhasicFlow/phasicFlow/wiki/Performance-of-phasicFlow) in the wiki page. +**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 regular PCs, in parallel mode for multi-core CPUs, or build it for a GPU device to off-load computations to a GPU. In its current statues you can simulate millions of particles (up to 80M particles tested) on a single desktop computer. You can see the [performance tests of PhasicFlow](https://github.com/PhasicFlow/phasicFlow/wiki/Performance-of-phasicFlow) in the wiki page. +**MPI** parallelization with dynamic load balancing is under development. With this level of parallelization, PhasicFlow can leverage the computational power of **multi-gpu** workstations or clusters with distributed memory CPUs. +In summary PhasicFlow can have 6 execution modes: +1. Serial on a single CPU, +2. Parallel on a multi-core computer/node (using OpenMP), +3. Parallel on an nvidia-GPU (using Cuda), +4. Parallel on distributed memory workstation (Using MPI) +5. Parallel on distributed memory workstations with multi-core nodes (using MPI+OpenMP) +6. Parallel on workstations with multiple GPUs (using MPI+Cuda). ## How to build? You can build PhasicFlow for CPU and GPU executions. [Here is a complete step-by-step procedure](https://github.com/PhasicFlow/phasicFlow/wiki/How-to-Build-PhasicFlow).