Skip to content

Commit

Permalink
Merge pull request #4570 from bartoldeman/imkl-latest-symlink
Browse files Browse the repository at this point in the history
Resolve internal imkl>=2021 version subdir via "latest" symlink
  • Loading branch information
boegel committed Jul 3, 2024
2 parents c782aed + a4bf9d2 commit 68f7963
Show file tree
Hide file tree
Showing 2 changed files with 8 additions and 2 deletions.
3 changes: 3 additions & 0 deletions easybuild/toolchains/linalg/intelmkl.py
Original file line number Diff line number Diff line change
Expand Up @@ -142,6 +142,7 @@ def _set_blas_variables(self):
self.variables.nappend_el('CFLAGS', 'DMKL_ILP64')

# exact paths/linking statements depend on imkl version
root = self.get_software_root(self.BLAS_MODULE_NAME)[0]
found_version = self.get_software_version(self.BLAS_MODULE_NAME)[0]
ver = LooseVersion(found_version)
if ver < LooseVersion('10.3'):
Expand All @@ -156,6 +157,8 @@ def _set_blas_variables(self):
found_version)
else:
if ver >= LooseVersion('2021'):
if os.path.islink(os.path.join(root, 'mkl', 'latest')):
found_version = os.readlink(os.path.join(root, 'mkl', 'latest'))
basedir = os.path.join('mkl', found_version)
else:
basedir = 'mkl'
Expand Down
7 changes: 5 additions & 2 deletions test/framework/toolchain.py
Original file line number Diff line number Diff line change
Expand Up @@ -1201,7 +1201,7 @@ def test_fft_env_vars_intel(self):
self.assertEqual(tc.get_variable('LIBFFT'), libfft)
self.assertEqual(tc.get_variable('LIBFFT_MT'), libfft_mt)

fft_lib_dir = os.path.join(modules.get_software_root('imkl'), 'mkl/2021.4.0/lib/intel64')
fft_lib_dir = os.path.join(modules.get_software_root('imkl'), 'mkl/2021.4/lib/intel64')
self.assertEqual(tc.get_variable('FFT_LIB_DIR'), fft_lib_dir)

tc = self.get_toolchain('intel', version='2021b')
Expand Down Expand Up @@ -1321,8 +1321,11 @@ def setup_sandbox_for_intel_fftw(self, moddir, imklver='2018.1.163'):
])
write_file(imkl_fftw_module_path, imkl_fftw_mod_txt)

subdir = 'mkl/%s/lib/intel64' % imklver
# put "latest" symbolic link to short version, used in newer MKL
imklshortver = '.'.join(imklver.split('.')[:2])
subdir = 'mkl/%s/lib/intel64' % imklshortver
os.makedirs(os.path.join(imkl_dir, subdir))
os.symlink(imklshortver, os.path.join(imkl_dir, 'mkl', 'latest'))
for fftlib in mkl_libs:
write_file(os.path.join(imkl_dir, subdir, 'lib%s.a' % fftlib), 'foo')
subdir = 'lib'
Expand Down

0 comments on commit 68f7963

Please sign in to comment.