Mclab Members

Professors | Postdocs | PhDs | Masters | Undergraduates | Post Doc Alumni | PhD Alumni | Masters Alumni | Former Undergraduates |


    Prof. Laurie Hendren

    Projects  Projects Overview  |

    This is the fourth big compiler project I have led. In the past my research groups have worked on (i) optimizing/parallelizing C (McCAT), (ii) optimizing and analyzing Java (Soot); and a compiler toolkit for language extensions and optimizations for AspectJ (abc).

    Building on those previous experiences, McLab is an exciting new project where our goal is to bring together what we have learned about static optimizations, virtual machines, and extensible compiler frameworks to the domain of dynamic scientific languages. Our intent is to work with scientists to develop languages that provide good programming models and good execution performance.

    Prof. Clark Verbrugge

    Projects  Projects Overview  |

    I am a member of the Sable Research Group for compiler and computer language work, and GR@M for computer games research. I have also been involved with the development the McLab’s Virtual Machine.

    My main research areas include: (i) Compiler (and runtime) optimization, where I currently focus on Java, and have particular interests in concurrency in optimization, use of speculation, and practical information flow; (ii) concurrency, both in terms of compilation issues, and theoretical/linguistic models; and (iii)modern computer games which are woefully under-analyzed.



    Hanfeng Chen

    Hanfeng Chen's Webpage
    Projects  Mc2Mc  |

    I am a PhD student supervised by Professor Laurie Hendren. My research interests are in the field of compilers, program analysis and databases. I particularly like to explore array programming languages and combine array languages and in-memory databases. I learned my first array programming language APL, when I was a third year undergraduate. Later I wrote an APL dialect ELI. The experience on ELI motivated me to continue research in programming languages.

    Prabhjot Sandhu

    Prabhjot Sandhu's Webpage
    Projects    |

    Erick Lavoie

    Erick Lavoie's Webpage
    Projects  Pando  | Ostrich Benchmark Suite  |

    I am a PhD student in Computer Science, with a background in Computer Engineering. I am deeply interested in the leverage programming languages can provide to design complex human-computer systems to make us collectively more effective at solving the major problems of our era. My project aims at understanding the performance characteristics of modern virtual machines for high-level dynamic languages, such as JavaScript, first to design optimizations for efficiently compiling scientific languages to them, and then inform the evolution of their implementation for a better cooperation across layers.


    Alexander Krolik

    Projects    |

    Steven Thephsourinthone

    Projects    |

    Fabrice Anon

    Projects    |

    Faiz Khan

    Projects  Ostrich Benchmark Suite  |


    Hongji Chen

    Projects    |

Postdoc Alumni

    Guang Hu

    I’m a Postdoc in computer science at McGill University’s Sable research group. I received the Postdoctoral Fellowship Scholarship for his postdoctoral research at McGill from the Fonds de recherche du Québec - Nature et technologies (FRQNT) of the government of Quebec, Canada in 2013. My current project is to develop the compiler tools that can automatically compile Matlab code and generate equivalent optimized Java code and Android bytecode, so that the code can also be executed on the fast developing platforms for Java and Android. Thus, scientific programmers can make better use of these platforms to make their applications more open, more efficient and more compatible with various computing environment.

Phd Alumni

    Rahul Garg

    Projects  McVM & McJIT  | Velociraptor  | RaijinCL  |

    My thesis topic is compiling array-based languages to mixed CPU/GPU systems. I am reusable toolkit called Velociraptor for writing compilers for array-based languages to multi-cores and GPUs. Details can be found at here. The toolkit includes a code generator, a runtime system and an autotuning OpenCL matrix library called RaijinCL, all of which were written by me.

    Nurudeen Lameed

    Projects  McVM & McJIT  |

    Dynamic languages such as MATLAB pose significant performance challenges, but also present great opportunities for optimizations. The dynamic behavior of programs written in those languages may be exploited to guide optimizations that improve performance. I worked under the supervision of Professor Laurie Hendren in the area of virtual machines and dynamic compilation of MATLAB-like languages. In particular, I worked on techniques and tools for optimizing dynamic languages and building on work from the virtual machine and static compiler areas.

