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!

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