Comparaison des versions

Légende

  • Ces lignes ont été ajoutées. Ce mot a été ajouté.
  • Ces lignes ont été supprimées. Ce mot a été supprimé.
  • La mise en forme a été modifiée.

Sommaire

Create an executable

1) Create directory

First create yourself a directory under your home(!) (so it gets backup up) in which you want to create the executable.
I usually call mine:

...

           mkdir -p ~/gem/v_5.1.1/Abs/My_Abs      # Set 'My_Abs' to whatever you like. But make sure to give every executable directory a different 'my_Abs' name!

2) Populate directory

Go into the executable directory you just created above. For example:

            cd ~/gem/v_5.1.1/Abs/My_Abs

a) Get the basename of abs-directory

Get the basename (last part of your directory path) of your abs-directory for later use:

...

            echo $base_dir

b) Clone the Git repository you want

For example:

             git clone ~winger/gem/v_5.1.1/Abs/UQAM_development_FLake_CLASS/gem

then change into 'gem' directory that came with the clone:

             cd gem

c) Create working directories

So the object files, libraries and executables will not be under your home, create links for the directories 'build' and 'work'. Pick a place under which you want to keep the object files, libraries and executables. Preferably under the default(!) space of you professors, for example:

...

            mkdir -p ${work_space}/${base_dir}/build
            mkdir -p ${work_space}/${base_dir}/work
            ln -s ${work_space}/${base_dir}/build
            ln -s ${work_space}/${base_dir}/work

3) Create the

...

executable

a) Acquire compiler

(Only needed once per window/terminal.)

...

            make maingemdm

4) Modify source code

a) You can find the GEM routines under .../gem/src/*/*, for example :

...

            cd .../build/src/rpnphy
            make utils/sfclayer_mod.F90.o

5) Use your executable

To use your own executable set 'GEM_ovbin' in your 'configexp.cfg' to the path of your executable directory, up until but excluding the 'gem' directory. For example:

            GEM_ovbin=~/gem/v_5.1.1/Abs/my_abs

Modify compiler flags

Compile one routine without optimization, '-O0'

  • edit the file named CMakeLists.txt in the main directory where the subroutine is situated (for example, src/rpnphy/CMakeLists.txt if the subroutine is situated in the physics directory)
  • copy the following example before the last line (add_library...) and modify it according to your needs:

set_source_files_properties(utils/sfclayer_mod.F90 PROPERTIES COMPILE_OPTIONS "-O0")

  • make sure you use a recent version of cmake (at least 3.11) - on Narval we do
  • you can verify the option was passed by looking at the file flags.make situated in the corresponding directory in the build directory, for example build/src/rpnphy/CMakeFiles/phy.dir/flags.make:

# Custom options: src/rpnphy/CMakeFiles/phy.dir/utils/sfclayer_mod.F90.o_OPTIONS = -O0

Then compile with the usual:

    make maingemdm
or
    make -j4 maingemdm

When compiling this routine now you should see something like the following:
Building Fortran object src/rpnphy/CMakeFiles/phy.dir/utils/sfclayer_mod.F90.o
...  -O2 -g   -O0 -c ...

The second '-O0' should overwrite the first '-O2'.

Set 'fp-model' to 'precise' or 'strict'

In project/Linux-x86_64-intel.cmake change in line 24 '-fp-model source' to '-fp-model precise' (Vivian) resp. '-fp-model strict' (Ron).

precise

Disables optimizations that are not value-safe on floating-point data.

strict

Enables precise and except, disables contractions, and enables pragma stdc fenv_access.

source

Rounds intermediate results to source-defined precision.