Commit b2546dfe authored by Kurt Lust's avatar Kurt Lust
Browse files

Update of the GPAW documentation.

parent 8244f540
......@@ -129,17 +129,19 @@ Hence GPAW has the following requirements:
for the UEABS benchmarks. It is used by the medium and large cases and optional
for the small case.
* Python. GPAW 1.5.2 requires
Python 2.7 or 3.4-3.7, GPAW 19.8.1 requires 3.4-3.7 and GPAW 20.1.0 Python 3.5-3.8.
Python 2.7 or 3.4-3.7, GPAW 19.8.1 requires 3.4-3.7, GPAW 20.1.0 Python 3.5-3.8
and GPAW 20.10.0 Python 3.6-3.9.
* Mandatory Python packages:
* [NumPY](https://pypi.org/project/numpy/) 1.9 or later (for GPAW 1.5.2/19.8.1/20.1.0)
* [SciPy](https://pypi.org/project/scipy/) 0.14 or later (for GPAW 1.5.2/19.8.1/20.1.0)
* [NumPY](https://pypi.org/project/numpy/) 1.9 or later (for GPAW 1.5.2/19.8.1/20.1.0/20.10.0)
* [SciPy](https://pypi.org/project/scipy/) 0.14 or later (for GPAW 1.5.2/19.8.1/20.1.0/20.10.0)
* [FFTW](http://www.fftw.org) is highly recommended. As long as the optional libvdwxc
component is not used, the MKL FFTW wrappers can also be used. Recent versions of
GPAW also show good performance using just the NumPy-provided FFT routines provided
that NumPy has been built with a highly optimized FFT library.
* [LibXC](https://www.tddft.org/programs/libxc/) 2.X or newer for GPAW 1.5.2,
3.X or 4.X for GPAW 19.8.1 and 20.1.0. LibXC is a library
of exchange-correlation functions for density-functional theory
3.X or 4.X for GPAW 19.8.1, 20.1.0 and 20.10.0. LibXC is a library
of exchange-correlation functions for density-functional theory. None of the
versions currently mentions LibXC 5.X as officially supported.
* [ASE, Atomic Simulation Environment](https://wiki.fysik.dtu.dk/ase/), a Python package
from the same group that develops GPAW
* Check the release notes of GPAW as the releases of ASE and GPAW should match.
......@@ -198,7 +200,7 @@ may not offer optimal performance and the automatic detection of the libraries a
fails on some systems.
The UEABS repository contains additional instructions:
* [general instructions](build/build-cpu.md) - Under development
* [general instructions](build/build-cpu.md)
* [GPGPUs](build/build-cuda.md) - To check
Example [build scripts](build/examples/) are also available for some PRACE and non-PRACE
......
......@@ -38,9 +38,9 @@ Optional components of GPAW that are not used by the UEABS benchmarks:
of density functionals with van der Waals interactions for density functional theory.
This library does not work with the MKL FFTW wrappers as it needs the MPI version
of the FFTW libraries too.
* [ELPA](https://elpa.mpcdf.mpg.de/),
which should improve performance for large systems when GPAW is used in
[LCAO mode](https://wiki.fysik.dtu.dk/gpaw/documentation/lcao/lcao.html)
* [ELPA](https://elpa.mpcdf.mpg.de/),
which should improve performance for large systems when GPAW is used in
[LCAO mode](https://wiki.fysik.dtu.dk/gpaw/documentation/lcao/lcao.html)
### Python packages
......@@ -93,10 +93,14 @@ GPAW needs
* Python
* Libraries used during the installation of Python:
* ncurses 6.2
* libreadline 8.0
* libreadline 8.0, as it makes life easy when using the command line
interface of Python (and in case of an EasyBuild Python, because EasyBuild
requires it)
* libffi 3.3
* zlib 1.2.11
* OpenSSL 1.1.1g, but only because EasyBuild was used and requires it.
* OpenSSL 1.1.1g, but only when EasyBuild was used and requires it.
* SQLite 3.33.0, as one of the tests in some versions of GPAW requires it to
succeed.
* Python will of course pick up several other libraries that it might find on
the system. The benchmark installation was tested on a system with very few
development packages of libraries installed in the system image. Tcl/Tk
......@@ -116,14 +120,15 @@ GPAW that were tested:
| Python | NumPy | SciPy | ASE | GPAW |
|:-------|:-------|:------|:-------|:--------|
| 3.7.9 | 1.18.5 | 1.4.1 | 3.17.0 | 1.5.2 |
| 3.7.9 | 1.18.5 | 1.4.1 | 3.18.0 | 19.8.1 |
| 3.8.5 | 1.18.5 | 1.4.1 | 3.19.1 | 20.1.0 |
| 3.7.9 | 1.18.5 | 1.4.1 | 3.18.2 | 19.8.1 |
| 3.8.6 | 1.18.5 | 1.4.1 | 3.19.3 | 20.1.0 |
## Installing all prerequisites
We do not include the optimized mathematical libraries in the instructions (BLAS, LAPACK,
FFT library, ...). Also, the instructions below will need to be adapted to the specific
FFT library, ...) as these libraries should be standard on any optimized HPC system.
Also, the instructions below will need to be adapted to the specific
libraries that are being used.
Other prerequisites:
......@@ -139,6 +144,17 @@ Other prerequisites:
* Installing libxc requires GNU automake and GNU buildtool besides GNU make and a
C compiler. The build process is the usual GNU configure - make - make install
cycle, but the `configure` script still needs to be generated with autoreconf.
* Download libxc:
* The latest version of libxc can be downloaded from
[the libxc download page](https://www.tddft.org/programs/libxc/download/).
However, that version may not be officially supported by GPAW.
* It is also possible to download all recent versions of libxc from
[the libxc GitLab](https://gitlab.com/libxc/libxc)
* Select the tag corresponding to the version you want to download in the
branch/tag selection box.
* Then use the download button and select the desired file type.
* Dowload URLs look like `https://gitlab.com/libxc/libxc/-/archive/4.3.4/libxc-4.3.4.tar.bz2`.
* Untar the file in the build directory.
......@@ -158,6 +174,30 @@ performance-determining factor in the GPAW benchmark. Having a properly optimize
of NumPy, SciPy and GPAW itself proves much more important.
### Installing NumPy
* As NumPy relies on optimized libraries for its performance, one should carefully
select which NumPy package to download, or install NumPy from sources. How crucial
this is, depends on the version of GPAW and the options selected when building
GPAW.
### Installing SciPy
### Installing ase
* Just as for any user-installed Python package, make sure you have created a
directory to install Python packages to and have added it to the front of PYTHONPATH.
* ase is [available on PyPi](https://pypi.org/project/ase/). It is also possible
to [see a list of previous releases](https://pypi.org/project/ase/#history).
* The easiest way to install ase is using `pip` which will automatically download.
the requested version.
## Configuring and installing GPAW
### GPAW 1.5.2
......@@ -183,7 +223,7 @@ of NumPy, SciPy and GPAW itself proves much more important.
### GPAW 30.1.0
### GPAW 20.1.0 and 20.10.0
* GPAW 20.1.0 uses `setuptools`. Customization of the installation process is possible
through the `siteconfig.py` file.
......@@ -191,5 +231,67 @@ of NumPy, SciPy and GPAW itself proves much more important.
that the settings are now in `siteconfrig.py` rather than `customize.py`.
### All versions
* GPAW also needs a number of so-called "Atomic PAW Setup" files. The latest files
can be found on the [GPAW website, Atomic PAW Setups page](https://wiki.fysik.dtu.dk/gpaw/setups/setups.html).
For the testing we used []`gpaw-setups-0.9.20000.tar.gz`](https://wiki.fysik.dtu.dk/gpaw-files/gpaw-setups-0.9.20000.tar.gz)
for all versions of GPAW. The easiest way to install these files is to simpy untar
the file and set the environment variable GPAW_SETUP_PATH to point to that directory.
In the examples provided we use the `share/gpaw-setups` subdirectory of the install
directory for this purpose.
* Up to and including version 20.1.0, GPAW does comes with a test suite which can be
used after installation.
* Running the sequential tests:
gpaw test
Help is available through
gpaw test -h
* Running those tests, but using multiple cores (e.g., 4):
gpaw test -j 4
* Running the parallel benchmarks on a SLURM cluster will depend on the version of GPAW.
* Versions that build the parallel interpreter (19.8.1 and older):
srun -n 4 gpaw-python -m gpaw test
* Versions with the parallel so library using the regular Python interpreter (20.1.0 and above):
srun -n 4 python -m gpaw test
* Depending on the Python installation, some tests may fail with error messages that point
to a package in the Standard Python Library that is not present. Some of these errors have no
influence on the benchmarks as that part of the code is not triggered by the benchmark.
* The full test suite is missing in GPAW 20.10.0. There is a brief sequential test
that can be run with
gpaw test
and a parallel one that can be run with
gpaw -P 4 test
* Multiple versions of GPAW likely contain a bug in `c/bmgs/fd.c` (around line 44
in GPAW 1.5.2). The code enforces vectorization on OpenMP 4 compilers by using
`#pragma omp simd`. However, it turns out that the data is not always correctly
aligned, so if the reaction of the compiler to `#pragma omp simd` is to fully vectorize
and use load/store instructions for aligned data, crashes may occur. It did happen
during the benchmark development when compiling with the Intel C compiler. The
solution for that compiler is to add `-qno-openmp-simd` to the compiler flags.
## Problems observed during testing
\ No newline at end of file
* On AMD Epyc systems, there seems to be a bug in the Intel MKL FFT libraries/FFTW
wrappers in the 2020 compilers. Downgrading to the MKL libraries of the 2018
compilers or using the FFTW libraries solves the problem.
This has been observed not only in GPAW, but also in some other DFT packages.
* The GPAW test code in versions 1.5.2 till 20.1.0 detects that matplotlib is not installed
and will skip this test. We did however observe a failed test when Python could not find
the SQLite package as the Python standard library sqlite3 package is used.
#!/bin/bash
#
# Installation script for GPAW 1.5.2:
# * Using the existing IntelPython3 module on the system which has an optimized
# NumPy and SciPy included.
# * Using the matching version of ase, 3.17.0
# * Compiling with the Intel compilers
#
# The FFT library is discovered at runtime. With the settings used in this script
# this should be MKL FFT, but it is possible to change this at runtime to either
# MKL, FFTW or the built-in NumPy FFT routines, see the installation instructions
# (link below).
#
# The original installation instructions for GPAW can be found at
# https://gitlab.com/gpaw/gpaw/-/blob/1.5.2/doc/install.rst
#
packageID='1.5.2-CentOS8Python3-icc'
install_root=$VSC_SCRATCH/UEABS
systemID=CalcUA-vaughan-rome
download_dir=$install_root/Downloads
install_dir=$install_root/$systemID/Packages/GPAW-manual/$packageID
modules_dir=$install_root/$systemID/Modules/GPAW-manual
build_dir="/dev/shm/$USER/GPAW-manual/$packageID"
libxc_version='4.3.4'
cython_version='0.29.21'
#numpy_version='1.18.5'
numpy_version='1.19.2'
#scipy_version='1.4.2'
scipy_version='1.5.3'
ase_version='3.17.0'
GPAW_version='1.5.2'
GPAWsetups_version='0.9.20000' # Check version on https://wiki.fysik.dtu.dk/gpaw/setups/setups.html
py_maj_min='3.6'
################################################################################
#
# Prepare the system
#
#
# Load modules
#
module purge
module load calcua/2020a
module load intel/2020a
module load buildtools/2020a
module load FFTW/3.3.8-intel-2020a
#
# Create the directories and make sure they are clean if that matters
#
/usr/bin/mkdir -p $download_dir
/usr/bin/mkdir -p $install_dir
/usr/bin/rm -rf $install_dir
/usr/bin/mkdir -p $install_dir
/usr/bin/mkdir -p $modules_dir
/usr/bin/mkdir -p $build_dir
/usr/bin/rm -rf $build_dir
/usr/bin/mkdir -p $build_dir
################################################################################
#
# Download components
#
echo -e "\nDownloading files...\n"
cd $download_dir
# https://gitlab.com/libxc/libxc/-/archive/4.3.4/libxc-4.3.4.tar.bz2
libxc_file="libxc-$libxc_version.tar.bz2"
libxc_url="https://gitlab.com/libxc/libxc/-/archive/$libxc_version"
[[ -f $libxc_file ]] || wget "$libxc_url/$libxc_file"
# We do not download Cython but simply install it using pip.
# NumPy needs customizations, so we need to download and unpack the sources
# https://files.pythonhosted.org/packages/bf/e8/15aea783ea72e2d4e51e3ec365e8dc4a1a32c9e5eb3a6d695b0d58e67cdd/numpy-1.19.2.zip
numpy_file="numpy-$numpy_version.zip"
numpy_url="https://files.pythonhosted.org/packages/bf/e8/15aea783ea72e2d4e51e3ec365e8dc4a1a32c9e5eb3a6d695b0d58e67cdd"
[[ -f $numpy_file ]] || wget "$numpy_url/$numpy_file"
# We do not download ase in this script. As it is pure python and doesn't need
# customization, we will install it using pip right away.
## https://files.pythonhosted.org/packages/d9/08/35969da23b641d3dfca46ba7559f651fcfdca81dbbc00b9058c934e75769/ase-3.17.0.tar.gz
#ase_file="ase-$ase_version.tar.gz"
#ase_url="https://files.pythonhosted.org/packages/d9/08/35969da23b641d3dfca46ba7559f651fcfdca81dbbc00b9058c934e75769"
#[[ -f $ase_file ]] || wget "$ase_url/$ase_file"
# GPAW needs customization, so we need to download and unpack the sources.
# https://files.pythonhosted.org/packages/49/a1/cf54c399f5489cfdda1e8da02cae8bfb4b39d7cb7a895ce86608fcd0e1c9/gpaw-1.5.2.tar.gz
GPAW_file="gpaw-$GPAW_version.tar.gz"
GPAW_url="https://files.pythonhosted.org/packages/49/a1/cf54c399f5489cfdda1e8da02cae8bfb4b39d7cb7a895ce86608fcd0e1c9"
[[ -f $GPAW_file ]] || wget "$GPAW_url/$GPAW_file"
# Download GPAW-setup, a number of setup files for GPAW.
# https://wiki.fysik.dtu.dk/gpaw-files/gpaw-setups-0.9.20000.tar.gz
GPAWsetups_file="gpaw-setups-$GPAWsetups_version.tar.gz"
GPAWsetups_url="https://wiki.fysik.dtu.dk/gpaw-files"
[[ -f $GPAWsetups_file ]] || wget "$GPAWsetups_url/$GPAWsetups_file"
################################################################################
#
# Install libxc
#
echo -e "\nInstalling libxc...\n"
cd $build_dir
# Uncompress
tar -xf $download_dir/$libxc_file
cd libxc-$libxc_version
# Configure
autoreconf -i
export CC=icc
#export CFLAGS="-O2 -march=core-avx2 -mtune=core-avx2 -fPIC"
export CFLAGS="-O2 -march=core-avx2 -mtune=core-avx2 -ftz -fp-speculation=safe -fp-model source -fPIC"
#export CFLAGS="-O0 -march=core-avx2 -mtune=core-avx2 -ftz -fp-speculation=safe -fp-model source -fPIC"
./configure --prefix="$install_dir" \
--disable-static --enable-shared --disable-fortran
# Build
make -j 16
# Install
make -j 16 install
# Add bin, lib and include to the PATH variables
PATH=$install_dir/bin:$PATH
LIBRARY_PATH=$install_dir/lib:$LIBRARY_PATH
LD_LIBRARY_PATH=$install_dir/lib:$LD_LIBRARY_PATH
CPATH=$install_dir/include:$CPATH
################################################################################
#
# Install Cython
#
echo -e "\nInstalling Cython...\n"
/usr/bin/mkdir -p "$install_dir/lib/python$py_maj_min/site-packages"
cd $install_dir
/usr/bin/ln -s lib lib64
PYTHONPATH="$install_dir/lib/python$py_maj_min/site-packages"
pip3 install --prefix=$install_dir --no-deps cython==$cython_version
################################################################################
#
# Install NumPy
#
echo -e "\nInstalling NumPy...\n"
cd $build_dir
# Uncompress
unzip $download_dir/$numpy_file
cd numpy-$numpy_version
cat >site.cfg <<EOF
[DEFAULT]
library_dirs = $EBROOTFFTW/lib:$MKLROOT/lib/intel64_lin
include_dirs = $EBROOTFFTW/include:$MKLROOT/include
search_static_first=True
[mkl]
lapack_libs = -Wl:-Bstatic,-Wl:--start-group,mkl_intel_lp64,mkl_intel_thread,mkl_core,-Wl:--end-group,-Wl:-Bdynamic,iomp5
mkl_libs = -Wl:-Bstatic,-Wl:--start-group,mkl_intel_lp64,mkl_intel_thread,mkl_core,-Wl:--end-group,-Wl:-Bdynamic,iomp5
[fftw]
libraries = -Wl:-Bstatic,-Wl:--start-group,fftw3,-Wl:--end-group,-Wl:-Bdynamic
EOF
export CC=icc
export FC=ifort
export CFLAGS="-O2 -march=core-avx2 -mtune=core-avx2 -ftz -fp-speculation=safe -fp-model source -fPIC"
export FFLAGS="-O2 -march=core-avx2 -mtune=core-avx2 -ftz -fp-speculation=safe -fp-model source -fPIC"
python3 setup.py build -j 32 install --prefix $install_dir
# Misses python-dev/python-devel...
################################################################################
#
# Install SciPy
#
echo -e "\nInstalling SciPy...\n"
################################################################################
#
# Install ase
#
echo -e "\nInstalling ase...\n"
pip install --prefix=$install_dir --no-deps ase==$ase_version
################################################################################
#
# Install GPAW-setups
#
echo -e "\nInstalling gpaw-setups...\n"
mkdir -p $install_dir/share/gpaw-setups
cd $install_dir/share/gpaw-setups
tar -xf $download_dir/$GPAWsetups_file --strip-components=1
################################################################################
#
# Install GPAW
#
echo -e "\nInstalling GPAW...\n"
cd $build_dir
# Uncompress
tar -xf $download_dir/$GPAW_file
cd gpaw-$GPAW_version
# Make the customize.py script
mv customize.py customize.py.orig
cat >customize.py <<EOF
print( 'GPAW build INFO: Starting execution of the customization script' )
print( 'GPAW build INFO: Variables at the start of the customization script' )
print( 'GPAW build INFO: libraries = ', libraries )
print( 'GPAW build INFO: mpi_libaries = ', mpi_libraries )
print( 'GPAW build INFO: library_dirs = ', library_dirs )
print( 'GPAW build INFO: mpi_libary_dirs = ', mpi_library_dirs )
print( 'GPAW build INFO: runtime_library_dirs = ', runtime_library_dirs )
print( 'GPAW build INFO: mpi_runtime_libary_dirs = ', mpi_runtime_library_dirs )
print( 'GPAW build INFO: include_dirs = ', include_dirs )
print( 'GPAW build INFO: mpi_include_dirs = ', mpi_include_dirs )
print( 'GPAW build INFO: compiler = ', compiler )
print( 'GPAW build INFO: mpicompiler = ', mpicompiler )
print( 'GPAW build INFO: mpilinker = ', mpilinker )
print( 'GPAW build INFO: extra_compile_args = ', extra_compile_args )
print( 'GPAW build INFO: extra_link_args = ', extra_link_args )
print( 'GPAW build INFO: define_macros = ', define_macros )
print( 'GPAW build INFO: mpi_define_macros = ', mpi_define_macros )
print( 'GPAW build INFO: undef_macros = ', undef_macros )
print( 'GPAW build INFO: scalapack = ', scalapack )
print( 'GPAW build INFO: libvdwxc = ', libvdwxc )
print( 'GPAW build INFO: elpa = ', elpa )
# Reset the lists of libraries as often the wrong BLAS library is picked up.
libraries = []
mpi_libraries = []
# LibXC. Re-add the library (removed by resetting libraries).
# There is no need to add the library directory as we do set library_dirs to the
# content of LIBRARY_PATH further down.
# There should be no need to add the include directory as it is in CPATH which is
# set when we install gpaw.
#include_dirs.append('$install_dir/include')
libraries.append('xc')
# libvdwxc
libvdwxc = False
# ELPA
elpa = False
# ScaLAPACK
scalapack = True
mpi_libraries += ['mkl_scalapack_lp64', 'mkl_blacs_intelmpi_lp64']
mpi_define_macros += [('GPAW_NO_UNDERSCORE_CBLACS', '1')]
mpi_define_macros += [('GPAW_NO_UNDERSCORE_CSCALAPACK', '1')]
# Add EasyBuild LAPACK/BLAS libs
# This should also enable MKL FFTW according to the documentation of GPAW 1.5.2
libraries += ['mkl_intel_lp64', 'mkl_sequential', 'mkl_core']
# Add other EasyBuild library directories.
library_dirs = os.environ['LIBRARY_PATH'].split(':')
# Set the compilers
compiler = os.environ['CC']
mpicompiler = os.environ['MPICC']
mpilinker = os.environ['MPICC']
# We need extra_compile_args to have the right compiler options when re-compiling
# files for gpaw-python. It does imply double compiler options for the other
# compiles though.
extra_compile_args = os.environ['CFLAGS'].split(' ')
print( 'GPAW build INFO: Variables at the end of the customization script' )
print( 'GPAW build INFO: libraries = ', libraries )
print( 'GPAW build INFO: mpi_libaries = ', mpi_libraries )
print( 'GPAW build INFO: library_dirs = ', library_dirs )
print( 'GPAW build INFO: mpi_libary_dirs = ', mpi_library_dirs )
print( 'GPAW build INFO: runtime_library_dirs = ', runtime_library_dirs )
print( 'GPAW build INFO: mpi_runtime_libary_dirs = ', mpi_runtime_library_dirs )
print( 'GPAW build INFO: include_dirs = ', include_dirs )
print( 'GPAW build INFO: mpi_include_dirs = ', mpi_include_dirs )
print( 'GPAW build INFO: compiler = ', compiler )
print( 'GPAW build INFO: mpicompiler = ', mpicompiler )
print( 'GPAW build INFO: mpilinker = ', mpilinker )
print( 'GPAW build INFO: extra_compile_args = ', extra_compile_args )
print( 'GPAW build INFO: extra_link_args = ', extra_link_args )
print( 'GPAW build INFO: define_macros = ', define_macros )
print( 'GPAW build INFO: mpi_define_macros = ', mpi_define_macros )
print( 'GPAW build INFO: undef_macros = ', undef_macros )
print( 'GPAW build INFO: scalapack = ', scalapack )
print( 'GPAW build INFO: libvdwxc = ', libvdwxc )
print( 'GPAW build INFO: elpa = ', elpa )
print( 'GPAW build INFO: Ending execution of the customization script' )
EOF
# Now install gpaw
export CC=icc
export MPICC=mpiicc
export CFLAGS="-O2 -march=core-avx2 -mtune=core-avx2 -qno-openmp-simd"
export CFLAGS="-O2 -march=core-avx2 -mtune=core-avx2 -ftz -fp-speculation=safe -fp-model source -qno-openmp-simd"
export CFLAGS="-O0 -march=core-avx2 -mtune=core-avx2 -ftz -fp-speculation=safe -fp-model source -qno-openmp-simd"
python setup.py install --prefix="$install_dir"
# Easybuild:
# export PYTHONUSERSITE=1
# python setup.py build
# python setup.py install --prefix="$install_dir"
################################################################################
#
# Finish the install
#
echo -e "\nCleaning up and making the LUA-module GPAW-manual/$packageID...\n"
# Go to a different directory before cleaning up the build directory
cd $modules_dir
#/bin/rm -rf $build_dir
# Create a module file
cat >$packageID.lua <<EOF
help([==[
Description
===========
GPAW 1.5.2 for the UEABS benchmark.
Configuration:
* IntelPython3/2020a module, also for NumPy and SciPy
* Parallel GPAW $GPAW_version with ase $ase_version
* FFT library selected at runtime. The default with the path
as set through this module should be MKL but it can be changed
by setting GPAW_FFTWSO as indicated in the install instructions at
https://gitlab.com/gpaw/gpaw/-/blob/$GPAW_version/doc/install.rst
* libxc and GPAW compiled with the Intel compilers
More information
================
- Homepage: http://wiki.fysik.dtu.dk/gpaw
- Documentation:
- GPAW web-based documentation: https://wiki.fysik.dtu.dk/gpaw/
- Version information at https://gitlab.com/gpaw/gpaw/-/blob/$GPAW_version/doc/
- ASE web-based documentation: https://wiki.fysik.dtu.dk/ase/
Included extensions
===================
ase-$ase_version, gpaw-$GPAW_version
]==])
whatis([==[Description: GPAW $GPAW_version with ase $ase_version: UEABS benchmark configuration.]==])
conflict("GPAW")
conflict("GPAW-manual")
if not ( isloaded("calcua/2020a") ) then
load("calcua/2020a")
end
if not ( isloaded("intel/2020a") ) then
load("intel/2020a")
end
if not ( isloaded("IntelPython3/2020a") ) then
load("IntelPython3/2020a")
end