Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

  1. Logging into the Marconi :

    Code Block
    ssh <USER_NAME>@login.marconi.cineca.it


  2. Change location to $WORK directory, which should point to /marconi_work/FUSIO_HLST :

    Code Block
    $: cd $WORK
    $: pwd
    /marconi_work/FUSIO_HLST


  3. Load GCC 7.3.0 and then INTEL 2020:

    Code Block
    $: module load gnu/7.3.0
    $: module load intel/pe-xe-2020--binary


  4. Prepare directories:

    Code Block
    $: mkdir -p IMAS_software/{cache,libs,modules,spack,stage}-{gcc,intel}
    $: mkdir -p IMAS_software/cache-{gcc,intel}/{cache,var,test}
    $: tree IMAS_software/
    IMAS_software/
    ├── cache-gcc
    │   ├── cache
    │   ├── test
    │   └── var
    ├── cache-intel
    │   ├── cache
    │   ├── test
    │   └── var
    ├── libs-gcc
    ├── libs-intel
    ├── modules-gcc
    ├── modules-intel
    ├── spack-gcc
    ├── spack-intel
    ├── stage-gcc
    └── stage-intel


  5. Go into IMAS_software directory:

    Code Block
    cd IMAS_software


  6. Clone spack repository to spack-intel :

    Code Block
    git clone https://github.com/spack/spack.git spack-intel


  7. Go into spack-intel directory:

    Code Block
    cd spack-intel


  8. Checkout desired version of spack :

    Code Block
    git checkout v0.19.0


  9. Set-up spack configuration:

    1. Go to directory where default configuration files are stored (assuming you're still inside spack-intel repository):

      Code Block
      cd etc/spack/defaults/


    2. Edit config.yaml :

      Code Block
      vim config.yaml

      You need to change the root of the install_tree, projections for allbuild_stage dir, test_stage dir, source_cache dir and misc_cache dir.
      Example:

      1. root of the install_tree :

        Code Block
        config:
          # This is the path to the root of the Spack install tree.
          # You can use $spack here to refer to the root of the spack instance.
          install_tree:
            root: /marconi_work/FUSIO_HLST/IMAS_software/libs-intel


      2. projections :

        Code Block
        projections:
              all: "${PACKAGE}/${VERSION}/${COMPILERNAME}/${COMPILERVER}/${HASH}"


      3. build_stage :

        Code Block
          build_stage:
            - /marconi_work/FUSIO_HLST/IMAS_software/stage-intel


      4. test_stage :

        Code Block
          test_stage: /marconi_work/FUSIO_HLST/IMAS_software/cache-intel/test


      5. source_cache :

        Code Block
          source_cache: /marconi_work/FUSIO_HLST/IMAS_software/cache-intel/var/cache


      6. misc_cache :

        Code Block
          misc_cache: /marconi_work/FUSIO_HLST/IMAS_software/cache-intel/cache


    3. Edit modules.yaml :

      Code Block
      vim modules.yaml

      Change the roots for the tcl modules:

      1. Example: 

        Code Block
          # These are configurations for the module set named "default"
          default:
            # Where to install modules
            roots:
             tcl:    /marconi_work/FUSIO_HLST/IMAS_software/modules-intel


    4. Edit linux/modules.yaml :

      Code Block
      vim linux/modules.yaml

      Here you have to fill the whole body just to set the module structure projections:


      Code Block
      modules:
        default:
          arch_folder: false
          tcl:
            projections:
              all: '{name}/{version}/{compiler.name}/{compiler.version}/sha'
          prefix_inspections:
            lib:
              - LD_LIBRARY_PATH
            lib64:
              - LD_LIBRARY_PATH



  10. Change the directory to the top of the spack repository:

    Code Block
    cd ../../../
    


  11. Source spack :

    Code Block
    source share/spack/setup-env.sh


  12. Check the spack version - should be 0.19.0 :

    Code Block
    spack --version


  13. Install Lapack :

    Code Block
    spack install netlib-lapack %intel@19.1.3.304 cflags="-fPIC" cxxflags="-fPIC" cppflags="-fPIC"


  14. Install Blas :

    Code Block
    spack install -j 1 netlib-xblas %intel@19.1.3.304 cflags="-fPIC" cxxflags="-fPIC" cppflags="-fPIC"


  15. Install Python with tkinter support:

    Code Block
    spack install python +tkinter %intel@19.1.3.304 cflags="-fPIC" cxxflags="-fPIC" cppflags="-fPIC"


  16. Install py-scipy :

    Code Block
    spack install --fail-fast py-scipy %intel@19.1.3.304 cflags="-fPIC" cxxflags="-fPIC" cppflags="-fPIC"


  17. Install py-matplotlib :

    Code Block
    spack install --fail-fast py-matplotlib backend=tkagg %intel@19.1.3.304 cflags="-fPIC" cxxflags="-fPIC" cppflags="-fPIC"


  18. Install py-pyyaml :

    Code Block
    spack install --fail-fast py-pyyaml %intel@19.1.3.304 cflags="-fPIC" cxxflags="-fPIC" cppflags="-fPIC"


  19. Install hdf5 :

    Code Block
    spack install --fail-fast hdf5@1.12.2 %intel@19.1.3.304 +threadsafe +cxx +fortran cflags="'-fPIC -pthread'" cxxflags="'-fPIC -pthread'" cppflags="'-fPIC -pthread'"


  20. Install boost :

    Code Block
    spack install --fail-fast boost %intel@19.1.3.304 +python +numpy cflags="'-fPIC -pthread'" cxxflags="'-fPIC -pthread'" cppflags="'-fPIC -pthread'"


  21. Install blitz :

    Code Block
    spack install --fail-fast blitz@1.0.1 %intel@19.1.3.304 cflags="'-fPIC -pthread'" cxxflags="'-fPIC -pthread'" cppflags="'-fPIC -pthread'"


  22. Install mdsplus :

    Code Block
    spack install --fail-fast mdsplus %intel@19.1.3.304 cflags="-fPIC" cxxflags="-fPIC" cppflags="-fPIC"


  23. Download Saxon :
    - it's required by IMAS, but Spack is missing proper recipe

    Code Block
    $: mkdir -p libs-intel/saxon
    $: cd libs-intel/saxon
    $: wget https://sourceforge.net/projects/saxon/files/Saxon-HE/9.9/SaxonHE9-9-1-5J.zip/download
    $: unzip download

    Create two softlinks:

    Code Block
    $: ln -s saxon9-test.jar saxon9he-test.jar
    $: ln -s saxon9-xqj.jar saxon9he-xqj.jar

    And set the saxon files available:

    Code Block
    chmod -R 777 .


  24. Prepare Saxon module:

    Code Block
    $: cd ../../
    $: mkdir -p modules-intel/saxon
    $: vim modules-intel/saxon/9.9

    And fill the created module with below content:

    Code Block
    #%Module
    ##
    ##      Modulefile for saxon
    ##	Maciej Smukowski 2022
    ##
    set fpath	[file dirname $ModulesCurrentModulefile]
    set VERSION	[file tail $ModulesCurrentModulefile]
    
    module-whatis "Enable the usage of saxon $VERSION.
    \tKeywords: math tool matlab"
    
    
    proc ModulesDisplay {} {
    }
    
    conflict saxon
    
    set SAXON_HOME /marconi_work/FUSIO_HLST/IMAS_software/libs-intel/saxon
    prepend-path SAXON_HOME /marconi_work/FUSIO_HLST/IMAS_software/libs-intel/saxon
    
    prepend-path    CLASSPATH $SAXON_HOME/saxon9he.jar
    prepend-path    CLASSPATH $SAXON_HOME/saxon9-test.jar
    prepend-path    CLASSPATH $SAXON_HOME/saxon9-xqj.jar
    prepend-path    CLASSPATH $SAXON_HOME/saxon9he-test.jar
    prepend-path    CLASSPATH $SAXON_HOME/saxon9he-xqj.jar


  25. Prepare spack-imasenv module prototype:

    Code Block
    $: mkdir -p modules/spack-imasenv/3.37.0/intel
    $: vim modules/spack-imasenv/3.37.0/intel/19.1.3.304

    And fill the created module with below content:

    Code Block
    #%Module
    ##
    ##      Modulefile for imasenv
    ##  Maciej Smukowski 2022
    ##
    
    module-whatis "One IMASENV module to rule them all"
    
    
    proc ModulesDisplay {} {
    }
    
    conflict imasenv
    
    # Add spack modules to MODULEPATH
    module use /marconi_work/FUSIO_HLST/IMAS_software/modules-gcc
    module use /marconi_work/FUSIO_HLST/IMAS_software/modules-intel
    
    module load gnu/7.3.0
    module load intel/pe-xe-2020--binary
    module load intelmpi/2020--binary
    module load cmake/3.25.0/gcc/7.3.0/sha-a4xv7cs
    module load pkgconf/1.8.0/intel/19.1.3.304/sha-fbevp5q
    module load netlib-lapack/3.10.1/intel/19.1.3.304/sha-g4e3xak
    module load netlib-xblas/1.0.248/intel/19.1.3.304/sha-zp4t7zq
    module load python/3.10.8/intel/19.1.3.304/sha-ufy2r2o
    module load py-pip/22.2.2/intel/19.1.3.304/sha-ksiszmp
    module load py-setuptools/59.4.0/intel/19.1.3.304/sha-p6m2okz
    module load py-wheel/0.37.1/intel/19.1.3.304/sha-h5qnby4
    module load py-cython/0.29.32/intel/19.1.3.304/sha-ekt45in
    module load py-pyyaml/6.0/intel/19.1.3.304/sha-e7pj6rd
    module load py-numpy/1.22.4/intel/19.1.3.304/sha-vtkr2zd
    module load py-scipy/1.8.1/intel/19.1.3.304/sha-j7sstl3
    module load py-matplotlib/3.6.2/intel/19.1.3.304/sha-wbwigpl
    module load hdf5/1.12.2/intel/19.1.3.304/sha-lpavud5
    module load openjdk/11.0.17_8/intel/19.1.3.304/sha-nwh5yaq
    module load git
    module load blitz/1.0.1/intel/19.1.3.304/sha-gpct7uz
    module load boost/1.80.0/intel/19.1.3.304/sha-6erl3nf
    module load mdsplus/stable_release-7-96-17/intel/19.1.3.304/sha-jiasz6w
    module load libxml2/2.10.1/intel/19.1.3.304/sha-3te5l7z

    DISCLAIMER!: If you're doing your spack installation from scratch be cautious about module names. The pattern is "sha-{hash}" , where hash is generated during installation, therefore your hashes will be different than mine.

  26. Load spack-imasenv module:

    Code Block
    $: module use /marconi_work/FUSIO_HLST/IMAS_software/modules
    $: module load spack-imasenv/3.37.0/intel/19.1.3.304


  27. Load Saxon module:

    Code Block
    module load saxon/9.9


  28. Clone IMAS Installer :

    Code Block
    git clone ssh://git@git.iter.org/imas/installer.git imas-installer-intel

    for convenience, let's loosen the read and write permissions for all files:

    Code Block
    chmod -R 777 .

    The top directory should look somewhat like this:

    Code Block
    drwxrwxrwx   6 interactive  4096 Dec  7 14:00 cache-gcc
    drwxrwxrwx   34 interactive  4096 Dec Nov10 16 13:4745 cache-intel
    drwxrwxrwx  10 7 interactive  4096 Dec  8 1215:1942 imas-installer-gcc
    drwxrwxrwx   7 interactive  4096 Dec 11 22:43 imas-installer-intel
    drwxrwxrwx 132135 interactive 32768 Dec 10 8 1116:5028 libs-gcc
    drwxrwxrwx 120118 interactive 32768 NovDec 1611 1322:5629 libs-intel
    drwxrwxrwx   3 interactive  4096 Dec  8 11:45 modules
    drwxrwxrwx 130132 interactive 32768 Dec 10 8 1216:1928 modules-gcc
    drwxrwxrwx 120124 interactive 32768 NovDec 1611 1322:4830 modules-intel
    drwxrwxrwx   39 interactive  4096 Dec Nov 167 1323:4744 spack
    drwxrwxrwx-gcc
    drwxr-xr-x   9 interactive  4096 Dec 10 7 2316:4438 spack-gccintel
    drwxrwxrwx   3 interactive  4096 Dec  7 14:31 stage-gcc
    drwxrwxrwx   3 interactive  4096 Dec Nov10 16 13:4344 stage-intel


  29. Create IMAS configuration script:

    Code Block
    vim imas-installer-intel/3.37.0_4.11.0.sh

    and fill it with below content:

    Code Block
    export TAG_DD=3.37.0
    
    export TAG_AL=4.11.0
    # make sure these branches exist
    
    export VER_DD=$TAG_DD
    export VER_AL=$TAG_AL
    export IMAS_VERSION=$TAG_DD
    export UAL_VERSION=$TAG_AL
    export MODULE_FULL_VERSION=$VER_DD/AL/$VER_AL
    
    
    export IMAS_HOME=/marconi_work/FUSIO_HLST/IMAS_software/libs-intel/IMAS
    
    export IMAS_UDA=fat
    export IMAS_HDC=no
    
    export IMAS_CPP=yes
    
    export IMAS_FORTRAN=yes
    export IMAS_G95=no
    export IMAS_PGI=no
    export IMAS_IFORT=yes
    export IMAS_GFORTRAN=no
    export IMAS_NAGFOR=no
    
    export IMAS_JAVA=yes
    
    export IMAS_MATLAB=no
    export IMAS_PYTHON=yes
    export IMAS_PYTHON2=no
    export IMAS_PYTHON3=yes
    
    
    # After Installation Environment
    eval `./tools/imasdb.in test`
    
    export UAL=$(realpath ./src/$IMAS_VERSION/ual/$UAL_VERSION)
    export MY_INSTALL=$IMAS_HOME/core/IMAS/${VER_DD}/AL/${VER_AL}
    export IMAS_INSTALL_DIR=$MY_INSTALL
    export PYTHONPATH=$MY_INSTALL/python/lib/:$PYTHONPATH
    export CLASSPATH=$UAL/javainterface/build/:$CLASSPATH
    export IMAS_PREFIX=$MY_INSTALL/
    export ids_path="$MDSPLUS_TREE_BASE_0;$MY_INSTALL/models/mdsplus/;$ids_path"
    export LD_LIBRARY_PATH=$MY_INSTALL/lib:$LD_LIBRARY_PATH
    export TOKAMAKNAME=test
    export DATAVERSION=3

    Note that there are at least 3 places that should be customized:

    1. export TAG_DD=<desired_data_dictionary_tag>
    2. export TAG_AL=<desired_access_layer_tag>
    3. export IMAS_HOME=<your_IMAS_HOME_path>

  30. Go inside imas-installer-intel directory:

    Code Block
    cd imas-installer-intel


  31. Source IMAS configuration script:

    Code Block
    source 3.37.0_4.11.0.sh


  32. Download build files:

    Code Block
    make cache


  33. Check if everything is set-up correctly:

    Code Block
    make help


  34. Build and install IMAS :

    Code Block
    make install


  35. Leave the imas-installer-intel directory:

    Code Block
    cd ..


  36. Extend spack-imasenv modulefile:

    Code Block
    vim modules/spack-imasenv/3.37.0/intel/19.1.3.304


    1. Add path to IMAS module:

      Code Block
      module use /marconi_work/FUSIO_HLST/IMAS_software/libs-intel/IMAS/etc/modulefiles


    2. Add loading of the IMAS module:

      Code Block
      module load IMAS/3.37.0/AL/4.11.0


    3. Final spack-imasenv module:

      Code Block
      #%Module
      ##
      ##      Modulefile for imasenv
      ##	Maciej Smukowski 2022
      ##
      
      module-whatis "One IMASENV module to rule them all"
      
      
      proc ModulesDisplay {} {
      }
      
      conflict imasenv
      
      # Add spack modules to MODULEPATH
      module use /marconi_work/FUSIO_HLST/IMAS_software/modules-intel
      module use /marconi_work/FUSIO_HLST/IMAS_software/libs-intel/IMAS/etc/modulefiles
      
      module load gnu/7.3.0
      module load cmake/3.25.0/gcc/7.3.0/sha-a4xv7cs
      module load pkgconf/1.8.0/gcc/7.3.0/sha-haasdgy
      module load netlib-lapack/3.10.1/gcc/7.3.0/sha-qyarwjw
      module load netlib-xblas/1.0.248/gcc/7.3.0/sha-7hrl4sf
      module load python/3.10.8/gcc/7.3.0/sha-ns7dn4v
      module load py-pip/22.2.2/gcc/7.3.0/sha-a3eh27l
      module load py-setuptools/59.4.0/gcc/7.3.0/sha-6ufe5bh
      module load py-wheel/0.37.1/gcc/7.3.0/sha-lw533jd
      module load py-cython/0.29.32/gcc/7.3.0/sha-ucdjw62
      module load py-pyyaml/6.0/gcc/7.3.0/sha-s7dm72x
      module load py-numpy/1.23.4/gcc/7.3.0/sha-c5ljmas
      module load py-scipy/1.8.1/gcc/7.3.0/sha-c5puafq
      module load py-matplotlib/3.6.2/gcc/7.3.0/sha-2sxscln
      module load hdf5/1.12.2/gcc/7.3.0/sha-hxkrksx
      module load openjdk/11.0.17_8/gcc/7.3.0/sha-impa6zh
      module load git
      module load blitz/1.0.1/gcc/7.3.0/sha-5jpnc3r
      module load boost/1.80.0/gcc/7.3.0/sha-nwvpbv4
      module load mdsplus/stable_release-7-96-17/gcc/7.3.0/sha-zwraez5
      module load libxml2/2.10.3/gcc/7.3.0/sha-p5tucjm
      
      module load IMAS/3.37.0/AL/4.11.0


...