Installing SMITER ================= .. .. highlight:: bash SMITER is a GUI *application* based on the SALOME platform with custom modules for fieldline tracing and power deposition, synthetic diagnostic, etc. To access the SMITER source code repository it is technically necessary to have an ITER account and to have the necessary access control permissions. Both can be provided by sending a brief justifying email to mailto:Simon.Pinches@iter.org . Once the appropriate technical provisions have been made, it will be possible for the developer to log in to the web-based graphical frontend to the ITER IM software repositories to view the source code here: https://git.iter.org. Note that in addition to logging on to access the ITER intranet (if not on the IO LAN), it may also be necessary to authenticate to the Git front-end, particularly to browse restricted repositories. To download copies of repositories with restricted access and to gain write-access to any repository it is necessary to authenticate from the CLI. This is most conveniently done by uploading your public SSH key to the ITER Git server. The relevant link can be found under :menuselection:`Manage Account` in the top right-hand corner of the web front-end or accessed directly here: https://git.iter.org/plugins/servlet/ssh/account/keys. You will need to upload your public SSH key from each system you wish to access the ITER Git repositories from. Sources of custom modules are located under the ``SMITER/``, ``ELMER``, ``RSECT`` and ``SMITER_GUI`` directories. The rest of the build is prepared under the ``BUILD/``, ``SOURCES`` and ``INSTALL`` directories. Precompiled documentation is available as external data and is readily available and prepared for reading with:: make pdf In the same way large studies, geometry, benchmarks, test deck and validation cases are versioned through GIT and fetched:: make -C study or issuing ``make`` under any ``study`` subdirectory that has :file:`Makefile`. See appimage/README.rst for prebuilt SMITER images intended for use on standalone Linux machines and SLURM clusters. Quick build instructions from source code:: # https://git-scm.com/book/en/v2/Getting-Started-First-Time-Git-Setup git config --global color.ui auto git config --global --add alias.lol 'log --graph --decorate --abbrev-commit --all --pretty=format:"%C(auto)%h%d %C(blue)%an %C(red)%GG %C(reset)%s"' git clone ssh://git@git.iter.org/bnd/smiter.git cd smiter git checkout develop make ./smiter SMITER engine can be compiled separately with gfortran and intel. CMake is used for configuration:: cd SOURCES/smardda_lib mkdir build; cd build; cmake .. -DCMAKE_INSTALL_PREFIX=/smardda/lib/install/path make -j4 make install For smardda-pfc you have to provide the location of smardda-lib installation:: cd SOURCES/smardda_pfc mkdir build; cd build; cmake .. -DCMAKE_INSTALL_PREFIX=/smardda/pfc/install/path -DSMARDDALIB_DIR=/smardda/lib/install/path make -j4 make install Compiler can be specified with the ``FC`` environment variable. Intel and gfortran compilers are currently supported. For example, to use Intel:: FC=ifort cmake .. By default, if MPI is detected in the environment, then it will be used when building. This can be switched off by providing ``-DWITH_MPI=Off`` when calling CMake commands. No need to specify exactly the location of the MPI library, but it has to be present in the environment when running the binaries. Needless to say, both libraries needs to be compiled with the same toolchain. To activate debugging flags, pass ``-DCMAKE_BUILD_TYPE=Debug`` when calling CMake command. Documentation is built in smardda-pfc. A requirement is Doxygen and texlive studio. Documentation building can be turned off by passing ``-DWITH_DOCUMENTATION=Off`` to the CMake command for smardda-pfc. Building the SALOME framework and SMITER GUI application -------------------------------------------------------- The ``Makefile`` with:: make builds everything from sources that are downloaded from external data or git repositories . Actually it resolves to the following set of commands that can also be entered manually:: make -C ARCHIVES ./sat prepare smiter # sources are unpacked and fetched ./sat clean smiter --build --install # if changing version ./sat --batch compile smiter # all sources are compiled and installed ./sat launcher smiter # script for launching smiter is prepared Depending on hardware and/or software setup one can build SMITER GUI applications that differ in third-party prerequisites and module configurations/variants. It is advisable to try non-default ``smiter.pyconf`` in such cases. All SMITER applications are listed with:: ./sat config --list Please consult files in ``PROJECT/applications`` for details of individual applications. In cases when having problems with OpenGL one can try to build another application. Building different SMITER GUI applications with ``make`` is possible by "exporting" environment variable :envvar:`SMITER_APPLICATION` or providing it at every make command such as:: make SMITER_APPLICATION=smiter-9.9.0 However, it is more convenient to fix non-default application with:: echo "SMITER_APPLICATION ?= smiter-9.9.0" > application.mk and then this configuration will be used when variable is not set or provided at command line. If having problems with OpenBLAS compilation due to processor detection then one can specify :envvar:`TARGET` with:: env TARGET=GENERIC make or for example:: ./sat prepare smiter-9.9.0 -p openblas env TARGET=SKYLAKEX ./sat compile smiter -p openblas --clean_all Other targets can be found in :file:`SOURCES/openblas/TargetList.txt`. When changing applications it is recommended to do:: make distclean all To check which application will be used when building issue:: make query-SMITER_APPLICATION In case of compile problems on a new machine, where some tools are missing to build SALOME prerequisites (libxmu-dev, bison, flex, ...), one can observe failed ``./sat log smiter`` Some builds of prerequisites may be incomplete and can build OK but cause build failure in some dependent prerequisite later on due to missing system packages. Verify that 1. boost has 118+ files in lib/ installed 2. CAS has 224+ files in lib/ installed If some prerequisite fails during compilation then it is advisable to do clean build. For example if *metis* fails with:: Compilation of metis ......................... KO then one can observe failure with:: less LOGS/metis/script and when problem resolved try to compile once again just *metis* with:: ./sat prepare smiter-9.9.0 -p metis ./sat compile smiter-9.9.0 -p metis --clean_all If *OK* is given at end of the compile then we can continue with *make*. Developing and running SMITER ----------------------------- *Global* settings (editor, browser, log level) can be tuned with:: ./sat config --edit Prepare and compile SMITER with:: ./sat prepare smiter --products SMITER,SMITER_GUI ./sat compile smiter --clean_all --products SMITER,SMITER_GUI ./sat launcher smiter Error in SMITER module can be seen by the following command:: ./sat log smiter Click on the upper most command which failed and there you will see the debug messages of the build procedure. To run the SMITER application use the ``./sat run smiter`` To recompile just SMITER module use:: ./sat prepare smiter --products SMITER ./sat compile smiter --products SMITER --clean_install Adding SALOME (sub)modules from GIT repos ----------------------------------------- Sources for SALOME modules are checked out frome SALOME GIT repositories with a tag into SOURCES directory during the ``sat prepare smiter`` phase. Manually can be checked out with:: SRC=http://git.salome-platform.org/gitpub/ git submodule ${SRC}/addtools/configuration.git tools/configuration git submodule add ${SRC}/modules/kernel.git modules/kernel git submodule update --init --recursive Changing prerequisites ---------------------- If change of some prerequisite is needed then one needs to conform to salomeTools package naming convention used. This means that unpacked directory needs to have the same name as the archive and therefore some repacking is needed before it can be rebuild. In some occasions also new build_scripts are needed:: cd ARCHIVES tar xJf qt-everywhere-src-5.10.1.tar.xz mv qt-everywhere-src-5.10.1/ qt-5.10.1 tar czf qt-5.10.1.tar.gz qt-5.10.1 tar xvzf PyQt-5.10.1.tar.gz mv PyQt5_gpl-5.10.1 PyQt-5.10.1 tar cvzf PyQt-5.10.1.tar.gz PyQt-5.10.1 tar tvzf sip-4.19.1.tar.gz diff --git a/salome/smiter.pyconf b/salome/smiter.pyconf index d4590e7..76873af 100644 --- a/salome/smiter.pyconf +++ b/salome/smiter.pyconf @@ -51,10 +51,10 @@ APPLICATION : freetype : '2.4.11' matplotlib : '1.4.3' cppunit : '1.13.2' - qt : '5.6.1-1' - PyQt : '5.6' + qt : '5.10.1' + PyQt : '5.10.1' qwt : '6.1.2' - sip : '4.18' + sip : '4.19.8' omniORB : '4.1.6' omniORBpy : '3.6' boost : '1.58.0' sat prepare smiter --products qt,sip,PyQt sat compile smiter --products=qt,sip,PyQt --clean_all --with_children Publishing prerequisite archive ------------------------------- External data server servers large files under ARCHIVES that are fetched with simple ``make`` command. To publish on a designated server a script is included that copies to external data directory if one has sufficient permissions:: cd ARCHIVES make publish archive=VirtualGL-2.5.2.tar.gz ITER_HPC_LOGIN_USERNAME=kosl Variable ``ITER_HPC_LOGIN_USERNAME`` is not needed on the ITER cluster or when local username is the same. Secure copy is used to transfer the archive and password will be asked to start outside ITER. MD5 checksum file is added to git automatically. Do not forget to commit and push added checksum file! IMAS ---- IMAS is built from sources and can be used in Python included. For compiling imasual java compiler is required! As there is no imas.py wrapper the directory is symlinked at access-layer installation and one cat test directly in Python console >>> import imas For compiling imas, there are some packages required that may not be installed on at specific distribution. The packages required are: For Debian 9:: $ sudo apt-get install openjdk-8-jdk libreadline-dev xsltproc For Debian 10:: $ sudo apt-get install openjdk-11-jdk libreadline-dev xsltproc Be aware that since /bin/sh is called for running the compile scripts, for IMAS there will be an error if the default shell ``/bin/sh`` is linked to dash. The OpenJDK 11 version has a different directory structure, so a symbolic link has to be created.:: $ sudo ln -s /lib/jvm/java-11-openjdk-amd64 /lib/jvm/java-11-openjdk-amd64/jre Otherwise the configure script of MDSPLUS will fail. For CentOS 7:: $ sudo yum -y install java-1.8.0-openjdk-devel readline-devel xsltproc To change the storage of pulse files change the following :file:: ~/smiter/PROJECT/products/env_scripts/imasual.py And change the python variables:: # MDSPLUS_TREE_BASE path basepath = '/your/desired/path' # ids_path environment variable env.set('ids_path', '%s/0' % basepath) With this IDS can be saved to arbitrary location on the file system. Compiling with MPI ------------------ Smiter allows to run POWCAL in parallel with nearly linear scaling. To compile FORTRAN codes with MPI one needs to:: exec/decompile env F90=mpif90 exec/build and enable MPI run in SMITER GUI preferences. It is safe to run MPI compiled executables serialy without enabling MPI run. Compiling documentation ----------------------- HTML documentation is prepared during compilation of SMITER module automaticaly. For LaTeX documentation in PDF and writing its faster to compile documentation sources in build and launch environment. One can use:: make doc or prepare environment with environment variables scripts for loading in command line that are created:: ./sat environ smiter Then one can:: source env_launch.sh and prepare PDF or HTML documentation of the module:: cd SMITER/doc make html make latexpdf that are then build as ``html/index.html`` and ``latex/solps-gui.pdf``. Note that on the ITER cluster one needs to load the following modules to compile documentation:: module load Perl/5.20.3-goolf-1.5.16 # for latexmk to work module load texlive/2015 Catalog generator ----------------- SMITER component includes CORBA interface for calling by external programs, Python scripts and YACS schemas. Required generation of the :file:`module/SMITER/resources/SMITERCatalog.xml.in` can be achieved also by :guilabel:`Tools --> Catalog generator Tool` by selecting (Interface Data Language) :file:`IDL` file and writing :file:`xml.in` file with parameters as shown on the dialog. .. image:: catalog_generator.png Building on the ITER cluster ---------------------------- Different configurations are possible depending on IMAS git.iter.org access possibility and OpenGL graphics capabilities. To install a release use:: git checkout 1.6.2 ci_scripts/install_smiter The best is to use the most recent version as they read HDF studies from previous versions and provide new features and improvements. Furthermore, we can have MPI or serial versions of SMARDDA kernel. This depends on the FOTRAN compiler selected. If :envvar:`F90` has ``mpi`` in its name. For software rendering us the launchers that have the suffix :file:`_mesa` Older SMITER and SALOME applications version 8.5.x can also be built with recent MESA software rendering library that is useful when no hardware graphics support is available. The MESA launcher can be built with :: ./sat launcher ${SAPP} --use_mesa or simply with :: make use_mesa Building native SALOME GUI -------------------------- If native SALOME GUI is also required to be build for providing GUI without SMITER then one needs to issue the following commands after SMITER was built :: ./sat prepare SALOME-9.9.0 -p SALOME ./sat compile SALOME-9.9.0 -p SALOME --clean_all ./sat launcher SALOME-9.9.0 # --use_mesa ## for 8.5.x software rendering ./salome SMITER and SALOME GUI then coexists in the same installation directory. Therefore, SALOME versions must be the same. See :file:`smiter/salome/examples/modulefiles/iter/` for examples of TCL module files. Build log --------- For building SMITER GUI it is advisable to have several CPUs available as it takes several hours to compile everything from scratch. See ``smiter/salome/README.md`` for up to date instructions. Typical build log on CentOS 7 workstation with 20 cores is listed below .. literalinclude:: buildlog.txt :language: console Installation instructions for cluster admins -------------------------------------------- The follwing example works on ITER cluster running CentOS 7 and takes less than 5 hours to build:: ssh io-ls-titan.iter.org TAG=1.6.0 mkdir -p /work/imas/opt/SMITER cd /work/imas/opt/SMITER/ git clone ssh://git@git.iter.org/bnd/smiter.git $TAG cd $TAG git checkout develop time ci_scripts/build_titan mkdir -p /work/imas/etc/modulefiles/SMITER cp examples/modulefiles/iter/SMITER/* \ /work/imas/etc/modulefiles/SMITER/ mkdir -p /work/imas/etc/modulefiles/SALOME cp examples/modulefiles/iter/SALOME/* \ /work/imas/etc/modulefiles/SALOME/ Examine ``ci_scipts/`` directory for similar continous integration scipts or use instructions below to build. file:`ci_scripts/install_smiter` script that builds everything, installs and prepares modules for SALOME and SMITER. Installation is in separate directories and new versions of SMITER will reuse SALOME installation. The same goes if IMAS changes. Only new IMAS is installed and reused if no change in IMAS version. Just do:: cd ~/smiter/ && git pull TARGET_ROOT=/tmp/$USER MODULEFILE_DIR=/tmp/$USER/modules \ ci_scripts/install_smiter if you want to test the installation with:: module use /tmp/$USER/modules Then you can repeat installation with just:: ci_scripts/install_smiter that installs into default ``/work/imas/opt`` with modules in ``/work/imas/etc/modulefiles`` directory. Other variables are also settavbe therein. Environment variables affecting SMITER GUI ------------------------------------------ SMITER **does not require** environment variables to be set as all are included in auto-generated launchers scripts. However, administrators may preset some settings to users using module environments in order to correctly use system dependent builds for MPI processing and example studies. These environment variables are: .. envvar:: SMITER_DIR Point to the top directory where SMITER is installed or built. It is expected that subdirectory ``exec/`` contains all compiled codes to be run by the GUI and that there is ``doc/`` subdirectory with compiled reference manual that can be oppened at correct section when pressing :guilabel:`Help` button. If :envvar:`SMITER_DIR` is not set the it is expected that ``${HOME}/smiter/exec`` and ``${HOME}/smiter/doc`` contain compiled files. .. envvar:: SMITER_MPI_DEFAULT_COMMAND If set than this setting enforces and overrides default ``mpirun -np 4`` command when using MPI on local workstation only. When utilizing cluster batch submission commands then this submission needs to be interactive and not detached. For example on ITER cluster the SLURM submission and OpenMPI that was compiled with MPI2 library provided by :file:`slurm-utils` package can be set as:: env --unset=LD_PRELOAD srun -n 4 --mpi=pmi2 --tasks-per-node=2 --constraint=ib_qdr --kill-on-bad-exit to run on 4 processors specified to :command:`srun` that does not finish until the code submitted exits. Note that there is no :command:`mpirun` command needed when compiled with MPI2 library that determines run layout from the scheduler. Clearing ``LD_PRELOAD`` environment variable removes annoying VirtualGL "imposter" wrapping libraries message. Constraint to run on Infiniband (``ib_qdr``) can be removed when running on single node or having no such resource. Since communication between ``powcal`` processes is small SMITER runs well on clusters without Infiniband. When using PBS/Torque/Maui schedulers then interactive commands can be obtained with:: env --unset=LD_PRELOAD qsub -I -V -N smiter -l nodes=2:ppn=12 -x '/usr/mpich/bin/mpiexec -np 24 -machinefile %PBS_NODEFILE -wdir %PBS_O_WORKDIR %SMITER' QSUB switches ``-I -x`` are providing interactive batch command needed for the workflow of codes. The following variables are replaced at at submission: ``%SMITER`` Absolute path to SMITER code with arguments is replacing this variable. ``%JOBNAME`` Can be used instead of ``smiter`` following ``-N`` switch in above example. Characters ``%`` are replaced with ``$`` for ease of escaping in scripts, settings and module files. For example ``%PBS_NODEFILE`` is submitted as ``$PBS_NODEFILE`` at the command execution. .. envvar:: SMITER_MPI_SHELL_TYPE Index of the shell used when submitted. For cases when the submission command does not provide TTY (standard output and input) streams one of the shells are required for that. Usually the need for shell is required when print output from codes in :guilabel:`SMITER output` window is desired. The following shell indexes can be set: 0 :command:`bash -c ""` is used. Default. 1 :command:`tcsh -c ""` is used. 2 :command:`ksh -c ""` is used. .. envvar:: SMITER_STUDY_EXAMPLES_DIR If set then after SMITER module is activated the shortcut to study examples directory appears in :menuselection:`File-->Open` menu. Platform notes -------------- CentOS 7.x & 8.x ~~~~~~~~~~~~~~~~ SMARDDA is know to compile incorrectly with OpenMPI based on system-default gfortran/4.8.5 Same or similar named packages can be found for CentOS 8.x. The following packages are required on CentOS 7:: yum -y groupinstall 'Development Tools' yum -y install redhat-lsb-core yum -y install libXt-devel libXmu-devel mesa-libGL-devel mesa-libGLU-devel yum -y install libXi-devel zlib-devel bzip2-devel libpng-devel libxpm-devel yum -y install libXrender-devel freeglut-devel yum -y install libjpeg-turbo-devel # For Pillow yum -y install openssl-devel # required by Python yum -y install xcb-util-keysyms xcb-util-devel # required by VirtualGL yum -y install libxkbcommon-devel yum -y install openmpi3-devel # For SMARDDA yum -y install libtool # For OpenMPI yum -y install libxkbcommon-x11-devel libXpm-devel cmake # For IMAS yum -y install java-1.8.0-openjdk-devel readline-devel xsltproc # For UDA yum -y install postgresql-libs libmemcached-devel The SALOME module `salome_system` checks for above prerequsites at building stage. Before builing on a system for for the first time it is advisable to run:: sat config smiter --check_system For building :file:`smiter-gui.pdf` on CentOS 7 a separate texlive module is needed due to missing LaTeX styles (tabulary.sty, ...). If using spack then:: spack install texlive%gcc@4.8.5 scheme=full is recommended. For gl2ps texlive needs to be complete and for that:: yum -y install texlive-collection-latexrecommended yum -y install texlive-collection-latexextra yum -y install texlive-collection-fontsrecommended yum -y install texlive-collection-latexextra and:: rm -rf ${HOME}/.texlive2012 is needed if building gl2ps.pdf compiling fails. If fonts are not displayed one may need to explicitly export path to *dejavu* font directory with:: export QT_QPA_FONTDIR=/usr/share/fonts/dejavu SMITER v1.6 requires VirtualGL version 2.6 or higher to resolve crashing of SMESH module. Starting with SALOME 9.7.0 on CentOS 7 only platform, the package devtoolset-8 must be installed to enable an alternative compiler and the compilation command must be preceded by:: scl enable devtoolset-8 -- bash For permanent inclusion in `.bashrc` it is needed to add:: source scl_source enable devtoolset-8 Devtoolset 8 is required to provide OpenMP 4.0 capabilities required by ParaView 5.9.x. Installing devtoolset-8 to CentOS 7 can be done with:: sudo yum install centos-release-scl sudo yum install devtoolset-8-gcc devtoolset-8-gcc-c++ devtoolset-8-gcc-gfortran CentOS 8 and AlmaLinux 8 ~~~~~~~~~~~~~~~~~~~~~~~~ In addition to CentOS 7 prerequisites the following packages are necessary: yum -y install fontconfig-devel libtirpc-devel libicu-devel texlive-epstopdf Ubuntu 16.04 ~~~~~~~~~~~~ Required packages:: apt-get install gfortran automake apt-get install bison flex freeglut3-dev git glut3-dev libbz2-dev apt-get install libgl1-mesa-dev libglu-dev libglut3-dev libpng16-dev apt-get install libtool libxi-dev libxm-dev libxmu-dev libxrender-dev apt-get install libxt-dev mesa-common-dev texlive zlib1g-dev apt-get install libopenmpi-dev apt-get install libjpeg-dev apt-get install libxpm-dev # For UDA apt-get install libpg-dev libmemcached-dev postgresql-server-dev-all Ubuntu 19.04 ~~~~~~~~~~~~ Required packages:: apt-get install gfortran automake apt-get install bison flex freeglut3-dev git libbz2-dev apt-get install libgl1-mesa-dev libglu-dev libpng-dev apt-get install libtool libxi-dev libxm4 libxmu-dev libxrender-dev apt-get install libxt-dev mesa-common-dev texlive zlib1g-dev apt-get install libopenmpi-dev libmotif-dev libtbb-dev apt-get install libjpeg-dev apt-get install libegl1-mesa-dev libjpeg62-dev libts-dev apt-get install libcups2-dev libmysqlclient-dev libncurses5 apt-get install libxpm-dev # For UDA apt-get install libpng-dev libmemcached-dev postgresql-server-dev-all .. note:: Some errors might occur when compiling Qt due to a critical bug (see _). This is resolved by adding ``#include `` in :file:`socketcanbackend.cpp`. Ubuntu 18.04 ~~~~~~~~~~~~ Packages are the same as for Ubuntu 19.04. If getting in ParaView build:: ERROR: The OpenGL functionality tests failed! You might need to modify the include and library search paths by editing QMAKE_INCDIR_OPENGL[_ES2], QMAKE_LIBDIR_OPENGL[_ES2] and QMAKE_LIBS_OPENGL[_ES2] in the mkspec for your platform. ERROR on configure then add a line to :file:`INSTALL/qt/lib/cmake/Qt5/Qt5ModuleLocation.cmake`:: cmake_policy(set cmp0053 new) and to :file:`SOURCES/ParaView/CMakeList.txt`:: cmake_policy(set cmp0072 new) Debian 8.6 ~~~~~~~~~~ Required packages:: apt-get install build-essential module-assistant make gcc g++ gfortran git m-a prepare apt-get install bison flex freeglut3-dev libbz2-dev libglw1-mesa libmotif-dev apt-get install libgl1-mesa-dev libglu1-mesa-dev libpng12-dev libxi-dev apt-get install libtool libxmu-dev libxrender-dev libxt-dev mesa-common-dev apt-get install texlive latexmk zlib1g-dev libncurses5-dev doxygen automake apt-get install libopenmpi-dev curl apt-get install libjpeg-dev apt-get install openjdk-8-jdk libreadline-dev xsltproc # For UDA apt-get install postgresql-server-dev-all libmemcached-dev Debian 9 (stretch) ~~~~~~~~~~~~~~~~~~ Additionally to Debian 8.6, `net-tools` have to be installed:: apt-get install net-tools libssl1.0-dev Debian 10 (buster) ~~~~~~~~~~~~~~~~~~ Complete set of packages:: apt-get install build-essential module-assistant make gcc g++ gfortran git m-a prepare apt-get install bison flex freeglut3-dev libbz2-dev libglw1-mesa libmotif-dev apt-get install libpng-dev libgl1-mesa-dev libglu1-mesa-dev libxi-dev apt-get install libtool libxmu-dev libxrender-dev libxt-dev mesa-common-dev apt-get install texlive latexmk zlib1g-dev libncurses5-dev doxygen automake apt-get install libopenmpi-dev curl texlive-font-utils apt-get install net-tools libtbb-dev apt-get install libjpeg-dev # For OpenMPI apt-get install libtool # For IMAS apt-get install openjdk-11-jdk libreadline-dev xsltproc # Symbolic link of JRE directory sudo ln -s /lib/jvm/java-11-openjdk-amd64 /lib/jvm/java-11-openjdk-amd64/jre # For UDA apt-get install postgresql-server-dev-all libmemcached-dev libpg-dev Since libssl-dev on Debian 10 is too new, one needs to downgrade it by downloading from _ and replacing with:: apt-get remove libssl-dev dpkg -i libssl1.0.2_1.0.2r-1~deb9u1_amd64.deb dpkg -i libssl1.0-dev_1.0.2r-1~deb9u1_amd64.deb The header file :file:`local.h` must be linked as ``xlocale.h``, otherwise, the CAS module will not compile:: sudo ln -s /usr/include/locale.h /usr/include/xlocale.h ITER cluster ~~~~~~~~~~~~ ITER cluster with CentOS 7 required relinking of ``BUILD/ParaView`` to ``/tmp`` directory due to file locking problem on the BeeGFS filesystem. If experiencing build problems on other systems then one is advised to do:: module load GCC/6.4.0-2.28 and use :file:`ci_scripts/build_local` or build scripts in temporary directory as described above. Complete SMITER building on ``io-ls-titan.iter.org`` takes over 6 hours. MPI compilation of SMARDDA is available with the following commands:: module use /work/imas/etc/modulefiles module load iompi/2018a make smardda-mpi Module iompi/2018a provides pmi2 interface and Intel compiler that compiles SMARDDA compatible for sumbission on any (gen8, gen9, gen10) cluster partition! For running on SLURM one then needs to set *MPI Run command* in SMITER preferences:: env --unset=LD_PRELOAD srun -n 4 --mpi=pmi2 --tasks-per-node=2 --constraint=ib_qdr --kill-on-bad-exit For above to work OpenMPI needs to be compiled with PMI2 library! Environment ``LD_PRELOAD`` is cleared to remove VirtualGL imposter libraries preloads that polute log files when running batch without X11. ITER Cluster with CentOS 8 provides iompi/2020a and gompi/2020a toolchains that can be used for MPI compilation only if `libxml2` module is unloaded from the toolchain. See ci_scripts/SMITER-1.6.2-iompi2020a.eb for details. Microsoft Windows 10 64-bit ~~~~~~~~~~~~~~~~~~~~~~~~~~~ Windows version 1.4 of SMITER GUI is precompiled. It consists of native windows application and linux subsystem (WSL) for running SMITER kernel. The instructions of how to install is described under file:`windows/README.md`.