Masters Alumni

    Sujay Kathrotia

    Projects  McNumJS  | Ostrich Benchmark Suite  |

    I joined the lab in fall of 2013. I am interested in numerical computation in JavaScript. I am working on McNumJS which is an easy-to-use and high-performance JavaScript library for numerical computation. I also like to investigate performance issues in benchmarks. I have worked on McTicToc project, based on NodeJS and EmberJS which is an autometed benchmarks runner for McLab backends.

    Vincent Foley-Bourgon

    Projects  MatJuice  | Ostrich Benchmark Suite  |

    I joined the lab in 2013. I am interested in compilers, programming languages and type systems. For my masters, I am working on MatJuice, a backend for McLab that translates MATLAB code into JavaScript code: this project will allow scientists and engineers to distribute their work on the web to a much greater number of users. I am also one of the developers of the Ostrich benchmark suite.

    Sameer Jagdale

    Projects  VeloCty  |

    I joined the lab in the summer of 2013. I have completed my Bachelor’s in Information Technology from University of Pune (India). My interests include, compilers and programming to parallel architectures. I am currently working on the VeloCty project for my Master’s thesis. My non-academic interests include travelling to new places and reading books among others.

    Ismail Badawi

    Projects  McIDE  |

    I joined the lab in the fall of 2012. I’m interested in programmer tools; things like IDEs, static analyzers, automated refactoring tools, text editors… For my Master’s, I’m working on an IDE for MATLAB, with the theme of relying on dynamic information much more than static analysis.

    Andrew Bodzay

    Projects  AspectMatlab  |

    I joined the lab in fall semester of the year 2012, and my interest is mainly about AspectMatlab.

    Vineet Kumar
    Projects  MiX10  |

    My fascination with compilers started while writing a C decompiler for my undergrad project and after three years in industry I came to McGill for the master’s programme in Computer Science. Here I joined the Sable research group under the supervision of Professor Laurie Hendren to develop MiX10, a MATLAB to X10 compiler. MATLAB is an easy to use scientific program language and is widely used by scientists and engineers. On the other hand, X10 is an object-oriented, statically typed language specifically designed for high performance computing. The aim of MiX10 compiler is to help MATLAB users take advantage of the power of high performance computing, while still writing their programs in MATLAB.

    Xu Li

    Projects  Mc2For  |

    I joined the lab in winter semester of the year 2012, and currently I am working on static analysis of Matlab and designing a backend to convert Matlab to Fortran95.

    Matthieu Dubet

    Projects  McVM & McJIT  |

    I joined the lab in february 2012, and I have worked on implementing a small JIT compiler to efficiently handle loops in MATLAB.

    Amina Aslam

    Projects  McFlat  |

    I am working on Analysis and Transformation engine of McLab project under the supervision of Laurie Hendren. Analysis and Transformation engine computes dependence between loop statements and apply various loop transformations that could improve the performance of programs. In MatLab the loop bounds are mostly determined at run time,so the profiler component of analysis and transformation engine generates data for different runs of the program.The data is then passed to heuristic engine to estimate appropriate ranges for loops in the program. Dependence Analysis and transformations are applied on the estimated ranges. The focus of my thesis is to avoid expensive run time dependence analysis tests and do most of the computations at compile time.

    Toheed Aslam

    Projects  AspectMatlab  |

    I have developed the AspectMatlab as part of my masters thesis under the supervision of professor Laurie Hendren. AspectMatlab extends the base Natlab (Neat Matlab) language by introducing the aspect-oriented features. Besides the basic functions related patterns, AspectMatlab provides the array accesses and loops specific patterns, much to the needs of a scientific programmer. Currently, a beta version of AspectMatlab Compiler (amc) is available.

    Andrew Casey

    Projects    |

    I was one of the founding members of the McLab project and I created a large part of the front-end including the Natlab scanner and parser and the Matlab2Natlab converter. This work sparked my interest in composable compiler-generator tools. My M.Sc. thesis was the design and implementation of MetaLexer, a lexical analysis toolkit

    Maxime Chevalier-Boisvert

    Projects  McVM  |

    I have completed my masters thesis at McGill University under the supervision of professors Laurie Hendren and Clark Verbrugge. The focus of my thesis was the design and implementation of the McVM virtual machine and its optimizing JIT compiler. This JIT compiler features a type-driven just-in-time function specialization system designed specifically for MATLAB code.

    Jesse Doherty
    Projects  McSAF  |

    I started doing research as an undergraduate, both with the Sable group and also in other areas. During my M.Sc. studies I was one of the founding members of the McLab project. My main contributions are in the design and implementation of the McIR and analysis frameworks. However, I have also participated in the AspectMatlab project, designing the analysis which reduces weaving overhead.

    Anton Dubrau
    Projects  McFor  | Tamer  |

    I joined the McLab project as a summer undergraduate researcher and has continued on as a M.Sc. student. My main interest is in the McFor compiler, extending its functionality to cover as much of the MATLAB language as possible, and in the design of new language features. I have also contributed to the AspectMatlab project, designing various use cases for aspects in numerical computing.

    Jun Li
    Projects  McFor  |

    My M.Sc. thesis was the design and development of the first version of the Matlab-to-Fortran compiler.

    Soroush Radpour

    Projects  McVM  |

    At Mclab we are working on Matlab language as it is used by researchers extensively. I am working with a team of researchers from other universities on refactoring Matlab source codes. We are hoping that the resulting toolkit will help scientists to code and debug in Matlab faster.

Former Undergraduates

    Lei Lopez

    Projects  McTutorial  |

    I am a CS undergrad and I joined the Sable lab in the summer of 2014. I am currently working on McTutorial, an introduction to MATLAB with a focus on properly explaining the syntax and semantics from a CS point of view rather than teaching solely by example.

    Tristan Labelle

    Projects  McCli  |

    I have a deeply ingrained passion for programming, be it under the hat of the software engineer or of the computer scientist.I enjoy anything that poses an challenge, but have had the most fun with compilers, game development, GPU programming, security, networked systems and object-oriented design. McCli is a back-end component of the McLAB compiler targeting the .NET platform. It transforms code from a subset of the MATLAB language into statically typed .NET bytecode. It provides a path for integrating MATLAB scripts into existing .NET applications on Windows, MacOS X, Linux and even Windows Phone.

    Mohammed Sahibi

    Projects  Tamer+  |

    For the convenience of analyzing Matlab code and collecting information for later phase, tamer convert Matlab to a low level IR, tamerIR, almost three address code. This low level IR has many temporary variables and not very friendly human readable, so my project goal is trying to aggregate those simplified code back to a higher level IR and make them more human readable

    Olivier Savary Belanger
    Projects    |

    I joined the McLab project, just when it was starting, as a Brebeuf CEGEP intern in summer 2008, and then returned again in summer 2009. I have worked on benchmarks and the development of plotting functionality such that McVM can plot using GnuPlot.