def _set_fftw_variables(self): if not hasattr(self, 'BLAS_LIB_DIR'): self.log.raiseException( "_set_fftw_variables: IntelFFT based on IntelMKL (no BLAS_LIB_DIR found)" ) imklver = get_software_version(self.FFT_MODULE_NAME[0]) picsuff = '' if self.options.get('pic', None): picsuff = '_pic' bitsuff = '_lp64' if self.options.get('i8', None): bitsuff = '_ilp64' compsuff = '_intel' if get_software_root('icc') is None: if get_software_root('GCC'): compsuff = '_gnu' else: self.log.error( "Not using Intel compilers or GCC, don't know compiler suffix for FFTW libraries." ) fftw_libs = ["fftw3xc%s%s" % (compsuff, picsuff)] if self.options['usempi']: # add cluster interface for recent imkl versions if LooseVersion(imklver) >= LooseVersion("11.0.2"): fftw_libs.append("fftw3x_cdft%s%s" % (bitsuff, picsuff)) elif LooseVersion(imklver) >= LooseVersion("10.3"): fftw_libs.append("fftw3x_cdft%s" % picsuff) fftw_libs.append("mkl_cdft_core") # add cluster dft fftw_libs.extend(self.variables['LIBBLACS'].flatten() ) # add BLACS; use flatten because ListOfList self.log.debug('fftw_libs %s' % fftw_libs.__repr__()) fftw_libs.extend(self.variables['LIBBLAS'].flatten() ) # add BLAS libs (contains dft) self.log.debug('fftw_libs %s' % fftw_libs.__repr__()) self.FFT_LIB_DIR = self.BLAS_LIB_DIR self.FFT_INCLUDE_DIR = self.BLAS_INCLUDE_DIR # building the FFTW interfaces is optional, # so make sure libraries are there before FFT_LIB is set imklroot = get_software_root(self.FFT_MODULE_NAME[0]) fft_lib_dirs = [os.path.join(imklroot, d) for d in self.FFT_LIB_DIR] # filter out gfortran from list of FFTW libraries to check for, since it's not provided by imkl check_fftw_libs = [lib for lib in fftw_libs if lib != 'gfortran'] fftw_lib_exists = lambda x: any([ os.path.exists(os.path.join(d, "lib%s.a" % x)) for d in fft_lib_dirs ]) if all([fftw_lib_exists(lib) for lib in check_fftw_libs]): self.FFT_LIB = fftw_libs else: tup = (check_fftw_libs, fft_lib_dirs) msg = "Not all FFTW interface libraries %s are found in %s, can't set FFT_LIB." % tup self.log.error(msg)
def _set_fftw_variables(self): if not hasattr(self, 'BLAS_LIB_DIR'): self.log.raiseException("_set_fftw_variables: IntelFFT based on IntelMKL (no BLAS_LIB_DIR found)") imklver = get_software_version(self.FFT_MODULE_NAME[0]) picsuff = '' if self.options.get('pic', None): picsuff = '_pic' bitsuff = '_lp64' if self.options.get('i8', None): bitsuff = '_ilp64' compsuff = '_intel' if get_software_root('icc') is None: if get_software_root('GCC'): compsuff = '_gnu' else: self.log.error("Not using Intel compilers or GCC, don't know compiler suffix for FFTW libraries.") fftw_libs = ["fftw3xc%s%s" % (compsuff, picsuff)] if self.options['usempi']: # add cluster interface for recent imkl versions if LooseVersion(imklver) >= LooseVersion("11.0.2"): fftw_libs.append("fftw3x_cdft%s%s" % (bitsuff, picsuff)) elif LooseVersion(imklver) >= LooseVersion("10.3"): fftw_libs.append("fftw3x_cdft%s" % picsuff) fftw_libs.append("mkl_cdft_core") # add cluster dft fftw_libs.extend(self.variables['LIBBLACS'].flatten()) # add BLACS; use flatten because ListOfList self.log.debug('fftw_libs %s' % fftw_libs.__repr__()) fftw_libs.extend(self.variables['LIBBLAS'].flatten()) # add BLAS libs (contains dft) self.log.debug('fftw_libs %s' % fftw_libs.__repr__()) self.FFT_LIB_DIR = self.BLAS_LIB_DIR self.FFT_INCLUDE_DIR = self.BLAS_INCLUDE_DIR # building the FFTW interfaces is optional, # so make sure libraries are there before FFT_LIB is set imklroot = get_software_root(self.FFT_MODULE_NAME[0]) fft_lib_dirs = [os.path.join(imklroot, d) for d in self.FFT_LIB_DIR] # filter out gfortran from list of FFTW libraries to check for, since it's not provided by imkl check_fftw_libs = [lib for lib in fftw_libs if lib != 'gfortran'] fftw_lib_exists = lambda x: any([os.path.exists(os.path.join(d, "lib%s.a" % x)) for d in fft_lib_dirs]) if all([fftw_lib_exists(lib) for lib in check_fftw_libs]): self.FFT_LIB = fftw_libs else: tup = (check_fftw_libs, fft_lib_dirs) msg = "Not all FFTW interface libraries %s are found in %s, can't set FFT_LIB." % tup self.log.error(msg)
def _set_fftw_variables(self): if not hasattr(self, 'BLAS_LIB_DIR'): self.log.raiseException( "_set_fftw_variables: IntelFFT based on IntelMKL (no BLAS_LIB_DIR found)" ) imklver = get_software_version(self.FFT_MODULE_NAME[0]) fftwsuff = "" if self.options.get('pic', None): fftwsuff = "_pic" fftw_libs = ["fftw3xc_intel%s" % fftwsuff] if self.options['usempi']: # add cluster interface if LooseVersion(imklver) < LooseVersion("11.1"): if LooseVersion(imklver) >= LooseVersion("11.0"): fftw_libs.append("fftw3x_cdft_lp64%s" % fftwsuff) elif LooseVersion(imklver) >= LooseVersion("10.3"): fftw_libs.append("fftw3x_cdft%s" % fftwsuff) fftw_libs.append("mkl_cdft_core") # add cluster dft fftw_libs.extend(self.variables['LIBBLACS'].flatten( )) ## add BLACS; use flatten because ListOfList self.log.debug('fftw_libs %s' % fftw_libs.__repr__()) fftw_libs.extend(self.variables['LIBBLAS'].flatten( )) ## add core (contains dft) ; use flatten because ListOfList self.log.debug('fftw_libs %s' % fftw_libs.__repr__()) self.FFT_LIB_DIR = self.BLAS_LIB_DIR self.FFT_INCLUDE_DIR = self.BLAS_INCLUDE_DIR # building the FFTW interfaces is optional, # so make sure libraries are there before FFT_LIB is set imklroot = get_software_root(self.FFT_MODULE_NAME[0]) fft_lib_dirs = [os.path.join(imklroot, d) for d in self.FFT_LIB_DIR] if all([ any([ os.path.exists(os.path.join(d, "lib%s.a" % lib)) for d in fft_lib_dirs ]) for lib in fftw_libs ]): self.FFT_LIB = fftw_libs else: msg = "Not all FFTW interface libraries %s are found in %s, can't set FFT_LIB." % ( fftw_libs, fft_lib_dirs) self.log.error(msg)
def _set_fftw_variables(self): if not hasattr(self, 'BLAS_LIB_DIR'): self.log.raiseException("_set_fftw_variables: IntelFFT based on IntelMKL (no BLAS_LIB_DIR found)") imklver = get_software_version(self.FFT_MODULE_NAME[0]) fftwsuff = "" if self.options.get('pic', None): fftwsuff = "_pic" fftw_libs = ["fftw3xc_intel%s" % fftwsuff] if self.options['usempi']: # add cluster interface if LooseVersion(imklver) < LooseVersion("11.1"): if LooseVersion(imklver) >= LooseVersion("11.0"): fftw_libs.append("fftw3x_cdft_lp64%s" % fftwsuff) elif LooseVersion(imklver) >= LooseVersion("10.3"): fftw_libs.append("fftw3x_cdft%s" % fftwsuff) fftw_libs.append("mkl_cdft_core") # add cluster dft fftw_libs.extend(self.variables['LIBBLACS'].flatten()) ## add BLACS; use flatten because ListOfList self.log.debug('fftw_libs %s' % fftw_libs.__repr__()) fftw_libs.extend(self.variables['LIBBLAS'].flatten()) ## add core (contains dft) ; use flatten because ListOfList self.log.debug('fftw_libs %s' % fftw_libs.__repr__()) self.FFT_LIB_DIR = self.BLAS_LIB_DIR self.FFT_INCLUDE_DIR = self.BLAS_INCLUDE_DIR # building the FFTW interfaces is optional, # so make sure libraries are there before FFT_LIB is set imklroot = get_software_root(self.FFT_MODULE_NAME[0]) fft_lib_dirs = [os.path.join(imklroot, d) for d in self.FFT_LIB_DIR] if all([any([os.path.exists(os.path.join(d, "lib%s.a" % lib)) for d in fft_lib_dirs]) for lib in fftw_libs]): self.FFT_LIB = fftw_libs else: msg = "Not all FFTW interface libraries %s are found in %s, can't set FFT_LIB." % (fftw_libs, fft_lib_dirs) self.log.error(msg)