Re: [f2py] F2PY: Unable to prevent Fortran ordered array copy
Robin <[email protected]>
| Newsgroups | gmane.comp.python.f2py.user |
|---|---|
| Message-ID | <[email protected]> |
Hi, Your scripts seemed to work for me with no copies reported. Being on a Mac I had to disable -DREPORT_AT_EXIT and numpy.testing.memusage() is unavailable so I didn't get those figures... but the copy warning works and I didn't get it. I am using gfortran 4.2, f2py 2_7618, numpy 1.4.0.dev7618 (mac) You are using quite an old version of numpy/f2py, so it would probably worth upgrading, at least to the latest release to see if the problem persists. Robn On Thu, Nov 19, 2009 at 10:01 PM, Ravi Kanda <[email protected]> wrote: > Thank you, Robin & Labrach, for your comments. > > The problem I am experiencing boils down to why the F2PY-module is > unable to identify a legal NUMPY array to be in the correct order, or > even recognize legal Numpy array objects! And the problem persists > irrespective of the F90 compiler I use (Intel, PG, or GNU). The crux of > this problem may be illustrated with the following two examples from the > python interpreter ('pymm' is the f2py-wrapped module): > -------------------------------------------------------- > >>> # Example 1. ROW-MAJOR-ORDERED ARRAY, 'a': > ... > >>> a = reshape(arange(15),(3,5)) > >>> a > array([[ 0, 1, 2, 3, 4], > [ 5, 6, 7, 8, 9], > [10, 11, 12, 13, 14]]) > >>> isfortran(a) > False ---------> OK > >>> a.flags['F_CONTIGUOUS'] > False ---------> OK > >>> > >>> pymm.has_column_major_storage(a) > 0 ---------> OK > >>> a = pymm.as_column_major_storage(a) > Traceback (most recent call last): > File "<stdin>", line 1, in <module> > pymm.error: expected array object ---------> (!) > >>> > -------------------------------------------------------- > ... > -------------------------------------------------------- > >>> # Example 2. COLUMN-MAJOR-ORDERED ARRAY, 'b': > ... > >>> b = reshape(arange(15),(3,5),order='f') > >>> b > array([[ 0, 3, 6, 9, 12], > [ 1, 4, 7, 10, 13], > [ 2, 5, 8, 11, 14]]) > >>> isfortran(b) > True ---------> OK > >>> b.flags['F_CONTIGUOUS'] > True ---------> OK > >>> pymm.has_column_major_storage(b) > 0 ---------> (!) > >>> c = pymm.as_column_major_storage(b) > Traceback (most recent call last): > File "<stdin>", line 1, in <module> > pymm.error: expected array object ---------> (!) > >>> > -------------------------------------------------------- > > So, 'pymm' does not seem to recognize the legal NUMPY arrays, 'a' OR > 'b', as valid array objects! As a result, the NUMPY array seems to be > cast into a 'suitable' form by F2PY resulting in array copying when I > invoke the function 'pymm.mmfunc.mm' [if compiled with > 'intent(in,out,overwrite)' OR 'intent(in,out)' OR > 'intent(in,out,overwrite,c)', and passing the appropriate > F-/C-CONTIGUOUS arrays]: > "copied an array using PyArray_CopyFromObject: size=1440000, elsize=4 > copied an array using PyArray_CopyFromObject: size=1440000, elsize=4 > copied an array using PyArray_CopyFromObject: size=1440000, elsize=4" > > -------------------------------------------------------- > However, when I compile with 'intent(inout)', OR 'intent(inplace)', OR > 'intent(inout,c)' with appropriate F-/C-CONTIGUOUS arrays, then I get > the following error: > "pymm.error: failed in converting 4th argument `a' of pymm.mmfunc.mm to > C/Fortran array" > > -------------------------------------------------------- > So, I want to know whether: > > 1) This could be due to a bug in the F2PY version I am using > [2.45.241_1926] that was later fixed? Or a problem with my installation > of F2PY itself. > > 2) I am using a wrong flag (or not using a specific flag) during F2PY > compilation (please see CSH & LOG files in TGZ below)? > > 3) I am making some subtle mistake while calling the F2PY-module (please > see 'CALL_MM.PY' & 'MM.F90' file in TGZ)? > > Again, all the relevant text files (7 in all) are available at: > ftp://ftp.gps.caltech.edu/pub/rkanda/MemoryDeallocTest.tgz > > I don't know where else to look to try to resolve this problem. So, it > will be much appreciated if someone can take a look at the F90, PY, PYF, > CSH, & LOG files, or actually compile/run the module to see whether I'm > experiencing a "unique" problem here. > > Thank you very much for your time! > Ravi. > -------------------------------------------- > > labrach wrote: >> It seems ok for me with the followings : >> >> (but I don't know how to check if the copy appeared or not, since the >> -DF2PY_REPORT_ATEXIT returns an error dealing with undefine reference >> to 'on_exit') >> >> I run that on a Windows with mingw 5.1.4 >> > <SNIP> > > _______________________________________________ > f2py-users mailing list > f2py-users-Y4l6ocDipWCuvFJfX82//[email protected] > http://cens.ioc.ee/mailman/listinfo/f2py-users >