Many real-world managed (usually dynamic) programming languages, such as Matlab, R, OCaml, X10, Julia, as well as the NumPy Python library, are designed for scientists who use these languages for number crunching. Although Mu is not primarily designed for these applications, they should not be ruled out from the potential audiences. The current support in Mu for floating point (FP) numbers and big data is minimum. This topic will attempt to refine the design of Mu to be better suited for scientific computing.
The student will explore the topic from two ends: (1) From the lower level, the student will expore the hardware's support for FP number operations, including details such as rounding, exceptions, primitive math funcions (sqrt, sin, ...) and so on, and also explore the architectual details that affects big data, such as caches, memory bandwidth, and so on. (2) From the higher level, the student will explore how existing languages/libraries take care of these details, such as rounding, programming API, parallel programming model (such as finish-async, distributed computing, ...), and what lower-level mechanisms they expect.
In the end, the student will present his or her conclusions about two questions: (1) What part of scientific computing should NOT be done on Mu, but offloaded to native programs? And WHY? (2) If it should be done on Mu, is the current Mu design appropriate? If not, what modifications should be made to Mu?
If the topic is too big, the student can choose a smaller topic, such as "How can Mu support language XXX which does number crunching?" "How can Mu efficiently support big matrices/big graphs/big text corpus?" "Is Mu rich enough to support the finish-async model in X10?"
The student should have programmed in C/Java/Matlab/R/... to solve mathematical or data-processing problems. Knowledge about the IEEE754 standard, CPU architectures, vector instructions and GPUs is preferred.
micro virtual machines
high performance computing