Use new openmp_flag and mpi attributes
This commit is contained in:
parent
e7ced54369
commit
e2e72b14b2
1 changed files with 23 additions and 16 deletions
|
@ -25,6 +25,7 @@
|
||||||
from spack import *
|
from spack import *
|
||||||
import spack
|
import spack
|
||||||
|
|
||||||
|
|
||||||
class Elk(Package):
|
class Elk(Package):
|
||||||
'''An all-electron full-potential linearised augmented-plane wave
|
'''An all-electron full-potential linearised augmented-plane wave
|
||||||
(FP-LAPW) code with many advanced features.'''
|
(FP-LAPW) code with many advanced features.'''
|
||||||
|
@ -58,34 +59,29 @@ def configure(self, spec):
|
||||||
# Dictionary of configuration options
|
# Dictionary of configuration options
|
||||||
config = {
|
config = {
|
||||||
'MAKE': 'make',
|
'MAKE': 'make',
|
||||||
'F90': join_path(spack.build_env_path, 'f90'),
|
'AR': 'ar'
|
||||||
'F77': join_path(spack.build_env_path, 'f77'),
|
|
||||||
'AR': 'ar',
|
|
||||||
'LIB_FFT': 'fftlib.a',
|
|
||||||
'SRC_MPI': 'mpi_stub.f90',
|
|
||||||
'SRC_OMP': 'omp_stub.f90',
|
|
||||||
'SRC_libxc': 'libxcifc_stub.f90',
|
|
||||||
'SRC_FFT': 'zfftifc.f90'
|
|
||||||
}
|
}
|
||||||
|
|
||||||
# Compiler-specific flags
|
# Compiler-specific flags
|
||||||
flags = ''
|
flags = ''
|
||||||
if self.compiler.name == 'intel':
|
if self.compiler.name == 'intel':
|
||||||
flags = '-O3 -ip -unroll -no-prec-div -openmp'
|
flags = '-O3 -ip -unroll -no-prec-div'
|
||||||
elif self.compiler.name == 'gcc':
|
elif self.compiler.name == 'gcc':
|
||||||
flags = '-O3 -ffast-math -funroll-loops -fopenmp'
|
flags = '-O3 -ffast-math -funroll-loops'
|
||||||
elif self.compiler.name == 'pgi':
|
elif self.compiler.name == 'pgi':
|
||||||
flags = '-O3 -mp -lpthread'
|
flags = '-O3 -lpthread'
|
||||||
elif self.compiler.name == 'g95':
|
elif self.compiler.name == 'g95':
|
||||||
flags = '-O3 -fno-second-underscore'
|
flags = '-O3 -fno-second-underscore'
|
||||||
elif self.compiler.name == 'nag':
|
elif self.compiler.name == 'nag':
|
||||||
flags = '-O4 -kind=byte -dusty -dcfuns'
|
flags = '-O4 -kind=byte -dusty -dcfuns'
|
||||||
elif self.compiler.name == 'xl':
|
elif self.compiler.name == 'xl':
|
||||||
flags = '-O3 -qsmp=omp'
|
flags = '-O3'
|
||||||
config['F90_OPTS'] = flags
|
config['F90_OPTS'] = flags
|
||||||
config['F77_OPTS'] = flags
|
config['F77_OPTS'] = flags
|
||||||
|
|
||||||
# BLAS/LAPACK support
|
# BLAS/LAPACK support
|
||||||
|
# Note: BLAS/LAPACK must be compiled with OpenMP support
|
||||||
|
# if the +openmp variant is chosen
|
||||||
blas = 'blas.a'
|
blas = 'blas.a'
|
||||||
lapack = 'lapack.a'
|
lapack = 'lapack.a'
|
||||||
if '+blas' in spec:
|
if '+blas' in spec:
|
||||||
|
@ -98,16 +94,25 @@ def configure(self, spec):
|
||||||
if '+fft' in spec:
|
if '+fft' in spec:
|
||||||
config['LIB_FFT'] = join_path(spec['fftw'].prefix.lib, 'libfftw3.so')
|
config['LIB_FFT'] = join_path(spec['fftw'].prefix.lib, 'libfftw3.so')
|
||||||
config['SRC_FFT'] = 'zfftifc_fftw.f90'
|
config['SRC_FFT'] = 'zfftifc_fftw.f90'
|
||||||
|
else:
|
||||||
|
config['LIB_FFT'] = 'fftlib.a'
|
||||||
|
config['SRC_FFT'] = 'zfftifc.f90'
|
||||||
|
|
||||||
# MPI support
|
# MPI support
|
||||||
if '+mpi' in spec:
|
if '+mpi' in spec:
|
||||||
config.pop('SRC_MPI')
|
config['F90'] = join_path(spec['mpi'].mpifc)
|
||||||
config['F90'] = join_path(spec['mpi'].prefix.bin, 'mpif90')
|
config['F77'] = join_path(spec['mpi'].mpif77)
|
||||||
config['F77'] = join_path(spec['mpi'].prefix.bin, 'mpif77')
|
else:
|
||||||
|
config['F90'] = join_path(spack.build_env_path, 'f90'),
|
||||||
|
config['F77'] = join_path(spack.build_env_path, 'f77'),
|
||||||
|
config['SRC_MPI'] = 'mpi_stub.f90'
|
||||||
|
|
||||||
# OpenMP support
|
# OpenMP support
|
||||||
if '+openmp' in spec:
|
if '+openmp' in spec:
|
||||||
config.pop('SRC_OMP')
|
config['F90_OPTS'] += ' ' + self.compiler.openmp_flag
|
||||||
|
config['F77_OPTS'] += ' ' + self.compiler.openmp_flag
|
||||||
|
else:
|
||||||
|
config['SRC_OMP'] = 'omp_stub.f90'
|
||||||
|
|
||||||
# Libxc support
|
# Libxc support
|
||||||
if '+libxc' in spec:
|
if '+libxc' in spec:
|
||||||
|
@ -120,6 +125,8 @@ def configure(self, spec):
|
||||||
'libxc.f90',
|
'libxc.f90',
|
||||||
'libxcifc.f90'
|
'libxcifc.f90'
|
||||||
])
|
])
|
||||||
|
else:
|
||||||
|
config['SRC_libxc'] = 'libxcifc_stub.f90'
|
||||||
|
|
||||||
# Write configuration options to include file
|
# Write configuration options to include file
|
||||||
with open('make.inc', 'w') as inc:
|
with open('make.inc', 'w') as inc:
|
||||||
|
|
Loading…
Reference in a new issue