A fresh approach to Numerical Computing

Zachary Sunberg, Assistant Professor, AERO
Survey
Scientific computing is pretty good these days





Fast Development
Fast Execution


2011
2013



We love [Matlab, Lisp, Python, Ruby, Perl, Mathematica, and C]; they are wonderful and powerful. For the work we do — scientific computing, machine learning, data mining, large-scale linear algebra, distributed and parallel computing — each one is perfect for some aspects of the work and terrible for others. Each one is a trade-off.
We are greedy: we want more.
2012
Also ~2011: Improving TCAS






Julia solves the two language problem!
- as easy to read, write, maintain, and collaborate with as Python or MATLAB
- as fast as C
EASIER
FASTER
Be skeptical! Find out for yourself!
Others' perspective: https://web.mit.edu/18.06/www/Spring17/Julia-intro.pdf
Julia - Speed
Celeste Project
1.54 Petaflops


JuliaCon 2023 (EHT Tools in C++)
Not because Julia is somehow faster, but because it was easier to dev better algs




Julia - Speed

Julia - Speed
How does it work?
Speed: Just-in-time LLVM Compilation



Flexibility: Multiple Dispatch
- C++ and Python use single dispatch: methods belong to an object and are chosen based on that object's class
- Julia dispatches based on the types of all arguments. Methods do not belong to an object.
- Clean separation of data (structs) and algorithms (function)
- Unleashes code re-use (no import jax.numpy as np)

If Julia is so great, why doesn't everyone use it?

- There are downsides!
- Programmers do not always adopt the best language!
- In the game-theory section of the course, we will see that a population of agents each acting in their best interest can end up with arbitrarily bad outcomes.
Is Julia the best language for DMU?
- Maybe
- Julia is the best language for solving POMDPs
- Python is far more popular for Reinforcement Learning
015 Julia
By Zachary Sunberg
015 Julia
- 385