On 01/10/2014 08:45 PM, Vesa Solonen wrote:
10/01/14 19:35, Maciej Sumiński kirjoitti:

the board that I recommended for testing the GAL
(http://www.ohwr.org/attachments/download/2187/wrs.kicad_pcb), when you
drag the biggest IC in the middle, as it contains the greatest number of
nets connected. After being dropped you may observe a freeze for a short
time, it is the ratsnest algorithm going - we have to decide if it is
acceptable.

While the big redesign/rewrite of Kicad core is going on, it might be a
good moment to think some radical moves. Designing all computationally
intensive parts with multi core processors, de facto available
SIMD/Vector instructions and OpenCL in mind.

As an example instruct the compiler to autovectorize just that ratsnest
calculation. Or the previous plus function written to support multiple
threads. Running the UI thread and processing threads separate, say the
ratsnest being constantly iterated in the background when it changes.

Just by GCC autovectorization its easy to get ten times more comparing
or multiplying performane.

-Vesa

I fully support the idea, in fact I have dreamed about this too (http://www.ohwr.org/projects/cern-kicad/wiki/ratsnest-gal#Possible-upgrades). I had a short try with OpenMP, but I did not get any better results, so it seems that I could have done it wrong. If there are volunteers who have some experience with parallelization I am very eager to cooperate to speed up some of computations. The ratsnest algorithm is a perfect place to start with. It is performed on per net basis, so they are all independent to each other.

Regards,
Orson

_______________________________________________
Mailing list: https://launchpad.net/~kicad-developers
Post to     : kicad-developers@lists.launchpad.net
Unsubscribe : https://launchpad.net/~kicad-developers
More help   : https://help.launchpad.net/ListHelp

Reply via email to