Re: [Numpy-discussion] f2py: ram usage

2016-04-10 Thread Sebastian Berg
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
> NumPy-Discussion@scipy.org
> https://mail.scipy.org/mailman/listinfo/numpy-discussion

signature.asc
Description: This is a digitally signed message part
___
NumPy-Discussion mailing list
NumPy-Discussion@scipy.org
https://mail.scipy.org/mailman/listinfo/numpy-discussion


[Numpy-discussion] f2py: ram usage

2016-04-10 Thread Vasco Gervasi
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.
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
NumPy-Discussion@scipy.org
https://mail.scipy.org/mailman/listinfo/numpy-discussion