Saturday, April 21, 2012

Optimizing the performance of Gcc compiled programs for BeagleBoard

Researching the various ways to optimize the compilation programs for BeagleBoard, I've come with the following parameters for GCC:


-O3 -fomit-frame-pointer -mfloat-abi=softfp -mfpu=neon -mcpu=cortex-a8 -ftree-vectorize -ffast-math

At the moment they are the best parameters we could get. Maybe you have aditional parameters you use to speed the resulting program's performance?

Improving Beagleboard capture speed on OpenCV

It seems that the capture routines of OpenCV don't perform so well on the Beagleboard. Our  tests were really disappointing, with 2-3 fps on our low vision project.

We had to develop a custom optimized capture mechanism, which retrieves the raw YUYV frames, extracts the Y components, and works from there.

This allow us to grab at full camera speed at 640x480 for a Logitech Pro9000 camera, and we are optimizing to get the full resolution, 1600x1200.  Apparently SDL can be used to grab frames with improved speed, this is something we didn't consider.

PS: To have better information, see my next post

Saturday, July 26, 2008

The Leibniz-Newton controversy

Studying the aspects that gave origin to the well known Differential and Integral Calculus right now.

The Royal Society Committee , which analyzed Leibniz plagiarism charges, and the two bands that emerged from it, are really a sign that the human race doesn't change too much through the centuries, and it takes a bit the mystic halo science has, showing that science is also a man business, specially observing Newton's actions, of almost supra human image in the eyes of some, and not really brilliant in the mentioned case.

It also comes as a conclusion that giving the unique authorship of Calculus to one unique person is at least very unfair, seeing the clear traces of preliminary works coming from the Greeks, and there is a list of really big names with fundamental works as Fermat, Descartes, Hooke, etc.

Friday, May 16, 2008

Ruby midi-speech synthesis crossover

Some days ago I had to somehow show all the sound of a .sf2 soundbank file. This can be a really boring and time consuming task.

So I hacked together a ruby script that says the sound number through MS Sapi, and quickly generated a scale midi file with changed instrument, and play it through Windows services, everything from register 1 to 99. It saved me a couple of hours maybe, and was indeed fun.

A little excerpt (recorded from a cheap microphone due to an integrated soundcard's inhability) can be found here

The employed libraries were midilib and win32-sapi .

NumRu, scientific Ruby the easy way

From it's ruby-lang description page:
NumRu is a suite of libraries and applications for numerical modeling, data analysis, and visualization produced by the Dennou Ruby project of the GFD Dennou Club.

It's a complete ruby distribution with many scientific library bindings included. I used it to mockup a new matrix-form daubechies filters mockup I want to implement on a GPU (using brook). The gsl wavelet package had a bug, so I had to use a Debian VM to contrast, but if you want a hole scientific toolbox in a convenient installer, It can be an option.

Saturday, April 26, 2008

Brook+ FFT implementation

Starting the work with Brook+, I've found that AFAIK no FFT implementation is publicly available . AMD math libraries are available by request, but it only supports Win64. I'll be reviewing the original Brook FFT implementation and will try to port it to Brook+, given the importance such routines have for every math toolbox.
[Update] replaced with a wavelet GPU library project. I've left it until a GPU Neural Net project for a course is done.

Saturday, April 12, 2008

Brook+ and Amd GPU Programming

Beginning some serious GPU programming research, thinking on a long time effort to integrate it in a WaveAtom implementation. Also planning some hybrid CPU-GPU integration research, and afterwards GPU-Multicore nodes clustering. A long way to go here...

The planned Hardware is a ATI HD3450, and the software platform to use is AMD's Brook+. It is a derivative of srteam-computing oriented language Brook , which is converted in c++ kernel code, that is translated into AMD's CAL calls. The original version, Brook, is in version 0,5, and has DirectX, OpenGL, CPU and OpenMP backends.