Accélération de codes MATLAB de traitement des données de senseurs radar et optronique

par Patryk Kiepas

Projet de thèse en Informatique temps réel, robotique et automatique - Fontainebleau

Sous la direction de Claude Tadonki, Jaroslaw Kozlak et de Corinne Ancourt.

Thèses en préparation à Paris Sciences et Lettres en cotutelle avec l'AGH University of Science and Technology , dans le cadre de Ingénierie des Systèmes, Matériaux, Mécanique, Énergétique , en partenariat avec Mathématiques et Systèmes (laboratoire) , CRI - Centre de Recherche en Informatique (equipe de recherche) et de École nationale supérieure des mines (Paris) (établissement de préparation de la thèse) depuis le 01-12-2015 .


  • Résumé

    MATLAB est un environnement de calcul scientifique dont l'usage est très répandu dans la communauté scientifique et dans l'industrie de pointe. Du point de vue du programmeur, le principal avantage qu'offre le langage associé, aussi dénommé MATLAB, est sa relative simplicité. Cette simplicité, essentiellement due à la proximité syntaxique entre les instructions et les calculs mathématiques souhaités d'une part, et à la grande flexibilité du typage des variables d'autre part, réduit les délais de mise en oeuvre et facilite le débogage. Les industriels parlent alors de 'time-to-demo'. Toutefois, MATLAB est un langage interprété, ce qui est le principal handicap à sa vitesse d'exécution comparée à ce qu'on peut obtenir avec des langages compilés tels que C ou FORTRAN. Dans un environnement industriel, il est pertinent d'envisager des méthodes d'accélération des codes MATLAB en profitant du contexte. Les applications de traitement des données de senseurs radar et optronique comportent des particularités dont on peut tirer profit dans le cadre de l'optimisation. Tout d'abord, parce que ces applications effectuent des traitements qui sont fortement répétitifs et donc de très bons candidats à la vectorisation et à la parallélisation. De plus, les structures de données utilisées par les fonctions bien que complexes contiennent des tableaux. Des transformations au sein de ces structures peuvent être nécessaires pour permettre une exécution efficace du code par les compilateurs MATLAB. Dans le cadre de cette thèse, tous ces travaux sont spécifiques à la classe d'applications de traitement des données « radar et optronique », écrites en MATLAB, qui combinent des tableaux et des structures de données complexes. Ils visent à fournir un préprocesseur permettant d'optimiser l'utilisation des outils développés par MathWorks et non à les concurrencer. Plusieurs pistes seront explorées dont celle de la vectorisation et celle de l'adéquation entre les accès aux données et l'organisation de ces dernières. La vectorisation dans MATLAB consiste à remplacer les boucles de calculs par des expressions algébriques macroscopiques correspondantes. Ce faisant, la boucle en question devient implicite et son exécution a lieu dans le mécanisme interne de MATLAB. L'accélération observée par ce type de transformation est d'autant plus importante que la gestion des boucles sous MATLAB induit un surcoût très significatif. De plus, une boucle implicite peut aboutir à un codage qui fait appel à de librairies optimisées, parallélisées et/ou vectorisées via des instructions SIMD explicites. Le but du travail demandé ici est d'écrire un outil capable d'effectuer la vectorisation de manière automatique là où c'est possible. Il y aura donc en premier lieu un travail de parsing, suivi éventuellement des transformations de boucle dont le but serait de faciliter la vectorisation ou de séparer les parties vectorisables de celles qui ne le sont pas. Par ailleurs, la vectorisation peut être partielle, c'est à dire ne porter que sur des sous-tableaux. Il faudra donc convenablement les détecter et effectuer les transformations correspondantes. Pour ce qui est de l'adéquation entre les accès aux tableaux et la structuration de ceux-ci, on peut citer le cas classique d'un accès en ligne alors que la matrice concernée est stockée par colonne. La prise en compte de cet aspect qui concerne principalement la mémoire cache peut conduire à changer l'ordre des itérations. Dans certains cas, il peut être préférable de changer plutôt l'organisation des données dans le tableau, ce qui peut se faire en utilisant des routines de réorganisation des données de MATLAB. Un autre aspect qui concerne les outils de compilation associés à MATLAB est la compatibilité des codes en entrée avec les exigences ou limitations relatives aux types de données. Il peut donc s'avérer indispensable de restructurer les données et par conséquent adapter les instructions concernées. Ici aussi, on recherche un mécanisme systématique d'analyse et de transformation. Un des objectifs de la thèse sera d'identifier les règles d'écriture de programmes radar et optronique qui permettent aux outils de compilation, associés à MATLAB, de générer un code efficace sur une architecture parallèle. Puis il s'agira d'étudier et de développer les techniques permettant de transformer la classe de programmes « radar et optronique » de manière automatique pour qu'ils respectent ces règles d'écriture. Les verrous technologiques suivants seront abordés : - l'identification des critères algébriques permettant une vectorisation d'une boucle et les opérateurs de transformation correspondants, qui reste un problème difficile en MATLAB, - l'étude des transformations de boucle dont l'application rendrait possible ou faciliterait la vectorisation, - la gestion du typage flexible et dynamique dans l'analyse sémantique des instructions qui tiendra compte des structures particulières des programmes « radar et optronique », - l'évaluation du gain potentiel de la vectorisation en fonction du contexte d'exécution.

  • Titre traduit

    Systematic Acceleration of Radar and Optronics MATLAB applications


  • Résumé

    MATLAB is a technical computing environment widely used by the scientific community and by the cutting-edge industry as well. From the programmer standpoint, the main advantage offered by the associated language, also called MATLAB, is its relative simplicity. Indeed, MATLAB instructions are very close to the corresponding mathematical calculations, and its data types are very flexible which reduces the programming effort, simplifies the debugging steps and leads to shorter 'time-to-demo' than with static languages. However, MATLAB is an interpreted language, which characteristic is its main drawback concerning the runtime performance compared to compiled languages such as C and FORTRAN. In the context of an industrial activity, it is really appropriate to consider MATLAB codes acceleration methods and tools, to reduce the execution time while preserving the main strong points of MATLAB : simplicity and flexibility. Radar and Optronics applications follow a suitable programming pattern for systematic optimization techniques. Indeed, these applications implement regular and repetitive processing. They are therefore very good candidates for automatic vectorization and parallelization. In this thesis proposal, we mainly focus on industrial Radar and Optronics applications written in MATLAB, because they operate on large arrays of complex data structures. The aim is to provide a methodology for systematic MATLAB code transformations together with additional tools associated to MathWorks libraries and modules. Different ways will be explored including algebraic vectorization, data layout transformations, and data access patterns optimization. Vectorization in MATLAB consists in replacing explicit loops by their corresponding macroscopic algebraic expressions. By doing so, the loop becomes implicit and its execution is performed by internal MATLAB mechanism. The speedups observed using this type of transformation are particularly important because the management of explicit loops in MATLAB induces a very significant overhead, especially with older releases of the environment. In addition, an implicit loop may directly benefit from highly optimized built-in libraries, which are parallelized and vectorized for some of them. The goal of this thesis is to write a tool that can automatically perform the expected algebraic vectorization whenever and wherever possible in Radar and Optronics applications. The first step is to develop a parser, possibly followed by some loop transformations whose purpose could be to facilitate the vectorization task and to distribute a given loop so as to isolate its vectorizable part. Moreover, the vectorization might be partial, means applied on sub-arrays or a given chunk of a loop. This requires to detect properly the aforementioned cases and perform the corresponding transformations. With regards to the data access patterns, we can mention the traditional case where row-major accesses are performed on a matrix that is stored in a column-major way. This is related to the cache memory efficiency and can require some loop interchange to modify the iteration order. In some cases, it might be even better to change the data layout, which can be done using MATLAB built-in routines for dynamic data reshaping. Another aspect regarding the compilation tools associated with MATLAB is the compliance of the input code with the structural requirements or the functional limitations related to data types. It might therefore be necessary to restructure the data and to adapt the relevant instructions. Here again, we are looking for a systematic mechanism for analyses and transformations. Another objective of this thesis is to identify the writing rules of Radar and Optronics programs that allow the compilation tools to generate efficient code on a parallel architecture. The next task will be to study and develop appropriate techniques to automatically transform legacy codes accordingly. The following challenges will be addressed in the specific framework of Radar and Optronics applications: a. Identification of the algebraic criteria for loop vectorization and implementation of the corresponding automatic transformations, b. Investigation of MATLAB loop transformations whose application could make possible or facilitate algebraic vectorization, c. Dynamic management of data type flexibility in MATLAB programs, taking into account the specificity of data types in Radar and Optronics applications d. Definition of a platform dependent cost model to estimate the gain of the algebraic vectorization.