Return to search

Mc2For: a MATLAB to Fortran 95 complier

MATLAB is a dynamic numerical scripting language widely used by scientists, engineers and students. While MATLAB's high-level syntax and dynamic types make it ideal for fast prototyping, programmers often prefer using high-performance static languages such as FORTRAN for their final distribution. Rather than rewriting the code by hand, our solution is to provide a source-to-source compiler that translates the original MATLAB program to an equivalent FORTRAN program.In this thesis, we introduce MC2FOR, a source-to-source compiler which transforms MATLAB to FORTRAN and handles several important challenges during the transformation, such as efficiently estimating the static type characteristics of all the variables in a given MATLAB program, mapping numerous MATLAB built-in functions to FORTRAN, and correctly supporting some MATLAB dynamic features in the generated FORTRAN code.This compiler consists of two major parts. The first part is an interprocedural analysis component to estimate the static type characteristics, such as the shapes of the arrays and the ranges of the scalars, which are used to generate variable declarations and to remove unnecessary array bounds checking in the translated FORTRAN program. The second part is an extensible FORTRAN code generation framework automatically transforming MATLAB constructs to equivalent FORTRAN constructs.This work has been implemented within the McLab framework, and we evaluated the performance of the MC2FOR compiler on a collection of 20 MATLAB benchmarks. For most of the benchmarks, the generated FORTRAN program runs 1.2 to 337 times faster than the original MATLAB program, and in terms of physical lines of code, typically grows only by a factor of around 2. These experimental results show that the code generated by MC2FOR performs better on average, at the cost of only a modest increase in code size. / MATLAB est un langage de script dynamique très utilisé par les scientifiques, les ingénieurs et les étudiants. La syntaxe de haut niveau et le typage dynamique de MATLAB en font un langage idéal pour faire du prototypage rapide, mais les programmeurs préfèrent souvent utiliser des langages statiques performants comme FORTRAN pour la distribution finale. Au lieu de réécrire le code à la main, notre solution est de proposer un compilateur qui traduit le programme MATLAB original vers un program FORTRAN équivalent.Dans cette thèse, nous introduisons MC2FOR, un compilateur qui transforme MATLAB vers FORTRAN et surmonte plusieurs difficultés importantes rencontrées durant la transformation, dont celles d'estimer efficacement le type statique de toutes les variables dans un programme MATLAB donné, de trouver une correspondance pour les nombreuses fonctions intégrées de MATLAB vers FORTRAN et de supporter correctement quelques caractéristiques dynamiques de MATLAB dans le code FORTRAN généré.Le compilateur est constitué de deux parties majeures: la première partie est une analyse interprocédurale qui estime des caractéristiques du type statique, comme la forme des tableaux et les limites des scalaires, qui sont utlilisées pour générer des déclarations de variables et pour supprimer les vérifications de limite de tableaux inutiles dans le programme FORTRAN généré. La deuxième partie est un framework de génération de code extensible qui transforment utomatiquement des constructions de MATLAB vers des constructions de FORTRAN équivalentes.Ce travail a été implementé dans le framework McLab, et nous avons évalué les performances du compilateur MC2FOR sur une collection de 20 programmes MATLAB. Pour la plupart des programmes, le programme FORTRAN généré s'éxécute entre 1.2 et 337 fois plus rapidement que le programme MATLAB original, et en termes de lignes de code, grandit seulement par un facteur de deux. Ces résultats expérimentaux démontrent que MC2FOR est en mesure de générer du code qui performe mieux en moyenne que l'original sans pour autant augmenter de trop sa taille.

Identiferoai:union.ndltd.org:LACETR/oai:collectionscanada.gc.ca:QMM.123271
Date January 2014
CreatorsLi, Xu
ContributorsLaurie Hendren (Internal/Supervisor)
PublisherMcGill University
Source SetsLibrary and Archives Canada ETDs Repository / Centre d'archives des thèses électroniques de Bibliothèque et Archives Canada
LanguageEnglish
Detected LanguageFrench
TypeElectronic Thesis or Dissertation
Formatapplication/pdf
CoverageMaster of Science (School of Computer Science)
RightsAll items in eScholarship@McGill are protected by copyright with all rights reserved unless otherwise indicated.
RelationElectronically submitted theses

Page generated in 0.0022 seconds