discuss-gnuradio
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Discuss-gnuradio] GrBlock


From: Josh Blum
Subject: Re: [Discuss-gnuradio] GrBlock
Date: Tue, 18 Oct 2011 12:17:15 -0700
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:7.0.1) Gecko/20110929 Thunderbird/7.0.1


On 10/18/2011 11:18 AM, Jason Bonior wrote:
> That worked. We will also try your next version whenever it is available on

Glad to hear it works; I guess zip() cant be used with swig'd vectors on
some platforms (my best guess).

I reworked the code a bit to my liking and it should also fix this
issue. Just grab the latest master branch.

> git. We will also begin building some custom blocks using grblock and numpy
> and can let you know how it goes if you wish.
> 

of course. It would be interesting to see what you come up with and
possibly how performance compares.

-Josh


> Thanks again,
> Jason
> 
> 
> 
> On Tue, Oct 18, 2011 at 9:38 AM, Josh Blum <address@hidden> wrote:
> 
>>
>>
>> On 10/18/2011 06:54 AM, Jason Bonior wrote:
>>> We added some print statements to try and narrow down the problem. This
>> is
>>> what we changed:
>>>
>>> def pointer_to_ndarray(addr, dtype, nitems):
>>>    print "pointer_to_ndarray() start"
>>>    class array_like:
>>>        print "pointer_to_ndarray array_like class start"
>>>        __array_interface__ = {
>>>            'data' : (addr, False),
>>>            'typestr' : dtype.base.str,
>>>            'descr' : dtype.base.descr,
>>>            'shape' : (nitems,) + dtype.shape,
>>>            'strides' : None,
>>>            'version' : 3
>>>        }
>>>        print "pointer_to_ndarray array_like class end"
>>>    print "pointer_to_ndarray() end"
>>>    return numpy.asarray(array_like()).view(dtype.base)
>>>    #a = numpy.asarray(array_like()).view(dtype.base)
>>>    #return a.tolist()
>>>
>>> def pointers_to_ndarrays(addrs, dtypes, nitems):
>>>    print "pointers_to_ndarrays() start, end"
>>>    print "addrs = ", addrs
>>>    print "dtypes = ", dtypes
>>>    print "nitems = ", nitems
>>>
>>> This is what we get:
>>>
>>> address@hidden:~$ /usr/local/share/grblock/examples/adder_demo.py
>>> gateway_block.__init__() start
>>> gateway_handler.__init__() start
>>> gateway_handler.__init__() end
>>> gateway_block.__init__() end
>>> gateway_handler.handle() start
>>> gateway_block.__grblock_handle() start
>>> gateway_block.__grblock_handle() end
>>> gateway_handler.handle() end
>>> gateway_handler.handle() start
>>> gateway_block.__grblock_handle() start
>>> pointers_to_ndarrays() start, end
>>> addrs =  <grblock.grblock_swig.size_t_vector_t; proxy of <Swig Object of
>>> type 'std::vector< size_t > *' at 0x235a720> >
>>> dtypes =  [dtype('float32'), dtype('float32')]
>>> nitems =  [5, 5]
>>> handler caught exception: Unknown exception
>>> Traceback (most recent call last):
>>>  File "/usr/local/lib/python2.6/dist-packages/grblock/gateway.py", line
>> 65,
>>> in handle
>>>    try: self._callback()
>>>  File "/usr/local/lib/python2.6/dist-packages/grblock/gateway.py", line
>> 137,
>>> in __grblock_handle
>>>    [self.__message.work_args.ninput_items]*len(self.__in_sig),
>>>  File "/usr/local/lib/python2.6/dist-packages/grblock/gateway.py", line
>> 51,
>>> in pointers_to_ndarrays
>>>    return [pointer_to_ndarray(*args) for args in zip(addrs, dtypes,
>> nitems)]
>>>  File
>>>
>> "/usr/local/lib/python2.6/dist-packages/gnuradio/gr/gnuradio_core_hier.py",
>>> line 118, in next
>>>    return _gnuradio_core_hier.SwigPyIterator_next(self)
>>> RuntimeError: Unknown exception
>>> gateway_handler.handle() start
>>> gateway_block.__grblock_handle() start
>>> gateway_block.__grblock_handle() end
>>> gateway_handler.handle() end
>>> thread[thread-per-block[2]: <gr_block add 2 f32 (4)>]: caught
>> unrecognized
>>> exception
>>> ^Cexcepted (1, 5, 9, 13, 17)
>>> actual ()
>>> gateway_block.__init__() start
>>> gateway_handler.__init__() start
>>> gateway_handler.__init__() end
>>> gateway_block.__init__() end
>>> gateway_handler.handle() start
>>> gateway_block.__grblock_handle() start
>>> gateway_block.__grblock_handle() end
>>> gateway_handler.handle() end
>>> gateway_handler.handle() start
>>> gateway_block.__grblock_handle() start
>>> pointers_to_ndarrays() start, end
>>> addrs =  <grblock.grblock_swig.size_t_vector_t; proxy of <Swig Object of
>>> type 'std::vector< size_t > *' at 0x235aa20> >
>>> dtypes =  [dtype('complex64'), dtype('complex64')]
>>> nitems =  [5, 5]
>>> handler caught exception: Unknown exception
>>> Traceback (most recent call last):
>>>  File "/usr/local/lib/python2.6/dist-packages/grblock/gateway.py", line
>> 65,
>>> in handle
>>>    try: self._callback()
>>>  File "/usr/local/lib/python2.6/dist-packages/grblock/gateway.py", line
>> 137,
>>> in __grblock_handle
>>>    [self.__message.work_args.ninput_items]*len(self.__in_sig),
>>>  File "/usr/local/lib/python2.6/dist-packages/grblock/gateway.py", line
>> 51,
>>> in pointers_to_ndarrays
>>>    return [pointer_to_ndarray(*args) for args in zip(addrs, dtypes,
>> nitems)]
>>>  File
>>>
>> "/usr/local/lib/python2.6/dist-packages/gnuradio/gr/gnuradio_core_hier.py",
>>> line 118, in next
>>>    return _gnuradio_core_hier.SwigPyIterator_next(self)
>>> RuntimeError: Unknown exception
>>> gateway_handler.handle() start
>>> gateway_block.__grblock_handle() start
>>> gateway_block.__grblock_handle() end
>>> gateway_handler.handle() end
>>> thread[thread-per-block[2]: <gr_block add 2 fc32 (10)>]: caught
>> unrecognized
>>> exception
>>> ^Cexcepted (1, 5j, 9, 13j, 17)
>>> actual ()
>>>
>>>
>>> I have been on the digest subscription of gr discuss so I did not have
>> the
>>> address to make sure I submit to the correct thread. I will on future
>>> messages.
>>>
>>
>> Hey thanks for doing that. The best I can make out is that maybe its
>> failing on the zip operation. Possibly because of the swigged-up vector
>> of addrs...
>>
>> Can you try this diff?
>> One liner: http://pastebin.com/kc7QfB1L
>>
>> -Josh
>>
> 



reply via email to

[Prev in Thread] Current Thread [Next in Thread]