Skip to content
Snippets Groups Projects
Commit 07d4c6cf authored by Gregory L. Lee's avatar Gregory L. Lee Committed by GitHub
Browse files

Merge pull request #1205 from glennpj/psxe

Setup environment for Intel Parallel Studio
parents e389afed ead1b93f
No related branches found
No related tags found
No related merge requests found
......@@ -471,6 +471,7 @@ class Dotkit(EnvModule):
path = join_path(spack.share_path, 'dotkit')
environment_modifications_formats = {
PrependPath: 'dk_alter {name} {value}\n',
RemovePath: 'dk_unalter {name} {value}\n',
SetEnv: 'dk_setenv {name} {value}\n'
}
......
......@@ -42,15 +42,27 @@ class IntelParallelStudio(IntelInstaller):
variant('daal',
default=True, description="Install the Intel DAAL libraries")
variant('ipp', default=True, description="Install the Intel IPP libraries")
variant('tools', default=True, description="""Install the Intel Advisor,\
VTune Amplifier, and Inspector tools""")
variant('tools', default=True, description="Install the Intel Advisor, "
"VTune Amplifier, and Inspector tools")
provides('mpi', when='@cluster:+mpi')
provides('mkl', when='+mkl')
provides('daal', when='+daal')
provides('ipp', when='+ipp')
def check_variants(self, spec):
error_message = '\t{variant} can not be turned off if "+all" is set'
if self.spec.satisfies('+all'):
errors = [error_message.format(variant=x)
for x in ('mpi', 'mkl', 'daal', 'ipp', 'tools')
if ('~' + x) in self.spec]
if errors:
errors = ['incompatible variants given'] + errors
raise InstallError('\n'.join(errors))
def install(self, spec, prefix):
self.check_variants(spec)
base_components = "ALL" # when in doubt, install everything
mpi_components = ""
......@@ -58,9 +70,7 @@ def install(self, spec, prefix):
daal_components = ""
ipp_components = ""
if spec.satisfies('+all'):
base_components = "ALL"
else:
if not spec.satisfies('+all'):
all_components = get_all_components()
regex = '(comp|openmp|intel-tbb|icc|ifort|psxe|icsxe-pset)'
base_components = \
......@@ -77,10 +87,10 @@ def install(self, spec, prefix):
regex = '(gdb|vtune|inspector|advisor)'
tool_components = \
filter_pick(all_components, re.compile(regex).search)
components = base_components
components = base_components
if not spec.satisfies('+all'):
if spec.satisfies('+mpi') and 'cluster' in str(spec.version):
if spec.satisfies('+mpi'):
components += mpi_components
if spec.satisfies('+mkl'):
components += mkl_components
......@@ -92,7 +102,10 @@ def install(self, spec, prefix):
spec.satisfies('@professional')):
components += tool_components
self.intel_components = ';'.join(components)
if spec.satisfies('+all'):
self.intel_components = 'ALL'
else:
self.intel_components = ';'.join(components)
IntelInstaller.install(self, spec, prefix)
absbindir = os.path.dirname(os.path.realpath(os.path.join(
......@@ -116,8 +129,11 @@ def install(self, spec, prefix):
if (spec.satisfies('+all') or spec.satisfies('+mpi')) and \
spec.satisfies('@cluster'):
os.symlink(self.global_license_file, os.path.join(
self.prefix, "itac_latest", "license.lic"))
for ifile in os.listdir(os.path.join(self.prefix, "itac")):
if os.path.isdir(os.path.join(self.prefix, "itac", ifile)):
os.symlink(self.global_license_file,
os.path.join(self.prefix, "itac", ifile,
"license.lic"))
if spec.satisfies('~newdtags'):
wrappers = ["mpif77", "mpif77", "mpif90", "mpif90",
"mpigcc", "mpigcc", "mpigxx", "mpigxx",
......@@ -142,3 +158,110 @@ def install(self, spec, prefix):
os.symlink(os.path.join(self.prefix.man, "common", "man1"),
os.path.join(self.prefix.man, "man1"))
def setup_environment(self, spack_env, run_env):
# TODO: Determine variables needed for the professional edition.
major_ver = self.version[1]
# Remove paths that were guessed but are incorrect for this package.
run_env.remove_path('LIBRARY_PATH',
join_path(self.prefix, 'lib'))
run_env.remove_path('LD_LIBRARY_PATH',
join_path(self.prefix, 'lib'))
run_env.remove_path('CPATH',
join_path(self.prefix, 'include'))
# Add the default set of variables
run_env.prepend_path('LIBRARY_PATH',
join_path(self.prefix, 'lib', 'intel64'))
run_env.prepend_path('LD_LIBRARY_PATH',
join_path(self.prefix, 'lib', 'intel64'))
run_env.prepend_path('LIBRARY_PATH',
join_path(self.prefix, 'tbb', 'lib',
'intel64', 'gcc4.4'))
run_env.prepend_path('LD_LIBRARY_PATH',
join_path(self.prefix, 'tbb', 'lib',
'intel64', 'gcc4.4'))
run_env.prepend_path('CPATH',
join_path(self.prefix, 'tbb', 'include'))
run_env.prepend_path('MIC_LIBRARY_PATH',
join_path(self.prefix, 'lib', 'mic'))
run_env.prepend_path('MIC_LD_LIBRARY_PATH',
join_path(self.prefix, 'lib', 'mic'))
run_env.prepend_path('MIC_LIBRARY_PATH',
join_path(self.prefix, 'tbb', 'lib', 'mic'))
run_env.prepend_path('MIC_LD_LIBRARY_PATH',
join_path(self.prefix, 'tbb', 'lib', 'mic'))
if self.spec.satisfies('+all'):
run_env.prepend_path('LD_LIBRARY_PATH',
join_path(self.prefix,
'debugger_{0}'.format(major_ver),
'libipt', 'intel64', 'lib'))
run_env.set('GDBSERVER_MIC',
join_path(self.prefix,
'debugger_{0}'.format(major_ver), 'gdb',
'targets', 'mic', 'bin', 'gdbserver'))
run_env.set('GDB_CROSS',
join_path(self.prefix,
'debugger_{0}'.format(major_ver),
'gdb', 'intel64_mic', 'bin', 'gdb-mic'))
run_env.set('MPM_LAUNCHER',
join_path(self.prefix,
'debugger_{0}'.format(major_ver), 'mpm',
'mic',
'bin', 'start_mpm.sh'))
run_env.set('INTEL_PYTHONHOME',
join_path(self.prefix,
'debugger_{0}'.format(major_ver), 'python',
'intel64'))
if (self.spec.satisfies('+all') or self.spec.satisfies('+mpi')):
# Only I_MPI_ROOT is set here because setting the various PATH
# variables will potentially be in conflict with other MPI
# environment modules. The I_MPI_ROOT environment variable can be
# used as a base to set necessary PATH variables for using Intel
# MPI. It is also possible to set the variables in the modules.yaml
# file if Intel MPI is the dominant, or only, MPI on a system.
run_env.set('I_MPI_ROOT', join_path(self.prefix, 'impi'))
if self.spec.satisfies('+all') or self.spec.satisfies('+mkl'):
run_env.prepend_path('LD_LIBRARY_PATH',
join_path(self.prefix, 'mkl', 'lib',
'intel64'))
run_env.prepend_path('LIBRARY_PATH',
join_path(self.prefix, 'mkl', 'lib',
'intel64'))
run_env.prepend_path('CPATH',
join_path(self.prefix, 'mkl', 'include'))
run_env.prepend_path('MIC_LD_LIBRARY_PATH',
join_path(self.prefix, 'mkl', 'lib', 'mic'))
run_env.set('MKLROOT', join_path(self.prefix, 'mkl'))
if self.spec.satisfies('+all') or self.spec.satisfies('+daal'):
run_env.prepend_path('LD_LIBRARY_PATH',
join_path(self.prefix, 'daal', 'lib',
'intel64_lin'))
run_env.prepend_path('LIBRARY_PATH',
join_path(self.prefix, 'daal', 'lib',
'intel64_lin'))
run_env.prepend_path('CPATH',
join_path(self.prefix, 'daal', 'include'))
run_env.prepend_path('CLASSPATH',
join_path(self.prefix, 'daal', 'lib',
'daal.jar'))
run_env.set('DAALROOT', join_path(self.prefix, 'daal'))
if self.spec.satisfies('+all') or self.spec.satisfies('+ipp'):
run_env.prepend_path('LD_LIBRARY_PATH',
join_path(self.prefix, 'ipp', 'lib',
'intel64'))
run_env.prepend_path('LIBRARY_PATH',
join_path(self.prefix, 'ipp', 'lib',
'intel64'))
run_env.prepend_path('CPATH',
join_path(self.prefix, 'ipp', 'include'))
run_env.prepend_path('MIC_LD_LIBRARY_PATH',
join_path(self.prefix, 'ipp', 'lib', 'mic'))
run_env.set('IPPROOT', join_path(self.prefix, 'ipp'))
......@@ -49,13 +49,6 @@ def global_license_file(self):
def install(self, spec, prefix):
# Remove the installation DB, otherwise it will try to install into
# location of other Intel builds
if os.path.exists(os.path.join(os.environ["HOME"], "intel",
"intel_sdp_products.db")):
os.remove(os.path.join(os.environ["HOME"], "intel",
"intel_sdp_products.db"))
if not hasattr(self, "intel_prefix"):
self.intel_prefix = self.prefix
......@@ -66,12 +59,14 @@ def install(self, spec, prefix):
PSET_MODE=install
CONTINUE_WITH_INSTALLDIR_OVERWRITE=yes
PSET_INSTALL_DIR=%s
NONRPM_DB_DIR=%s
ACTIVATION_LICENSE_FILE=%s
ACTIVATION_TYPE=license_file
PHONEHOME_SEND_USAGE_DATA=no
CONTINUE_WITH_OPTIONAL_ERROR=yes
COMPONENTS=%s
""" % (self.intel_prefix, self.global_license_file, self.intel_components))
""" % (self.intel_prefix, self.intel_prefix, self.global_license_file,
self.intel_components))
install_script = Executable("./install.sh")
install_script('--silent', silent_config_filename)
......@@ -111,8 +106,8 @@ def install(self, spec, prefix):
self.prefix.lib, "intel64", "libimf.a")))[0]
# symlink or copy?
os.symlink(self.global_license_file, os.path.join(absbindir,
"license.lic"))
os.symlink(self.global_license_file,
os.path.join(absbindir, "license.lic"))
if spec.satisfies('+rpath'):
for compiler_command in ["icc", "icpc", "ifort"]:
......@@ -123,3 +118,35 @@ def install(self, spec, prefix):
os.symlink(os.path.join(self.prefix.man, "common", "man1"),
os.path.join(self.prefix.man, "man1"))
def setup_environment(self, spack_env, run_env):
# Remove paths that were guessed but are incorrect for this package.
run_env.remove_path('LIBRARY_PATH',
join_path(self.prefix, 'lib'))
run_env.remove_path('LD_LIBRARY_PATH',
join_path(self.prefix, 'lib'))
run_env.remove_path('CPATH',
join_path(self.prefix, 'include'))
# Add the default set of variables
run_env.prepend_path('LIBRARY_PATH',
join_path(self.prefix, 'lib', 'intel64'))
run_env.prepend_path('LD_LIBRARY_PATH',
join_path(self.prefix, 'lib', 'intel64'))
run_env.prepend_path('LIBRARY_PATH',
join_path(self.prefix, 'tbb', 'lib',
'intel64', 'gcc4.4'))
run_env.prepend_path('LD_LIBRARY_PATH',
join_path(self.prefix, 'tbb', 'lib',
'intel64', 'gcc4.4'))
run_env.prepend_path('CPATH',
join_path(self.prefix, 'tbb', 'include'))
run_env.prepend_path('MIC_LIBRARY_PATH',
join_path(self.prefix, 'lib', 'mic'))
run_env.prepend_path('MIC_LD_LIBRARY_PATH',
join_path(self.prefix, 'lib', 'mic'))
run_env.prepend_path('MIC_LIBRARY_PATH',
join_path(self.prefix, 'tbb', 'lib', 'mic'))
run_env.prepend_path('MIC_LD_LIBRARY_PATH',
join_path(self.prefix, 'tbb', 'lib', 'mic'))
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment