[Numpy-discussion] Windows, blas, atlas and dlls
V. Armando Sole
Tue Feb 19 00:05:20 CST 2013
On 18.02.2013 22:47, Pauli Virtanen wrote:
> 18.02.2013 23:29, V. Armando Sole kirjoitti:
>> I find Dag's approach more appealing.
>> SciPy can be problematic (windows 64-bit) and if one could offer
>> to the linear algebra functions without needing SciPy I would
>> prefer it.
> Well, the two approaches are not exclusive. Moreover, there already
> exist Cython wrappers for BLAS that you can just take and use.
Please correct me if I am wrong.
I assume those wrappers force you to provide the shared libraries so
the problem is still there. If not, I would really be interested on
getting one of those wrappers :-)
It is really nice to provide extensions receiving the pointer to the
function to be used even under Linux: the extension does not need to be
compiled each time the user changes/updates shared libraries. It is
really nice to find your C extension is slow, you find ATLAS is not
installed, you install it and your extension becomes very fast without
needing to recompile.
> Windows 64-bit is probably problematic for everyone who wants to
> binaries --- I don't think there's a big difference in difficulty in
> making binaries for a light Cython wrapper to BLAS/LAPACK vs.
> the whole of Scipy :)
I have an Intel Fortran compiler license just to be able to provide
windows 64-bit frozen binaries and extension modules :-) but that is not
- If provide the MKL dll's a person willing to re-distribute the module
also needs an MKL license
- If I do not provide the MKL dll's the extension module is useless
For the time being the best solution I have found is to use pointers to
the wrapped functions in SciPy: the extension module use whatever
library installed on the target system and I do not need to provide the
shared libraries. It is just a pity that having the libraries in numpy,
one cannot access them while one can do it in SciPy. Therefore I found
Dag's approach quite nice: numpy and SciPy using the linear algebra
functions via a third package providing all the needed pointers (or at
least having that package available in first instance).
More information about the NumPy-Discussion