A RetroSearch Logo

Home - News ( United States | United Kingdom | Italy | Germany ) - Football scores

Search Query:

Showing content from https://github.com/numpy/numpy/wiki/Numerical-software-on-Windows below:

Numerical software on Windows · numpy/numpy Wiki · GitHub

This is a survey of the build dependencies of numerical software on Windows.

Fast numerics need optimized libraries for BLAS and LAPACK. They also need a Fortran compiler to make use of standard Fortran numerical libraries.

Most numerical programming development happens in Unix, and most open-source software is cross-platform. Building many numerical libraries needs a Unix-like build system such as make and autoconf.

Open-source numerical software

A selected list:

All of these need to compile Fortran code and use BLAS / LAPACK libraries - see below.

Common compiler collections on Windows

See Visual Studio page on Wikipedia. This is the platform compiler for Windows. Express edition is free to download. Compiles C and C++, but Microsoft does not make a Fortran compiler.

See MSVC and Python for a list of MS Visual C versions and download links.

Free x86 and AMD64 (x86-64) VC90 c-compilers for Python-2.7 are now available from Microsoft.

Cygwin is a Unix-like environment on Windows. It includes the full GNU compiler collection and the Unix build tools. gcc compilers link against a C runtime in a Cygwin-specific DLL providing a POSIX compatibility layer. This can cause problems when different libraries compile against different versions of the DLL. It is easy to run into problems with multiple copies of the DLL

See MinGW page on Wikipedia.

MinGW is a port of of the GNU compiler collection to Windows that links against the Microsoft C runtime libraries. It is 32-bit only.

See MingGW-w64 sourceforge page and section in MinGW wikipedia article

Another port of of the GNU compiler collection to Windows implementing multilib (32- and 64- bit compilation from the same compiler).

Much younger than the MinGW project, and under rapid development.

See Intel C compilers. Seem to be somewhere upward of $1000 for Windows C compiler.

See the Intel developer license page.

The license that appears to apply to the Intel run-times, linked statically or dynamically, is the Intel EULA for software development products. See this discussion for more detail.

Relevant clauses for us are:

  1. Distribution of the Redistributables is also subject to the following limitations: [...] (d) will provide the Redistributables subject to a license agreement that prohibits disassembly and reverse engineering of the Redistributables except in cases when you provide Your Product subject to an open source license that is not an Excluded License, for example, the BSD license, or the MIT license, (e) will indemnify, hold harmless, and defend Intel and its suppliers from and against any claims or lawsuits, including attorney's fees, that arise or result from Your modifications, derivative works or Your distribution of Your Product.

"Redistributables" does cover run-time DLLs, and probably also applies to statically linked object code - see discussion.

With this license, distributing our binaries under a BSD license, we don't have to add the disassembly clause to the license agreement, but we do have to pay Intel's legal fees if someone sues Intel because of a problem in Numpy / Scipy.

Also see below for discussion of Intel Fortran compiler.

See: mingwpy discussion of BLAS / LAPACK.

The options for a 64-bit Fortran compiler on Windows are:

If all Fortran code is compatible with Fortran 77, it is also possible to compile the Fortran code with a C compiler by converting the Fortran code to C with f2c.

Mixing Cygwin / MinGW and Visual Studio

Various problems can arise - see OpenBLAS with VS and MSVC and MinGW DLLs for examples.

Applications and DLLs have to make sure that they do not use different MSVC runtime libraries in the same process.

MinGW-w64 lacks intrinsic support for choosing MSVC run-times as a gcc option. For example, Python 3.3 was compiled with MSVC 10 (VS 2010). A Python extension will be in the same process as Python, and so will also need to link against the MSVC 10 run-times.

The workaround is to create and patch the gcc specs file for the particular MSVC runtime you want to link against.

Another option is using cross-compilers like MXE. MXE does MinGW builds from Linux.

If a program tries to load a DLL called mylibrary.dll, Windows has to decide which directories it should search for mylibrary.dll.

Applications and libraries often need to ship DLLs, and they need to make sure the application / libraries finds the correct version.

One place that Windows looks for DLLs is on the system $PATH (the %PATH% variable in cmd.exe, or $env:PATH in Powershell). It is not safe in general to put our own mylibrary.dll into some system directory like WINDOWS/system because another application may depend on a different version of the DLL that is also called mylibrary.dll.

For reference here is the standard DLL search algorithm. See this exploration of DLL search settings for more explanation.

Alternative strategies for finding the right DLL are:

Building installers for numerical libraries on Windows

See Building numpy / scipy (dead link).

Standard Windows compile uses:

Standard numpy and scipy binary releases on Windows use pre-compiled ATLAS libraries and are 32-bit only because of the difficulty of compiling ATLAS on 64-bit Windows. Because of the problem of locating DLLs, ATLAS is linked statically.

See building R from source and R Windows toolset.

In the Windows toolset page, a typical quote:

We have found that the build process for R is quite sensitive to the choice of tools: please follow our instructions exactly, even to the choice of particular versions of the tools

The R build depends on a customized set of Windows tools for R. These include copies of Cygwin command line tools and a copy of the MinGW-w64 toolchain

So, R uses:

See Octave for Windows and Octave-forge Windows directory.

Octave Windows binary releases on the main sourceforge site are behind compared with Mac (3.6.4 vs 3.8.0). The top of the Octave Windows page says:

GNU Octave is primarily developed on GNU/Linux and other POSIX conformal systems. The ports of GNU Octave to Windows use different approaches to get most of the original Octave and adapt it to Microsoft Windows idiosyncrasies (eg: dynamic libraries, file paths, permissions, environment variables, GUI system, etc). Bear this in mind and don't panic if you get unexpected results.

There is a current Octave build for windows (dead link) using the MXE cross compiler.

Tools, BLAS and Fortran use are a little confusing across the range of Octave builds:

See installing sage from source

Sage can only be built on Cygwin on Windows. Uses:

See compiling scilab for Windows

The instructions include this command to checkout requirements for Windows:

svn export --force --username anonymous --password Scilab svn://svn.scilab.org/scilab/trunk/Dev-Tools/SE/Prerequirements/Windows scilab

This fetches a large number of Windows binary packages that appear to include compiled reference BLAS, ATLAS, OpenBLAS, MKL, Python, java.

So:

See building Julia on Windows

Julia uses MinGW-builds - binary builds of dual 32- / 64-bit MinGW compilers.


RetroSearch is an open source project built by @garambo | Open a GitHub Issue

Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo

HTML: 3.2 | Encoding: UTF-8 | Version: 0.7.4