Difference between revisions of "Compiling Chef Summit"

From PHASTA Wiki
Jump to: navigation, search
Line 47: Line 47:
 
  chmod +x libSimPartitionWrapper-openmpi.a.
 
  chmod +x libSimPartitionWrapper-openmpi.a.
  
Once this is completed, copy this newly generated partition wrapper to ../../lib/x64_rhel7_gcc48/.
+
Once this is completed, copy this newly generated partition wrapper to ../../lib/x64_rhel7_gcc48/. Unfortunately, the instructions from this point forward will be less explicit as the best way to learn the process is to view example scripts and adapt these to fit your needs. From this point forward it is assumed that a directory named SCOREC-core was created and the source code from github was properly cloned in this directory.  
  
 +
==Generating the Scripts to Compile Chef==
  
[[File:DoConfigure.sh.JPG]]
+
In order to run Chef, two scripts must be generated. The naming conventions of the scripts are typically doConfigure.sh and env_simmtrix_version. Below, an example doConfigure.sh script is shown. This script primarily executes the necessary cmake commands for compilation. It also runs the env_simmtrix_version script. In the example below, it calls env_14.0-190626. Note that both of these scripts are located in /projects/mabl7046/SCOREC-core/build_14.0-190626, or the directory where Chef is to be compiled.
 +
 
 +
 
 +
 
 +
#!/bin/bash -l
 +
. /projects/mabl7046/SCOREC-core/build_14.0-190626/env_14.0-190626
 +
#unload default modules
 +
module purge
 +
#load what we need
 +
module load gcc/6.1.0
 +
module load openmpi/2.0.1
 +
module load cmake/3.14.1
 +
### For Chef
 +
cmake -DCMAKE_C_COMPILER=mpicc -DCMAKE_CXX_COMPILER=mpicxx -DSCOREC_CXX_WARNINGS=ON -DSCOREC_CXX_OPTIMIZE=ON -DSCOREC_CXX_SYMBOLS=ON -DPCU_COMPRESS=ON -DENABLE_ZOLTAN=ON -
 +
DENABLE_SIMMETRIX=ON -DSIM_MPI="openmpi" -DSIM_PARASOLID=ON -DMDS_SET_MAX=1024 -DMDS_ID_TYPE=long -DIS_TESTING=OFF -DMESHES="/projects/mabl7046/pumi-meshes" -
 +
DCMAKE_INSTALL_PREFIX=$PWD/install ../core
 +
#-DMDS_ID_TYPE=int or long
 +
sleep 3
 +
make -j32
 +
make -j32

Revision as of 10:25, 13 July 2020

Copy Simmetrix Libraries from Viz Nodes

Note that in order for Chef to operate, it must be compiled with the proper Simmetrix libraries. That is to say, there needs to be compatibility between Simmetrix and SCOREC-core for compilation of Chef to run smoothly. Please see https://fluid.colorado.edu/wiki/index.php/Building_SCOREC_Core for instructions on building SCOREC-core. An example (what worked for me) is provided through out the wiki. From the viz nodes (/projects/tools/SimmetrixTest), I ran

scp -r 14.0-190626beta/ <username>@login.rc.colorado.edu:<path>

to copy over the directory 14.0-190626beta/ to Summit.


Set Proper Environment

To start with a clean slate, run

module purge

This unloads all currently loaded modules.

Next, run

module load gcc/6.1.0
module load openmpi/2.0.1

Note that /6.1.0 and /2.0.1 can be swapped with the intended versions of gcc and openmpi the user intends on using.

Generate Partition Wrapper

After the directory is copied over to Summit and the environment is set, a Partition Wrapper needs to be generated. Go to:

<path>/14.0-190626beta/code/PartitionWrapper

and open the file

Makefile.custom

Obviously, 14.0-190626beta/ is a placeholder and any version of Simmetrix (i.e. the version you used to create the mesh) will work. In this example, I used open openmpi (A High Performance Message Passing Library). I also used mpicc and mpicxx as MPI-C and MPI-C++ compilers respectively. If this is what is intended, in the Makefile, set the following variables:

PQUAL:= -openmpi
CC:=/curc/sw/openmpi/2.0.1/gcc/6.1.0/bin/mpicc 
CXX:= /curc/sw/openmpi/2.0.1/gcc/6.1.0/bin/mpicxx

Notice the compatibility between the loaded modules and the directory structure above. Once this is set, in the terminal run

make -f Makefile.custom PARALLEL=openmpi

This will generate a file named libSimPartitionWrapper-openmpi.a. Then, run

chmod +x libSimPartitionWrapper-openmpi.a.

Once this is completed, copy this newly generated partition wrapper to ../../lib/x64_rhel7_gcc48/. Unfortunately, the instructions from this point forward will be less explicit as the best way to learn the process is to view example scripts and adapt these to fit your needs. From this point forward it is assumed that a directory named SCOREC-core was created and the source code from github was properly cloned in this directory.

Generating the Scripts to Compile Chef

In order to run Chef, two scripts must be generated. The naming conventions of the scripts are typically doConfigure.sh and env_simmtrix_version. Below, an example doConfigure.sh script is shown. This script primarily executes the necessary cmake commands for compilation. It also runs the env_simmtrix_version script. In the example below, it calls env_14.0-190626. Note that both of these scripts are located in /projects/mabl7046/SCOREC-core/build_14.0-190626, or the directory where Chef is to be compiled.


#!/bin/bash -l
. /projects/mabl7046/SCOREC-core/build_14.0-190626/env_14.0-190626
#unload default modules
module purge
#load what we need
module load gcc/6.1.0
module load openmpi/2.0.1
module load cmake/3.14.1
### For Chef
cmake -DCMAKE_C_COMPILER=mpicc -DCMAKE_CXX_COMPILER=mpicxx -DSCOREC_CXX_WARNINGS=ON -DSCOREC_CXX_OPTIMIZE=ON -DSCOREC_CXX_SYMBOLS=ON -DPCU_COMPRESS=ON -DENABLE_ZOLTAN=ON - 
DENABLE_SIMMETRIX=ON -DSIM_MPI="openmpi" -DSIM_PARASOLID=ON -DMDS_SET_MAX=1024 -DMDS_ID_TYPE=long -DIS_TESTING=OFF -DMESHES="/projects/mabl7046/pumi-meshes" - 
DCMAKE_INSTALL_PREFIX=$PWD/install ../core
#-DMDS_ID_TYPE=int or long
sleep 3
make -j32
make -j32