Detecting SIMDization Opportunities through Static/Dynamic Dependence Analysis

Abstract

International audienceUsing SIMD instructions is essential in modern processor architecture for high performance computing. Compilers automatic vectorization shows limited efficiency in general, due to conservative dependence analysis, complex control flow or indexing. This paper presents a technique to detect SIMDization opportunities, complementing in a more detailed way compiler optimization reports. The method is based on static and dynamic dependence analysis, able to analyze codes not vectorized by a compiler. This method generates user-hints to help vectorize applications. We show on TSVC benchmark the benefits of this approach.L'utilisation des instructions SIMD est essentielle pour obtenir de bonnes performances de calcul sur les processeurs d'architecture moderne. La vectorisation automatique proposée par les compilateurs s'avère d'efficacité limitée en général, du fait d'une analyse de dépendances conservatrice, de flots de contrôle ou d'indices complexes. Cet article présente une technique de détection des opportunités de SIMDisation, complétant de façon plus détaillée les rapports d'optimisation des compilateurs. Cette méthode est basée sur l'analyse statique et dynamique conjointe des dépendances. Elle est capable d'analyser des codes non vectorisés par un compilateur. Cette méthode génère des suggestions à destination de l'utilisateur, afin de l'aider à vectoriser des applications. Nous montrons les bénéfices de cette approche sur le benchmark TSVC

    Similar works