On So, 2016-04-10 at 12:04 +0200, Vasco Gervasi wrote:

> Hi all,

> I am trying to write some code to do calculation onto an array: for

> each row I need to do some computation and have a number as return.

> To speed up the process I wrote a fortran subroutine that is called

> from python [using f2py] for each row of the array, so the input of

> this subroutine is a row and the output is a number.

> This method works but I saw some speed advantage if I pass the entire

> array to fortran and then, inside fortran, call the subroutine that

> does the math; so in this case I pass an array and return a vector.

> But I noticed that when python pass the array to fortran, the array

> is copied and the RAM usage double.

I expect that the fortran code needs your arrays to be fortran

contiguous, so the wrappers need to copy them.

The easiest solution may be to create your array in python with the

`order="F"` flag. NumPy will have a tendency to prefer C-order and uses

it as default though when doing something with an "F" ordered array.

That said, I have never used f2py, so these are just well founded

guesses.

- Sebastian

> Is there a way to "move" the array to fortran, I don't care if the

> array is lost after the call to fortran.

> The pyd module is generated using: python f2py.py -c --opt="-ffree

> -form -Ofast" -m F2PYMOD F2PYMOD.f90

>

> Thanks

> Vasco

> _______________________________________________

> NumPy-Discussion mailing list

>

[hidden email]
>

https://mail.scipy.org/mailman/listinfo/numpy-discussion_______________________________________________

NumPy-Discussion mailing list

[hidden email]
https://mail.scipy.org/mailman/listinfo/numpy-discussion