2013-07-17 1 views
1

J'ai hérité d'un code c hautement optimisé (SSE4), mais non commenté. Existe-t-il des outils ou utilitaires qui convertissent les intrinsèques SSE en code plus lisible ou en pseudocode? Ce serait principalement pour la lisibilité afin que je puisse mieux comprendre le code avant de creuser et de faire des changements.Convertir les intrinsèques SSE en code C/C++ lisible?

+0

Cherchez ce que signifie alors dans le manuel de votre compilateur et écrivez-vous une feuille de triche de code standard équivalent? –

+0

Aucun outil AFAIK, mais le code SIMD a tendance à utiliser un petit nombre de "patterns" généraux, donc plus vous lisez et comprenez le code, plus il devrait être facile. Préparez-vous à dessiner beaucoup de diagrammes, particulièrement s'il y a des opérations de voisinage (par exemple traitement d'image, filtres 2D, etc.) - le papier millimétré aide. –

Répondre

2

Je ne connais aucun de ces outils.

Mais cela n'aiderait probablement pas beaucoup de toute façon. Si le code SSE est bien optimisé, la partie difficile ne décode probablement pas les intrinsèques. La partie difficile suit toutes les astuces pour améliorer la localité et éliminer les dépendances de données intra-itératives (stripmining, transformations de boucles polyédriques, etc.)

Je peux vous donner une suggestion pour l'avenir, cependant: Toujours avoir un scalaire bien commenté version de la même routine écrite de la manière la plus simple possible. Ce "code de référence" ne devrait porter que sur la lisibilité et la correction, pas sur la vitesse ... Il devrait donc avoir beaucoup d'assertions. Avoir également une suite de tests capable d'exercer à la fois la version scalaire et la ou les variantes optimisées.

Que ce soit en implémentant une routine pour la première fois ou en mettant à jour une routine existante, commencez toujours par le code de référence et la suite de tests. Pas nécessairement dans cet ordre.

Cette approche est plus coûteuse à l'avant, mais nettement moins chère à long terme.

+0

+1 pour une idée sur le "code de référence". La plupart du temps, je ne comprends pas mon propre code quand je le lis plus tard en raison d'une sur-optimisation. Un code de référence lisible résoudra ce problème, j'espère. –

Questions connexes