[Numpy-discussion] 64-bit windows numpy / scipy wheels for testing

Sturla Molden sturla.molden at gmail.com
Mon Apr 28 16:44:53 EDT 2014

On 28/04/14 18:21, Ralf Gommers wrote:

>     No problems thus far, but I only installed it yesterday. :-)
> Sounds good. Let's give it a bit more time, once you've given it a good
> workout we can add that those gfortran 4.8.x compilers seem to work fine
> to the scipy build instructions.

I have not looked at building SciPy yet, but I was able to build MPICH 
3.0.4 from source without a problem. I worked on the first attempt 
without any error or warnings. That is more than I hoped for...

Using BLAS and LAPACK from Accelerate also worked correctly with flags 
-ff2c and -framework Accelerate. I can use it from Python (NumPy) with 
ctypes and Cython. I get correct results and it does not segfault.

(It does segfault without -ff2c, but that is as expected, given that 
Accelerate has f2c/g77 ABI.)

I was also able to build OpenBLAS with Clang as C compiler and gfortran 
as Fortran compiler. It works correctly as well (both the build process 
and the binaries I get).

So far it looks damn good :-)

The next step is to build NumPy and SciPy and run some tests :-)


P.S. Here is what I did to build MPICH from source, for those interested:

$./configure CC=clang CXX=clang++ F77=gfortran FC=gfortran 
--enable-fast=all,O3 --with-pm=gforker --prefix=/opt/mpich
$ make
$ sudo make install

$ export PATH="/opt/mpich/bin:$PATH" # actually in ~/.bash_profile

Now testing with some hello worlds:

$ mpif77 -o hello hello.f
$ mpiexec -np 4 ./hello
  Hello world
  Hello world
  Hello world
  Hello world

$ rm hello
$ mpicc -o hello hello.c
$ mpiexec -np 4 ./hello
Hello world from process 0 of 4
Hello world from process 1 of 4
Hello world from process 2 of 4
Hello world from process 3 of 4

The hello world programs looked like this:

#include <stdio.h>
#include <mpi.h>

int main (int argc, char *argv[])
   int rank, size;
   MPI_Init (&argc, &argv);
   MPI_Comm_rank (MPI_COMM_WORLD, &rank);	
   MPI_Comm_size (MPI_COMM_WORLD, &size);
   printf( "Hello world from process %d of %d\n", rank, size);
   return 0;

       program hello_world
       include 'mpif.h'
       integer ierr
       call MPI_INIT(ierr)
       print *, "Hello world"
       call MPI_FINALIZE(ierr)

More information about the NumPy-Discussion mailing list