Tag: optimisation

01

NEON programmer Needed !

août

I was recently contacted by a company which proposed me optimize critical parts of an application designed to run on the iPhone (see Android someday). Let me say right now, being paid to do NEON assembly code, I did not hesitate for long!
So after a fortnight of optimizations, I’m pretty happy with the result because the application now works significantly faster!

This post is a translation of “Recherche programmeur NEON !

more...
 | Tags: ,
01

Recherche programmeur NEON !

août
3 Comments »   Posted by Etienne SOBOLE |  Category:Android, Systèmes, iOS

J’ai été contacté récemment par une société qui m’a proposé d’optimiser les parties critiques d’une application prévue pour fonctionner sur l’iPhone (voir Android un jour). Donc autant dire tout de suite, qu’être payé pour faire de l’assembleur NEON, j’ai pas hésité longtemps !
Donc après une quinzaine de jours d’optimisations à tout va, je suis assez content du résultat puisque l’application fonctionne à présent significativement plus vite !

more...
 | Tags: ,
21

Réduction du nombre de couleurs avec NEON

sept

Aujourd’hui, je m’intéresse aux algorithmes de conversion d’une image RGB888 (16 million de couleurs) à une image RGB565 (65000 couleurs).
NEON n’a pas de prédispositions particulières pour traiter les pixels 16 bits (RGB565 sur Android) ce qui conduit souvent les développeurs à effectuer les opérations complexes sur des pixels 32 bits puis de convertir le résultat en 16 bits une fois le traitement terminé.
Contre toute attente, il existe des algorithmes très efficace et peu gourmand en temps CPU pour réaliser de façon correcte cette conversion…

more...
 | Tags: , ,
15

Agrandissement bilinéaire: Le retour

juil

Il y a quelques temps j’avais proposé un algorithme d’interpolation bilinéaire permettant l’agrandissement d’une image dont les performances quoique correctes m’avaient un peu déçues.

J’ai finalement trouvé une solution pour booster significativement la performance de l’algorithme.
Mais le plus intéressant est sans doute la technique en elle-même, qui permet de coupler les deux unités de calculs que sont l’ARM et NEON

more...
 | Tags: ,
20

A simple NEON optimization method

juin

This post is a translation of “Méthode simple d’optimisation de code NEON

Since I discovered NEON, I had the opportunity to encode several small programs to test the beast.
NEON really is one of the highlights of Cortex. Its use is really simple, the big amount of registers and its instructions with 3 registers make its usage easier than on other processors.
Highly pipelined, the order of instructions is quite significant.
Whichever program you will achieve with NEON, you rarely falls on the optimal version of its implementation the first time. Finally, once you have pipelined at best, there is a last small optimization that allows almost every time to gain a few more cycles …

more...
 | Tags: ,
19

Méthode simple d’optimisation de code NEON

juin
1 Comment »   Posted by Etienne SOBOLE |  Category:ARM, Assembleur, Code

Depuis que j’ai découvert NEON, j’ai eu l’occasion de coder plusieurs petits programmes pour tester un peu la bête.
NEON est vraiment l’un des points fort des Cortex. Son utilisation est vraiment simple, son nombre important de registres et ses instructions à 3 registres rendent sa programmation en assembleur plus facile que sur d’autre processeurs.
Fortement pipeliné, l’ordre des instructions est assez important.
Quelque soit le programme que vous allez réaliser avec NEON, vous tomberez rarement sur la version optimale de son implémentation du premier coup. Au final, une fois que vous avez tout pipeliné au mieux, il reste une petite optimisation qui permet quasiment à chaque fois de gagner encore quelques cycles…

more...
 | Tags: ,
25

Bilinear enlarge with NEON

mai

This post is a translation of “Agrandissement bilinéaire avec NEON

Between two versions of the cycle counter, I felt like a little fun with an exercise a little more playful.
So today, a small stop in the field of image processing … activity where normally, NEON is expected to excel.

more...
 | Tags: ,
25

Agrandissement bilinéaire avec NEON

mai

Entre deux version du compteur de cycles, j’ai eu envie de m’amuser un petit peu avec un exercice un peu plus ludique.
Donc aujourd’hui, petit halte dans le domaine du traitement d’images… domaine où normalement, NEON est supposé exceller.

more...
 | Tags: ,
30

In the bowels of NEON

mar

This post is a translation of “Dans les entrailles de NEON

By performing some tests on NEON operations, I realized that I spent next to a super important thing when I realized the cycle counter.
I assumed (wrongly) that NEON (and VPf) used the same pipelines as the ARM but different functional units.
In reality, the cortex do not works like that and it makes the cycle counter a bit more complex to correctly count a NEON code.

more...
 | Tags: ,
30

Dans les entrailles de NEON

mar
3 Comments »   Posted by Etienne SOBOLE |  Category:ARM, Assembleur, Code

En réalisant quelques tests sur les opérations NEON, je me suis rendu compte que j’étais passé à coté d’un truc hyper important lorsque j’ai réalisé le compteur de cycles.
En fait j’ai supposé (à tord) que NEON (et VPf) utilisaient les mêmes pipelines que l’ARM mais des unités fonctionnelles différentes.
En réalité, ce n’est pas du tout comme çà que le Cortex fonctionne et ça rend un peu plus complexe le comptage réel des cycles.

more...
 | Tags: ,