[SciPy-user] Problem with Weave

Bob.Cowdery at CGI-Europe.com Bob.Cowdery at CGI-Europe.com
Mon Jul 12 06:55:29 CDT 2004


Hi Eric

Thanks for the pointers. Yes that bit works fine now. 

----

Unfortunately I have run into a much more obtuse problem. I converted a
piece of code that had a nested loop as I could only get rid of the inner
loop with array functions and it was still too slow by a large factor.
However I don't think the actual code is causing this problem as almost any
code blows up on me.

The code is at the end just to complete the story. This code compiles and
tests out ok if I run it directly from a main within the same module. When I
try to run it within the application, it compiles ok and I get 'file
changed' then every time it is invoked I get an exception:

Exception exceptions.RuntimeError: 'maximum recursion depth exceeded' in
<bound method module.__del__ of <win32 module '__eq__' (0 functions)>>
ignored

The function is not called recursively, however it is called on a separate
thread every 46ms or so. I thought at first it might be getting called
mutiple time while it was compiling but it's synchronous so the thread is
forced to wait first time while it compiles. After this failure it locks up
the application. Once the application exits I am left with
gnuplot_helper.exe and wgnuplot_helper.exe (neither of which I use) taking
all my processer and I have to kill them off. Before that I just notice
dumpreg is there and then it exits.

It's very unpredictable, for example first thing this morning I ran it and
it appeared to be running through although it wasn't actually doing what it
should. As I wasn't sure if it had really compiled the current text I
replaced the code with a printf() and it failed. Since then I can't get it
to run through at all EVEN WITH no code in the 'code' variable. I even
removed the array assignments and all the parameters incase they were the
problem. I couldn't figure out how to pass in class variables directly,
that's why they are all copied to local variables.

I am completely bemused by what's going on here. Any ideas?

Bob.

------------

        code = """            
            double ISum = 0.0;
            double QSum = 0.0;
            double lsb = 0.0;
            double usb = 0.0;
            
            for(int smpl = 0 ; smpl < IN_SZ ; smpl++)
            {
                I_delay[delay_ptr] = I_in[smpl];
                Q_delay[delay_ptr] = Q_in[smpl];
                if(++delay_ptr == DELAY_LEN) delay_ptr = 0;
                
                ISum = 0.0;
                QSum = 0.0;
                for(int tap = -40 ; tap <= 40 ; tap++)
                {
                    ISum = ISum + filter_phasing[tap+(DELAY_LEN-1)/2] *
I_delay[delay_ptr];
                    QSum = QSum + filter_phasing[(tap-(DELAY_LEN-1)/2)-1] *
Q_delay[delay_ptr];
                    if(++delay_ptr == DELAY_LEN) delay_ptr = 0;
                }
                
                if(peak>1) peak = peak * agcdecay;
                if(sideband == 0)
                {
                    lsb = ISum + QSum;
                    if(abs(lsb) > peak) peak = abs(lsb);
                    real_out[smpl] = int(lsb*16384.0/peak);
                }
                else
                {
                    usb = ISum - QSum;
                    if(abs(usb) > peak) peak = abs(usb);
                    real_out[smpl] = int(usb*16384.0/peak);
                }
            }            
        """
        
        IN_SZ = len(self.m_I_in)
        I_in = self.m_I_in
        Q_in = self.m_Q_in
        I_delay = self.m_I_Delay
        Q_delay = self.m_Q_Delay
        delay_ptr = self.m_delay_ptr
        DELAY_LEN = self.DELAY_LEN
        filter_phasing = self.m_filter_phasing
        real_out = self.m_real_out
        
        #weave.inline(code, ['sideband', 'agcdecay', 'peak', 'I_in',
'IN_SZ', 'Q_in', 'I_delay', 'Q_delay', 'delay_ptr', 'DELAY_LEN',
'filter_phasing', 'real_out'])

-----Original Message-----
From: eric jones [mailto:eric at enthought.com] 
Sent: 12 July 2004 07:49
To: SciPy Users List
Subject: Re: [SciPy-user] Problem with Weave


Hey Bob,

The docs are seriously out of date.  Sorry about that.

Much of the crud that you used to need for handling C++->Python type 
conversions is now gone.  Here is how I wrote your example:

