Setup environment for Intel Parallel Studio
Set up the environment for the Intel compilers and tools. This commit does the following: - Unset variables that were incorrect from the auto guess prefix inspections. - Add a RemovePath environment_modifications_formats for dotkit. - Set the module environment variables appropriate for the different variants. - Change the component logic so that the '+all' variant works. It was getting split by letter and leaving COMPONENTS empty. - Added a variant checking function. - Added NONRPM_DB_DIR to the silent.cfg so that the product database goes to the installation directory. - With the product database in prefix the code to remove the product database file from the home directory is no longer needed and was removed. - Reformat the 'tools' variant description. There are probably more variables needed for the '+tools' for the 'professional' product version but I do not have access to that.
This commit is contained in:
parent
e389afedaa
commit
16f67b5bb1
3 changed files with 169 additions and 15 deletions
|
@ -471,6 +471,7 @@ class Dotkit(EnvModule):
|
||||||
path = join_path(spack.share_path, 'dotkit')
|
path = join_path(spack.share_path, 'dotkit')
|
||||||
environment_modifications_formats = {
|
environment_modifications_formats = {
|
||||||
PrependPath: 'dk_alter {name} {value}\n',
|
PrependPath: 'dk_alter {name} {value}\n',
|
||||||
|
RemovePath: 'dk_unalter {name} {value}\n',
|
||||||
SetEnv: 'dk_setenv {name} {value}\n'
|
SetEnv: 'dk_setenv {name} {value}\n'
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -42,15 +42,26 @@ class IntelParallelStudio(IntelInstaller):
|
||||||
variant('daal',
|
variant('daal',
|
||||||
default=True, description="Install the Intel DAAL libraries")
|
default=True, description="Install the Intel DAAL libraries")
|
||||||
variant('ipp', default=True, description="Install the Intel IPP libraries")
|
variant('ipp', default=True, description="Install the Intel IPP libraries")
|
||||||
variant('tools', default=True, description="""Install the Intel Advisor,\
|
variant('tools', default=True, description="Install the Intel Advisor, "
|
||||||
VTune Amplifier, and Inspector tools""")
|
"VTune Amplifier, and Inspector tools")
|
||||||
|
|
||||||
provides('mpi', when='@cluster:+mpi')
|
provides('mpi', when='@cluster:+mpi')
|
||||||
provides('mkl', when='+mkl')
|
provides('mkl', when='+mkl')
|
||||||
provides('daal', when='+daal')
|
provides('daal', when='+daal')
|
||||||
provides('ipp', when='+ipp')
|
provides('ipp', when='+ipp')
|
||||||
|
|
||||||
|
def check_variants(self, spec):
|
||||||
|
error_message = '\t{variant} can not be turned off if "+all" is set'
|
||||||
|
|
||||||
|
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):
|
def install(self, spec, prefix):
|
||||||
|
self.check_variants(spec)
|
||||||
|
|
||||||
base_components = "ALL" # when in doubt, install everything
|
base_components = "ALL" # when in doubt, install everything
|
||||||
mpi_components = ""
|
mpi_components = ""
|
||||||
|
@ -58,9 +69,7 @@ def install(self, spec, prefix):
|
||||||
daal_components = ""
|
daal_components = ""
|
||||||
ipp_components = ""
|
ipp_components = ""
|
||||||
|
|
||||||
if spec.satisfies('+all'):
|
if not spec.satisfies('+all'):
|
||||||
base_components = "ALL"
|
|
||||||
else:
|
|
||||||
all_components = get_all_components()
|
all_components = get_all_components()
|
||||||
regex = '(comp|openmp|intel-tbb|icc|ifort|psxe|icsxe-pset)'
|
regex = '(comp|openmp|intel-tbb|icc|ifort|psxe|icsxe-pset)'
|
||||||
base_components = \
|
base_components = \
|
||||||
|
@ -77,8 +86,8 @@ def install(self, spec, prefix):
|
||||||
regex = '(gdb|vtune|inspector|advisor)'
|
regex = '(gdb|vtune|inspector|advisor)'
|
||||||
tool_components = \
|
tool_components = \
|
||||||
filter_pick(all_components, re.compile(regex).search)
|
filter_pick(all_components, re.compile(regex).search)
|
||||||
|
|
||||||
components = base_components
|
components = base_components
|
||||||
|
|
||||||
if not spec.satisfies('+all'):
|
if not spec.satisfies('+all'):
|
||||||
if spec.satisfies('+mpi') and 'cluster' in str(spec.version):
|
if spec.satisfies('+mpi') and 'cluster' in str(spec.version):
|
||||||
components += mpi_components
|
components += mpi_components
|
||||||
|
@ -92,6 +101,9 @@ def install(self, spec, prefix):
|
||||||
spec.satisfies('@professional')):
|
spec.satisfies('@professional')):
|
||||||
components += tool_components
|
components += tool_components
|
||||||
|
|
||||||
|
if spec.satisfies('+all'):
|
||||||
|
self.intel_components = 'ALL'
|
||||||
|
else:
|
||||||
self.intel_components = ';'.join(components)
|
self.intel_components = ';'.join(components)
|
||||||
IntelInstaller.install(self, spec, prefix)
|
IntelInstaller.install(self, spec, prefix)
|
||||||
|
|
||||||
|
@ -142,3 +154,116 @@ def install(self, spec, prefix):
|
||||||
|
|
||||||
os.symlink(os.path.join(self.prefix.man, "common", "man1"),
|
os.symlink(os.path.join(self.prefix.man, "common", "man1"),
|
||||||
os.path.join(self.prefix.man, "man1"))
|
os.path.join(self.prefix.man, "man1"))
|
||||||
|
|
||||||
|
def setup_environment(self, spack_env, run_env):
|
||||||
|
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('PATH',
|
||||||
|
join_path(self.prefix,
|
||||||
|
'debugger_{0}'.format(major_ver),
|
||||||
|
'gdb', 'intel64_mic', 'bin'))
|
||||||
|
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')) and \
|
||||||
|
self.spec.satisfies('@cluster'):
|
||||||
|
run_env.prepend_path('PATH',
|
||||||
|
join_path(self.prefix, 'mpi', 'intel64', 'bin'))
|
||||||
|
run_env.prepend_path('LD_LIBRARY_PATH',
|
||||||
|
join_path(self.prefix, 'mpi', 'intel64', 'lib'))
|
||||||
|
run_env.prepend_path('LIBRARY_PATH',
|
||||||
|
join_path(self.prefix, 'mpi', 'intel64', 'lib'))
|
||||||
|
run_env.prepend_path('LD_LIBRARY_PATH',
|
||||||
|
join_path(self.prefix, 'mpi', 'mic', 'lib'))
|
||||||
|
run_env.prepend_path('MIC_LIBRARY_PATH',
|
||||||
|
join_path(self.prefix, 'mpi', 'mic', 'lib'))
|
||||||
|
run_env.prepend_path('MIC_LD_LIBRARY_PATH',
|
||||||
|
join_path(self.prefix, 'mpi', 'mic', 'lib'))
|
||||||
|
run_env.set('I_MPI_ROOT', join_path(self.prefix, 'mpi'))
|
||||||
|
|
||||||
|
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):
|
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"):
|
if not hasattr(self, "intel_prefix"):
|
||||||
self.intel_prefix = self.prefix
|
self.intel_prefix = self.prefix
|
||||||
|
|
||||||
|
@ -66,12 +59,14 @@ def install(self, spec, prefix):
|
||||||
PSET_MODE=install
|
PSET_MODE=install
|
||||||
CONTINUE_WITH_INSTALLDIR_OVERWRITE=yes
|
CONTINUE_WITH_INSTALLDIR_OVERWRITE=yes
|
||||||
PSET_INSTALL_DIR=%s
|
PSET_INSTALL_DIR=%s
|
||||||
|
NONRPM_DB_DIR=%s
|
||||||
ACTIVATION_LICENSE_FILE=%s
|
ACTIVATION_LICENSE_FILE=%s
|
||||||
ACTIVATION_TYPE=license_file
|
ACTIVATION_TYPE=license_file
|
||||||
PHONEHOME_SEND_USAGE_DATA=no
|
PHONEHOME_SEND_USAGE_DATA=no
|
||||||
CONTINUE_WITH_OPTIONAL_ERROR=yes
|
CONTINUE_WITH_OPTIONAL_ERROR=yes
|
||||||
COMPONENTS=%s
|
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 = Executable("./install.sh")
|
||||||
install_script('--silent', silent_config_filename)
|
install_script('--silent', silent_config_filename)
|
||||||
|
@ -123,3 +118,36 @@ def install(self, spec, prefix):
|
||||||
|
|
||||||
os.symlink(os.path.join(self.prefix.man, "common", "man1"),
|
os.symlink(os.path.join(self.prefix.man, "common", "man1"),
|
||||||
os.path.join(self.prefix.man, "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'))
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue