- Compiler: intel/15.0, open_mpi/1.10.0, libxc/3.0.0, fftw/3.3.4, scalapack
- tar for numpy scipy matplotlib
Download the python tarball, untar and cd into the root directory.
./configure --prefix="abs/path/to/build" --with-icc CC=icc CXX=icpc
make && make all/path/to/intel/python -m venv gpaw_intel
source ~/.virtualenv/gpaw/bin/activateNow we are working on a clean virtualenv with all packages to be installed
Create site.cfg to cope with compiler and library information
cd 'path/to/numpy'
cp site.cfg.example site.cfgUncomment and modify the section with openblas
[mkl]
library_dirs = /cluster/apps/intel/composer_xe_2015.0.090/composer_xe_2015.0.090/mkl/lib/intel64
include_dirs = /cluster/apps/intel/composer_xe_2015.0.090/composer_xe_2015.0.090/mkl/include
mkl_libs = mkl_rt
lapack_libs =
install numpy
python setup.py build --compile=intelem && python setupy.py install --compile=intelemcheck numpy configuration
python -c "import numpy; numpy.__config__.show()"Check if blas_mkl_info and lapack_mkl_info are correct.
More straightforward than numpy. The OpenBLAS environment can be automatically detected if numpy corrected compiled.
cd 'path/to/numpy'
python setup.py build --compiler=intelem
python setup.py installcheck numpy configuration
python -c "import scipy; scipy.__config__.show()"matplotlib ase
Follow the instructions on the website and specify the root path. MPI compiler is compulsory in some cases as the build system cannot detect the mpicc automatically
./configure --with-mpi CC="mpicc" FC="mpif90" --prefix="abs/path/to/build"
make && make installRequires nose and pytest
python -c "import numpy; numpy.test()"
python -c "import scipy; scipy.test()"
ase testDownload the newest version of GPAW, i.e. https://gitlab.com/gpaw/gpaw/-/archive/1.4.0/gpaw-1.4.0.zip
Modify the customize.py, enable the nessary parts
- Edit the openblas part
- Edit the scalapack part
- Edit the libvdwxc part
Most probably need to add the path to libpython3.xm.so into the LIBRARY_PATH (not LD_LIBRARY_PATH)
A sample configuration file looks like:
compiler = 'icc'
mpicompiler = 'mpicc'  # use None if you don't want to build a gpaw-python                                                      
mpilinker = 'mpicc'
# platform_id = ''                                                                                                              
scalapack = True                                                                     
if scalapack:
    libraries = ['mkl_intel_lp64' ,'mkl_sequential' ,'mkl_core',
                 'mkl_lapack95_lp64',
                 'mkl_scalapack_lp64', 'mkl_blacs_openmpi_lp64',
                 'pthread'   ]
    define_macros += [('GPAW_NO_UNDERSCORE_CBLACS', '1')]
    define_macros += [('GPAW_NO_UNDERSCORE_CSCALAPACK', '1')]
# - dynamic linking (requires rpath or setting LD_LIBRARY_PATH at runtime):                                                     
if 1:
    xc = '/cluster/apps/libxc/3.0.0/x86_64/intel_15.0.0/'
    include_dirs += [xc + 'include']
    library_dirs += [xc + 'lib']
    # You can use rpath to avoid changing LD_LIBRARY_PATH:                                                                      
    extra_link_args += ['-Wl,-rpath={xc}/lib'.format(xc=xc)]
    if 'xc' not in libraries:
        libraries.append('xc')
# libvdwxc:                                                                                                                     
if 1:
    libvdwxc = True
    path = '/cluster/home/ttian/.virtualenvs/gpaw_intel/dependency/libvdwxc'
    extra_link_args += ['-Wl,-rpath=%s/lib' % path]
    library_dirs += ['%s/lib' % path]
    include_dirs += ['%s/include' % path]
    libraries += ['vdwxc']Install with normal instructions:
python setup build && python setup install
If installation succeeded but some errors occur, use the method below to delete the files generated (pip uninstall incapable)
https://gist.github.com/lovaulonze/4e31d83091a9d9543c0cfd297a1ded07
Run the tests like on the website. Download the GPAW dataset first.
gpaw install-data 'path/to/gpaw/data'Currently I didn't succeed with the libvdwxc/openmpi under intel compilation, so ticked out the libvdwxc
Use the gcc version for libvdwxc only
If necessary, clean up the file ~/.gpaw/rc.py to remove obsolote dependencies, then perform the test:
gpaw info #test basic settings, only scalapack flag is no
gpaw test -j 8 #depends on the system
gpaw-python -m gpaw info #scalapack flag should also be yes
mpiexec -n 24 gpaw-python -m gpaw test #may need to submit to the job queuemkdir -p ~/modules/gpaw/
emacs -nw ~/modules/gpaw/gcc_5.2.0Then edit the contents in the "gcc_5.2.0" modulefile:
#%Module1.0#####################################################################
#
#STATUS
#stat:moddep:gcc/5.2.0 open_mpi/1.10.0 openblas/0.2.13_seq scalapack/2.0.2 fftw/3.3.4 libxc/3.0.0
#stat:modauto:
#END STATUS
proc ModulesHelp { } {
    global helpmsg
    puts stderr "\t$helpmsg\n"
}
set version gcc_5.2.0
set curmod  [module-info name]
set topdir  /cluster/home/ttian/.virtualenvs/gpaw/bin/
# check if requirements are met
set envguess  [exec /cluster/apps/scripts/guess_compiler.pl --path=compiler=__CC__\ open_mpi=__MPI__]
set need_cb   "gcc"
set need_cc   "5.2.0"
set need_ompi "1.10.0"
#   if { [string compare $envguess "compiler=${need_cb}_$need_cc open_mpi=$need_ompi"] != 0 } {
#     puts stderr "$curmod error: this module requires $need_cb/$need_cc and open_mpi/$need_ompi to be loaded."
#      puts stderr "hint: run 'module purge ; module load $need_cb/$need_cc open_mpi/$need_ompi $curmod' to resolve this problem."
#      break
#   }
if { [string compare $envguess "compiler=${need_cb}_$need_cc open_mpi=$need_ompi"] != 0 } {
        module load ${need_cb}/$need_cc
        module load open_mpi/$need_ompi
	module load openblas/0.2.13_seq
	module load fftw/3.3.4
	module load scalapack/2.0.2
	module load libxc/3.0.0
	module load python/3.6.0
}
# virtualenv
if { [module-info mode load] || [module-info mode switch2] } {
    puts stdout "source /cluster/home/ttian/.virtualenvs/gpaw/bin/activate;"
} elseif { [module-info mode remove] && ![module-info mode switch3] } {
    puts stdout "deactivate;"
}
# not reached on error
Finally add the following line in .bashrc or .bash_profile to enable local modules:
module use $HOME/modules