C:\Documents and Settings\eric>python
Enthought Edition build 1057
Python 2.3.3 (#51, Feb 16 2004, 04:07:52) [MSC v.1200 32 bit (Intel)] on 
win32
Type "help", "copyright", "credits" or "license" for more information.  >>>
import weave  >>> a=1  >>> a=weave.inline("return_val=a+1;",['a'])
file changed
msvc
No module named msvccompiler in scipy_distutils, trying from distutils.. No
module named msvccompiler in scipy_distutils, trying from distutils..
Missing compiler_cxx fix for MSVCCompiler  >>> a 2

The output is quite verbose now (too verbose), but the amount of code 
you need to write is less.  The weave/examples files (weave will be 
installed in your site-packages directory) generally have been updated 
to the new syntax and will provide some help.  Also, if you are a C++ 
person, then looking at the weave/scxx/object.h file will give some 
hints as to what is going on.

see ya,
eric


Bob.Cowdery at CGI-Europe.com wrote:

> I am about to convert some python code to 'C' so am going through the 
> Weave documentation. I can get most things to work except returning 
> values from the 'C' code. I would guess the correct libraries are not 
> getting into the compile but I don't know how to fix it. I can compile 
> and run any 'C' code fine until I use any of the Py:: classes.
>  
> As an example if I type:
>  
>>>> import weave
>>>> a=1
>>>> a=weave.inline("return_val =
> Py::new_reference_to(Py::Int(a+1));",['a'], verbose=2)
>  
> this gives me:
>  
> file changed
> running build_ext
> building 'sc_5b09eaf68ff529a1fbaedc892ca5a4531' extension C:\Program
> Files\Microsoft Visual Studio .NET 2003\Vc7\bin\cl.exe /c /nologo /Ox 
> /MD /W3 /GX -IC:\Python22\lib\site-packages\weave
> -IC:\Python22\lib\site-packages\weave\scxx -IC:\Python22\include
>
/TpC:\DOCUME~1\cowderyb\LOCALS~1\Temp\CowderyB\python22_compiled\sc_5b09eaf6
8ff529a1fbaedc892ca5a4531.cpp 
>
/FoC:\DOCUME~1\cowderyb\LOCALS~1\Temp\CowderyB\python22_intermediate\compile
r_ba943cc959c75c0df25fd4c114ec382f\Release\sc_5b09eaf68ff529a1fbaedc892ca5a4
531.obj
> Traceback (most recent call last):
>   File "<input>", line 1, in ?
>   File "C:\Python22\lib\site-packages\weave\inline_tools.py", line 
> 335, in inline
>     auto_downcast = auto_downcast,
>   File "C:\Python22\lib\site-packages\weave\inline_tools.py", line 
> 439, in compile_function
>     verbose=verbose, **kw)
>   File "C:\Python22\lib\site-packages\weave\ext_tools.py", line 340, 
> in compile
>     verbose = verbose, **kw)
>   File "C:\Python22\lib\site-packages\weave\build_tools.py", line 272, 
> in build_extension
>     setup(name = module_name, ext_modules = [ext],verbose=verb)
>   File "C:\Python22\lib\site-packages\scipy_distutils\core.py", line 
> 42, in setup
>     return old_setup(**new_attr)
>   File "C:\Python22\lib\distutils\core.py", line 157, in setup
>     raise SystemExit, "error: " + str(msg)
> CompileError: error: command '"C:\Program Files\Microsoft Visual 
> Studio .NET 2003\Vc7\bin\cl.exe"' failed with exit status 2
>  
> Any help appreciated.
>  
> Thanks
> Bob
>  
>  
> Bob Cowdery
> CGI Senior Technical Architect
> +44(0)1438 791517
> Mobile: +44(0)7771 532138
> bob.cowdery at cgi-europe.com <mailto:bob.cowdery at cgi-europe.com>
>  
>  
>  
>
> **** Confidentiality Notice **** Proprietary/Confidential Information
> belonging to CGI Group Inc. and its affiliates may be contained in 
> this message. If you are not a recipient indicated or intended in this 
> message (or responsible for delivery of this message to such person), 
> or you think for any reason that this message may have been addressed 
> to you in error, you may not use or copy or deliver this message
> to anyone else.  In such case, you should destroy this
> message and are asked to notify the sender by reply email.
>
>-----------------------------------------------------------------------
>-
>
>_______________________________________________
>SciPy-user mailing list
>SciPy-user at scipy.net http://www.scipy.net/mailman/listinfo/scipy-user
>  
>


_______________________________________________
SciPy-user mailing list
SciPy-user at scipy.net http://www.scipy.net/mailman/listinfo/scipy-user

*** Confidentiality Notice *** Proprietary/Confidential
Information belonging to CGI Group Inc. and its affiliates
may be contained in this message. If you are not a recipient
indicated or intended in this message (or responsible for
delivery of this message to such person), or you think for
any reason that this message may have been addressed to you
in error, you may not use or copy or deliver this message
to anyone else.  In such case, you should destroy this
message and are asked to notify the sender by reply email.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://www.scipy.net/pipermail/scipy-user/attachments/20040712/55804c7d/attachment-0001.htm


More information about the SciPy-user mailing list