Apple nous vend encore du rêve avec l'auto vectorisation...

MalaMala Membre, Modérateur
décembre 2013 modifié dans Xcode et Developer Tools #1

J'avais un doute mais après quelques tests c'est confirmé. Ayant pour habitude d'optimiser certaines portions de code critiques avec des instructions SSE, je me suis amusé à  tester la vectorisation automatique de boucles dispo avec LLVM 5.0.


 


Les résultats sont sans appel: gain zéro.


 


Je ne suis d'ailleurs pas le seul à  constater la chose:


http://www.phoronix.com/scan.php?page=news_item&px=MTIxNjM


 


Alors quand je lis ce genre de choses sur la toile, cela me laisse perplexe...


 



 


Using these optimized instructions, Apple has seen a boost in execution speed of apps ranging from 15 to 30 percent. The LLVM compiler also better supports SIMD (single instruction, multiple data) instructions such as ARM's NEON and Intel's AVX2, which is in Intel's new Haswell CPU. The SIMD support enables the compiler to implement an autovectorizer, an optimization technique that translates certain compute-intensive loops into SIMD instruction sequences that operate on multiple chunks of data (instead of one) with each loop iteration. Depending upon the code, Apple saw performance boosts ranging from 1.5x to 7.9x.



 


Il faudra qu'on m'explique le facteur 8x au passage. Dans le meilleurs des cas, expérience à  l'appui,  on s'approche d'un facteur 4x. Ce qui est assez logique puisque les opérations arithmétiques sont exécutées par 4.


 


Au moins avec GCC, on savait que ça marchait pas...


Réponses

  • LeChatNoirLeChatNoir Membre, Modérateur

    Pourquoi tu dis "encore" ? Tu penses à  Maverick ?


     


    Parce que moi, Maverick, je l'ai installé sur des machines pas trop vieilles. Résultat, les utilisateurs se plaignent que ça rame...


     


    Alors forcément, quand on nous dit qu'il est optimisé...


  • MalaMala Membre, Modérateur

    Non, je pensais à  GCC où l'option d'auto vectorisation était déjà  présente alors qu'il n'y avait rien derrière.  B)


Connectez-vous ou Inscrivez-vous pour répondre.