Skip to content

How to build PhasicFlow‐v‐1.0

hamidrezanorouzi edited this page Apr 30, 2025 · 6 revisions

How to build PhasicFlow-v-1.0

You can build PhasicFlow for CPU or GPU. You can have a single build or oven multiple builds on a machine. Here you learn how to have a single build of PhasicFlow, in various modes of execution. You can install PhasicFlow-v-1.0 on Ubuntu-22.04 LTS and Ubuntu-24.04 LTS. Installing it on older versions of Ubuntu needs some additional steps to meet the requirements which are not covered here.

If you want to install PhasicFlow on Windows OS, just see this page for more information.

Required packages

You need a list of packages installed on your computer before building PhasicFlow:

  • git, for cloning the code and package management
  • g++, for compiling the code
  • cmake, for generating build system
  • Cuda-12.x or above (if GPU is targeted), for compiling the code for CUDA execution.

Installing packages

Execute the following commands to install the required packages (Except Cuda). tbb is installed automatically.

sudo apt update
sudo apt install -y git g++ cmake cmake-qt-gui

Installing Cuda for GPU execution

If you want to build PhasicFlow to be executed on an nvidia-GPU, you need to install the latest version of Cuda compiler (Version 12.x or above), which is compatible with your hardware and OS, on your computer.

How to build?

Here you will learn how to build PhasicFlow for single execution mode. Follow the steps below to install it on your computer. Tested operating systems are:

  • Ubuntu-22.04 LTS
  • Ubuntu-24.04 LTS

Step 1: Package check

Make sure that you have installed all the required packages on your computer. See above for more information.

Step 2: Cloning PhasicFlow

Create the PhasicFlow folder in your home folder and then clone the source code into that folder:

cd ~
mkdir PhasicFlow
cd PhasicFlow
git clone https://github.com/PhasicFlow/phasicFlow.git
mv phasicFlow phasicFlow-v-1.0

Step 3: Environmental variables

Opne the bashrc file using the following command:

$ gedit ~/.bashrc

and add the following line to the end of the file, save and close it.

source $HOME/PhasicFlow/phasicFlow-v-1.0/cmake/bashrc

this will introduce a new source file for setting the environmental variables of PhasicFlow. If you want to load these variables in the current open terminal, you need to source it. Or, simply close the terminal and open a new terminal.

Step 4: Building PhasicFlow

Follow one of the followings to build PhasicFlow for one mode of execution.

Serial build for CPU

In a new terminal enter the following commands:

cd ~/PhasicFlow/phasicFlow-v-1.0
mkdir build
cd build
cmake ../ -DpFlow_Build_Serial=On -DCMAKE_BUILD_TYPE=Release
make install -j4

For faster builds, use make install -j. This will use all the CPU cores on your computer for building.

OpenMP build for CPU

cd ~/PhasicFlow/phasicFlow-v-1.0
mkdir build
cd build
cmake ../ -DpFlow_Build_OpenMP=On -DCMAKE_BUILD_TYPE=Release
make install -j4

GPU build for parallel execution on CUDA-enabled GPUs

cd ~/PhasicFlow/phasicFlow-v-1.0
mkdir build
cd build
cmake ../ -DpFlow_Build_Cuda=On -DCMAKE_BUILD_TYPE=Release
cmake ../ -DpFlow_Build_Cuda=On -DCMAKE_BUILD_TYPE=Release
make install -j4

After building, bin, include, and lib folders will be created in ~/PhasicFlow/phasicFlow-v-1.0/ folder. Now you are ready to use PhasicFlow.

note 1: When compiling the code in parallel, you need to have enough RAM on your computer. As a rule, you need 1 GB free RAM per each processor on your computer for compiling in parallel. You may want to use fewer number of cores on your computer by using the following command:

make install -j3

the above command only uses 3 cores for compiling.

note 2: By default PhasicFlow is compiled with double as floating point variable. You can compile it with float. Just in the command line of camke added -DpFlow_Build_Double=Off flag to compile it with float. For example if you are building for cuda, you can enter the following command:

cmake ../ -DpFlow_Build_Cuda=On -DpFlow_Build_Double=Off

Step 5: Testing

In the current terminal or a new terminal enter the following command:

checkPhasicFlow

This command shows the host and device environments and software version. If PhasicFlow was build correctly, you would get the following output:

Initializing host/device execution spaces . . . 
  Host execution space is Serial
  Device execution space is Serial

  You are using phasicFlow v-1.0 (copyright(C): www.cemf.ir)
  In this build, double is used for floating point operations and uint32for indexing.
  This is not a build for MPI execution

Finalizing host/device execution space ....