On 01/24/2012 07:12 PM, Nick Foster wrote:
On Tue, Jan 24, 2012 at 9:56 AM, ziyang <[email protected]
<mailto:[email protected]>> wrote:
On 01/19/2012 07:13 PM, Nick Foster wrote:
Optimizing an algorithm is a hard and sometimes
counterintuitive process. You might benchmark the following:
- Gnuradio's atan2 WITHOUT any Volk multiplications (just
comment out the volk mults in your block)
- The Volk multiplications WITHOUT Gnuradio's atan2 (just
comment out the atan2 in your block)
This will let you determine where the bottleneck is. In
addition, try running over a MUCH larger dataset. The clock
resolution at <1ms is not very good and the scheduler will
have a correspondingly larger effect at smaller timescales.
I think you'll find the atan2 part takes vastly longer than
the multiplications do, and that will be where you have to
look for performance improvements.
--n
Hi Nick,
I have been doing some tests about the demodulation module. As you
said, the atan2 part takes much longer than the multiplication. So
in order to maximize the performance improvement that volk could
bring to the processing, I took a division and a multiplication
out of atan2, and use volk-ified divider and multiplier instead.
Then I run tests using a much larger dataset.
But from the test results, I did not observe a performance
improvement. In fact, the average processing time even increase a
little bit. So I was wondering if what I did was not a good way to
improve the performance?
Another issue is that when I ran Cmake to build Gnuradio on E100,
it reported this:
-- Available arches: generic;neon
-- Available machines: generic;neon
-- Did not find liborc and orcc, disabling orc support...
But from the "opkg list-installed | grep orc" check, both orc and
liborc are installed. Could this lack of orc support be part of
the reason why my implementation did not have a performance
improvement?
Very likely. Make sure that orcc is somewhere that pkgconfig can find
it, and make sure its version is > 0.4.10.
This is what it shows when I run a "opkg list-installed | grep orc" check:
liborc-0.4-0 - 0.4.16-r1.0.9
liborc-test-0.4-0 - 0.4.16-r1.0.9
orc - 0.4.16-r1.0.9
I don't understand why orc/liborc cannot be detected by CMake. The
options for CMake are:
cmake -DCMAKE_INSTALL_PREFIX=/usr
-DCMAKE_CXX_FLAGS:STRING="-mcpu=cortex-a8 -mfpu=neon -mfloat-abi=softfp
-g" -DCMAKE_C_FLAGS:STRING="-mcpu=cortex-a8 -mfpu=neon
-mfloat-abi=softfp -g" ../
Could you tell me what might be the problem? Thanks.
Terry
_______________________________________________
Discuss-gnuradio mailing list
[email protected]
https://lists.gnu.org/mailman/listinfo/discuss-gnuradio