diff --git a/doc/howToBuild.md b/doc/howToBuild.md new file mode 100644 index 00000000..fe0f79bd --- /dev/null +++ b/doc/howToBuild.md @@ -0,0 +1,53 @@ +# How to build PhasicFlow? +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. +### Step 1: +Make sure you have installed all the required packages on your computer (tbb and CMake and compilers). +### Step 2: Cloning Kokkos +It is assumed that Kokkos source is located in the home folder of your OS. Clone the current version of Kokkos into your home folder: + +``` +cd ~ +mkdir Kokkos +cd Kokkos +git clone https://github.com/kokkos/kokkos.git +``` + +or simply download and extract the source code of Kokkos in `~/Kokkos` folder. In the end, the top level CMakeLists.txt file should be located in `~/Kokkos/kokkos` folder. + +### Step 3: 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/hamidrezanorouzi/phasicFlow.git +``` +### Step 4: Environmental variables +In the terminal enter the following command: + +`gedit ~/.bashrc` + +and add the following line to the end of file, save and close it. + +source $HOME/PhasicFlow/phasicFlow/cmake/bashrc + +close the terminal. + +### Step 5: Building PhasicFlow +Follow one of the followings to build PhasicFlow for one mode of execution. +#### Serial build for CPU +Open a new terminal and enter the following commands: +``` +cd ~/PhasicFlow/phasicFlow/build +cmake ../ -DpFlow_Build_Serial=On +make install +``` +For faster builds, use `make install -j`. This will use all the CPU cores on your computer for building. +#### OpenMP build for CPU + +#### GPU build for parallel execution on CUDA-enabled GPUs + + + +After building, `bin`, `include`, and `lib` folders will be created in `~/PhasicFlow/phasicFlow/` folder. Now you are ready to use PhasicFlow.