[Numpy-discussion] Building numpy with MSVC 2010 and Intel Fortran 10.x (and higher)

Ilan Schnell ischnell at enthought.com
Fri Jun 22 17:04:59 EDT 2012


It you link dynamically to MKL (vs statically to ATLAS),
the easiest way is to look at the size of the C extension
numpy/linalg/lapack_lite.pyd
I have (on 32-bit Windows) 24KB when linking to MKL,
as supposed to 2.3MB when linking statically to ATLAS,
where all lapack symbols are linked in.

- Ilan


On Fri, Jun 22, 2012 at 2:41 PM, KACVINSKY Tom <Tom.KACVINSKY at 3ds.com> wrote:
> I found the problem.  It was a missing /manifest option in the distutils
> bundled with Python 2.6 (how this ever worked without my patch I'll never
> understand).   Anyway, I now have numpy built with MKL 10.3, MSVC 2010, and
> Intel Fortran 11.  What I need to know is how to verify that the linear
> algebra routines are using MKL without benchmarking numpy.  Thoughts on the
> matter?
>
>
>
> From: numpy-discussion-bounces at scipy.org
> [mailto:numpy-discussion-bounces at scipy.org] On Behalf Of KACVINSKY Tom
> Sent: Friday, June 22, 2012 11:22 AM
> To: 'numpy-discussion at scipy.org'
> Subject: Re: [Numpy-discussion] Building numpy with MSVC 2010 and Intel
> Fortran 10.x (and higher)
>
>
>
> Ooops. The message about the Fortran compiler version comes from building
> numpy 1.6.1.  The problem I am seeing with numpy 1.4.1 follows.
>
>
>
> No module named msvccompiler in numpy.distutils; trying from distutils
>
> customize IntelFCompiler
>
> Found executable c:\Program Files (x86)\Intel\Composer
> XE\bin\intel64\ifort.exe
>
> Found executable c:\Program Files (x86)\Intel\Composer
> XE\bin\intel64\ifort.exe
>
> C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\BIN\amd64\cl.exe /c
> /nologo /Ox /MD /W3 /GS- /DNDEBUG -Inumpy\core\src\private -Inump
>
> y\core\src -Inumpy\core -Inumpy\core\src\npymath -Inumpy\core\src\multiarray
> -Inumpy\core\src\umath -Inumpy\core\include -IC:\Users\tky\Pyth
>
> on\release\include -IC:\Users\tky\Python\release\PC /Tc_configtest.c
> /Fo_configtest.obj
>
> Found executable C:\Program Files (x86)\Microsoft Visual Studio
> 10.0\VC\BIN\amd64\cl.exe
>
> C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\BIN\amd64\link.exe
> /nologo /INCREMENTAL:NO _configtest.obj /OUT:_configtest.exe /MANI
>
> FESTFILE:_configtest.exe.manifest
>
> Found executable C:\Program Files (x86)\Microsoft Visual Studio
> 10.0\VC\BIN\amd64\link.exe
>
> mt.exe -nologo -manifest _configtest.exe.manifest
> -outputresource:_configtest.exe;1
>
> Found executable C:\Program Files (x86)\Microsoft
> SDKs\Windows\v7.0A\bin\x64\mt.exe
>
>
>
> _configtest.exe.manifest : general error c1010070: Failed to load and parse
> the manifest. The system cannot find the file specified.
>
> failure.
>
> removing: _configtest.c _configtest.obj
>
> Traceback (most recent call last):
>
>   File "setup.py", line 187, in <module>
>
>     setup_package()
>
>   File "setup.py", line 180, in setup_package
>
>     configuration=configuration )
>
>   File "C:\Users\tky\Python\numpy-1.4.1\numpy\distutils\core.py", line 186,
> in setup
>
>     return old_setup(**new_attr)
>
>   File "C:\Users\tky\Python\release\lib\distutils\core.py", line 152, in
> setup
>
>     dist.run_commands()
>
>   File "C:\Users\tky\Python\release\lib\distutils\dist.py", line 975, in
> run_commands
>
>     self.run_command(cmd)
>
>   File "C:\Users\tky\Python\release\lib\distutils\dist.py", line 995, in
> run_command
>
>     cmd_obj.run()
>
>   File "C:\Users\tky\Python\numpy-1.4.1\numpy\distutils\command\build.py",
> line 37, in run
>
>     old_build.run(self)
>
>   File "C:\Users\tky\Python\release\lib\distutils\command\build.py", line
> 134, in run
>
>     self.run_command(cmd_name)
>
>   File "C:\Users\tky\Python\release\lib\distutils\cmd.py", line 333, in
> run_command
>
>     self.distribution.run_command(command)
>
>   File "C:\Users\tky\Python\release\lib\distutils\dist.py", line 995, in
> run_command
>
>     cmd_obj.run()
>
>   File
> "C:\Users\tky\Python\numpy-1.4.1\numpy\distutils\command\build_src.py", line
> 152, in run
>
>     self.build_sources()
>
>   File
> "C:\Users\tky\Python\numpy-1.4.1\numpy\distutils\command\build_src.py", line
> 163, in build_sources
>
>     self.build_library_sources(*libname_info)
>
>   File
> "C:\Users\tky\Python\numpy-1.4.1\numpy\distutils\command\build_src.py", line
> 298, in build_library_sources
>
>     sources = self.generate_sources(sources, (lib_name, build_info))
>
>   File
> "C:\Users\tky\Python\numpy-1.4.1\numpy\distutils\command\build_src.py", line
> 385, in generate_sources
>
>     source = func(extension, build_dir)
>
>   File "numpy\core\setup.py", line 657, in get_mathlib_info
>
>     raise RuntimeError("Broken toolchain: cannot link a simple C program")
>
> RuntimeError: Broken toolchain: cannot link a simple C program
>
>
>
>
>
>
>
> From: numpy-discussion-bounces at scipy.org
> [mailto:numpy-discussion-bounces at scipy.org] On Behalf Of KACVINSKY Tom
> Sent: Friday, June 22, 2012 11:17 AM
> To: 'numpy-discussion at scipy.org'
> Subject: [Numpy-discussion] Building numpy with MSVC 2010 and Intel Fortran
> 10.x (and higher)
>
>
>
> I have reason to build Python 2.6.8 and numpy 1.4.1 with MSVC 2010 and Intel
> Fortran 10.1 (and higher).  I also am building with MKL 10.3.
>
>
>
> So far, I am able to get the setup to recognize the MKL libraries:
>
>
>
> C:\Users\tky\Python\numpy-1.6.2>python setup.py build --compiler=msvc
> --fcompiler=intel
>
> Running from numpy source directory.Forcing DISTUTILS_USE_SDK=1
>
> F2PY Version 2
>
> blas_opt_info:
>
> blas_mkl_info:
>
>   FOUND:
>
>     libraries = ['mkl_sequential_dll', 'mkl_intel_lp64_dll', 'mkl_core_dll']
>
>     library_dirs = ['u:\\users\\tky\\mkllib']
>
>     define_macros = [('SCIPY_MKL_H', None)]
>
>     include_dirs = ['u:\\users\\tky\\mklinc']
>
>
>
>   FOUND:
>
>     libraries = ['mkl_sequential_dll', 'mkl_intel_lp64_dll', 'mkl_core_dll']
>
>     library_dirs = ['u:\\users\\tky\\mkllib']
>
>     define_macros = [('SCIPY_MKL_H', None)]
>
>     include_dirs = ['u:\\users\\tky\\mklinc']
>
>
>
> lapack_opt_info:
>
> lapack_mkl_info:
>
> mkl_info:
>
>   FOUND:
>
>     libraries = ['mkl_sequential_dll', 'mkl_intel_lp64_dll', 'mkl_core_dll']
>
>     library_dirs = ['u:\\users\\tky\\mkllib']
>
>     define_macros = [('SCIPY_MKL_H', None)]
>
>     include_dirs = ['u:\\users\\tky\\mklinc']
>
>
>
>   FOUND:
>
>     libraries = ['mkl_sequential_dll mkl_intel_lp64_dll mkl_core_dll',
> 'mkl_sequential_dll', 'mkl_intel_lp64_dll', 'mkl_core_dll']
>
>     library_dirs = ['u:\\users\\tky\\mkllib']
>
>     define_macros = [('SCIPY_MKL_H', None)]
>
>     include_dirs = ['u:\\users\\tky\\mklinc']
>
>
>
>   FOUND:
>
>     libraries = ['mkl_sequential_dll mkl_intel_lp64_dll mkl_core_dll',
> 'mkl_sequential_dll', 'mkl_intel_lp64_dll', 'mkl_core_dll']
>
>     library_dirs = ['u:\\users\\tky\\mkllib']
>
>     define_macros = [('SCIPY_MKL_H', None)]
>
>     include_dirs = ['u:\\users\\tky\\mklinc']
>
>
>
> But where things are failing is during the compiler checks:
>
>
>
> customize IntelFCompiler
>
> Found executable C:\Program Files
> (x86)\Intel\Compiler\Fortran\10.1.011\EM64T\bin\ifort.exe
>
> Found executable C:\Program Files
> (x86)\Intel\Compiler\Fortran\10.1.011\EM64T\bin\ifort.exe
>
> Traceback (most recent call last):
>
>   File "setup.py", line 214, in <module>
>
>     setup_package()
>
>   File "setup.py", line 207, in setup_package
>
>     configuration=configuration )
>
>   File "C:\Users\tky\Python\numpy-1.6.2\numpy\distutils\core.py", line 186,
> in setup
>
>     return old_setup(**new_attr)
>
>   File "C:\Users\tky\Python\release\lib\distutils\core.py", line 152, in
> setup
>
>     dist.run_commands()
>
>   File "C:\Users\tky\Python\release\lib\distutils\dist.py", line 975, in
> run_commands
>
>     self.run_command(cmd)
>
>   File "C:\Users\tky\Python\release\lib\distutils\dist.py", line 995, in
> run_command
>
>     cmd_obj.run()
>
>   File "C:\Users\tky\Python\numpy-1.6.2\numpy\distutils\command\build.py",
> line 37, in run
>
>     old_build.run(self)
>
>   File "C:\Users\tky\Python\release\lib\distutils\command\build.py", line
> 134, in run
>
>     self.run_command(cmd_name)
>
>   File "C:\Users\tky\Python\release\lib\distutils\cmd.py", line 333, in
> run_command
>
>     self.distribution.run_command(command)
>
>   File "C:\Users\tky\Python\release\lib\distutils\dist.py", line 995, in
> run_command
>
>     cmd_obj.run()
>
>   File
> "C:\Users\tky\Python\numpy-1.6.2\numpy\distutils\command\build_src.py", line
> 152, in run
>
>     self.build_sources()
>
>   File
> "C:\Users\tky\Python\numpy-1.6.2\numpy\distutils\command\build_src.py", line
> 163, in build_sources
>
>     self.build_library_sources(*libname_info)
>
>   File
> "C:\Users\tky\Python\numpy-1.6.2\numpy\distutils\command\build_src.py", line
> 298, in build_library_sources
>
>     sources = self.generate_sources(sources, (lib_name, build_info))
>
>   File
> "C:\Users\tky\Python\numpy-1.6.2\numpy\distutils\command\build_src.py", line
> 385, in generate_sources
>
>     source = func(extension, build_dir)
>
>   File "numpy\core\setup.py", line 694, in get_mathlib_info
>
>     st = config_cmd.try_link('int main(void) { return 0;}')
>
>   File "C:\Users\tky\Python\release\lib\distutils\command\config.py", line
> 257, in try_link
>
>     self._check_compiler()
>
>   File "C:\Users\tky\Python\numpy-1.6.2\numpy\distutils\command\config.py",
> line 77, in _check_compiler
>
>     self.fcompiler.customize(self.distribution)
>
>   File
> "C:\Users\tky\Python\numpy-1.6.2\numpy\distutils\fcompiler\__init__.py",
> line 502, in customize
>
>     get_flags('arch', aflags)
>
>   File
> "C:\Users\tky\Python\numpy-1.6.2\numpy\distutils\fcompiler\__init__.py",
> line 491, in get_flags
>
>     flags.extend(getattr(self.flag_vars, tag))
>
>   File "C:\Users\tky\Python\numpy-1.6.2\numpy\distutils\environment.py",
> line 37, in __getattr__
>
>     return self._get_var(name, conf_desc)
>
>   File "C:\Users\tky\Python\numpy-1.6.2\numpy\distutils\environment.py",
> line 51, in _get_var
>
>     var = self._hook_handler(name, hook)
>
>   File
> "C:\Users\tky\Python\numpy-1.6.2\numpy\distutils\fcompiler\__init__.py",
> line 698, in _environment_hook
>
>     return hook()
>
>   File "C:\Users\tky\Python\numpy-1.6.2\numpy\distutils\fcompiler\intel.py",
> line 63, in get_flags_arch
>
>     v = self.get_version()
>
>   File
> "C:\Users\tky\Python\numpy-1.6.2\numpy\distutils\fcompiler\__init__.py",
> line 432, in get_version
>
>     raise CompilerNotFound()
>
> numpy.distutils.fcompiler.CompilerNotFound
>
>
>
> Any ideas on how to circumvent this?
>
>
>
> Thanks,
>
>
>
> Tom
>
>
>
>
>
> This email and any attachments are intended solely for the use of the
> individual or entity to whom it is addressed and may be confidential and/or
> privileged.
>
> If you are not one of the named recipients or have received this email in
> error,
>
> (i) you should not read, disclose, or copy it,
>
> (ii) please notify sender of your receipt by reply email and delete this
> email and all attachments,
>
> (iii) Dassault Systemes does not accept or assume any liability or
> responsibility for any use of or reliance on this email.
>
> For other languages, go to http://www.3ds.com/terms/email-disclaimer
>
> This email and any attachments are intended solely for the use of the
> individual or entity to whom it is addressed and may be confidential and/or
> privileged.
>
> If you are not one of the named recipients or have received this email in
> error,
>
> (i) you should not read, disclose, or copy it,
>
> (ii) please notify sender of your receipt by reply email and delete this
> email and all attachments,
>
> (iii) Dassault Systemes does not accept or assume any liability or
> responsibility for any use of or reliance on this email.
>
> For other languages, go to http://www.3ds.com/terms/email-disclaimer
>
> This email and any attachments are intended solely for the use of the
> individual or entity to whom it is addressed and may be confidential and/or
> privileged.
>
> If you are not one of the named recipients or have received this email in
> error,
>
> (i) you should not read, disclose, or copy it,
>
> (ii) please notify sender of your receipt by reply email and delete this
> email and all attachments,
>
> (iii) Dassault Systemes does not accept or assume any liability or
> responsibility for any use of or reliance on this email.
>
> For other languages, go to http://www.3ds.com/terms/email-disclaimer
>
>
> _______________________________________________
> NumPy-Discussion mailing list
> NumPy-Discussion at scipy.org
> http://mail.scipy.org/mailman/listinfo/numpy-discussion
>



More information about the NumPy-Discussion mailing list