Julia A fast dynamic language for technical computing Tim Besard 2013-06-18.

13
Julia A fast dynamic language for technical computing Tim Besard 2013-06-18

Transcript of Julia A fast dynamic language for technical computing Tim Besard 2013-06-18.

Page 1: Julia A fast dynamic language for technical computing Tim Besard 2013-06-18.

Julia

A fast dynamic languagefor technical computing

Tim Besard2013-06-18

Page 2: Julia A fast dynamic language for technical computing Tim Besard 2013-06-18.

Scientific programmingis done inefficiently

• Over 40 domain-specific computing environments– Low program interoperability– High programmer learning effort

• A general-purpose languagecould subsume these projects– Has happened before

Page 3: Julia A fast dynamic language for technical computing Tim Besard 2013-06-18.

Julia is a fresh approachto technical computing

• Free and Open-Source– Code at GitHub– MIT licensed

• Actively developed– 147 core contributors– 141 accepted packages– > 1000 mailing list-subscribers

Page 4: Julia A fast dynamic language for technical computing Tim Besard 2013-06-18.

Vision behind Juliamakes it stand out

• Familiar yet flexible

• Performance without compromises

• Easily extensible

• High interoperability

Page 5: Julia A fast dynamic language for technical computing Tim Besard 2013-06-18.

Familiar yet flexible

• Resembles other technicalcomputing environments

function randmatstat(t) n = 5 v = zeros(t) w = zeros(t) for i = 1:t a = randn(n,n); b = randn(n,n) c = randn(n,n); d = randn(n,n) P = [a b c d] Q = [a b; c d] v[i] = trace((P'*P)^4) w[i] = trace((Q'*Q)^4) end std(v)/mean(v), std(w)/mean(w)end

Page 6: Julia A fast dynamic language for technical computing Tim Besard 2013-06-18.

Familiar yet flexible

• Resembles other technicalcomputing environments

• Most functionality isolatedin the standard library– Unobtrusive– General-purpose core

Page 7: Julia A fast dynamic language for technical computing Tim Besard 2013-06-18.

Performance without compromises

• Typical compromise:use of low-level languages– Creates development barriers

• Julia offers high code-efficiency– Design decisions– LLVM JIT-compiler

Page 8: Julia A fast dynamic language for technical computing Tim Besard 2013-06-18.

Performance without compromises

fib parse_int quicksort mandel

0.1

1

10

100

1000

10000

Execution timerelative to C

Fortran

Julia

Python

MATLAB

Take this with a grain of salt:real-life performance can still let down

Page 9: Julia A fast dynamic language for technical computing Tim Besard 2013-06-18.

Julia is extensible

• Standard library written in Julia

• Dynamic environment

• Integrated package manager

Page 10: Julia A fast dynamic language for technical computing Tim Besard 2013-06-18.

High interoperability

• No boilerplate philosophyt = ccall( (:clock, “libc”),

Int32,() )

Page 11: Julia A fast dynamic language for technical computing Tim Besard 2013-06-18.

High interoperability

• No boilerplate philosophy– Reuse is easy– BLAS, LAPACK, SuiteSparse, …

• Built-in: C, Fortran• Contributed: Python, MATLAB

Page 12: Julia A fast dynamic language for technical computing Tim Besard 2013-06-18.

Try it out!

• Binaries available athttp://julialang.org

• Source available athttp://github.com/JuliaLang

Page 13: Julia A fast dynamic language for technical computing Tim Besard 2013-06-18.

Tim Besard2013-06-18

A step towardsgeneral-purpose scientific computing

Julia

http://julialang.org http://github.com/JuliaLang