Julia A fast dynamic language for technical computing Tim Besard 2013-06-18.
-
Upload
shanna-marshall -
Category
Documents
-
view
216 -
download
0
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.](https://reader035.fdocuments.us/reader035/viewer/2022072113/56649dfe5503460f94ae690e/html5/thumbnails/1.jpg)
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.](https://reader035.fdocuments.us/reader035/viewer/2022072113/56649dfe5503460f94ae690e/html5/thumbnails/2.jpg)
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.](https://reader035.fdocuments.us/reader035/viewer/2022072113/56649dfe5503460f94ae690e/html5/thumbnails/3.jpg)
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.](https://reader035.fdocuments.us/reader035/viewer/2022072113/56649dfe5503460f94ae690e/html5/thumbnails/4.jpg)
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.](https://reader035.fdocuments.us/reader035/viewer/2022072113/56649dfe5503460f94ae690e/html5/thumbnails/5.jpg)
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.](https://reader035.fdocuments.us/reader035/viewer/2022072113/56649dfe5503460f94ae690e/html5/thumbnails/6.jpg)
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.](https://reader035.fdocuments.us/reader035/viewer/2022072113/56649dfe5503460f94ae690e/html5/thumbnails/7.jpg)
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.](https://reader035.fdocuments.us/reader035/viewer/2022072113/56649dfe5503460f94ae690e/html5/thumbnails/8.jpg)
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.](https://reader035.fdocuments.us/reader035/viewer/2022072113/56649dfe5503460f94ae690e/html5/thumbnails/9.jpg)
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.](https://reader035.fdocuments.us/reader035/viewer/2022072113/56649dfe5503460f94ae690e/html5/thumbnails/10.jpg)
High interoperability
• No boilerplate philosophyt = ccall( (:clock, “libc”),
Int32,() )
![Page 11: Julia A fast dynamic language for technical computing Tim Besard 2013-06-18.](https://reader035.fdocuments.us/reader035/viewer/2022072113/56649dfe5503460f94ae690e/html5/thumbnails/11.jpg)
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.](https://reader035.fdocuments.us/reader035/viewer/2022072113/56649dfe5503460f94ae690e/html5/thumbnails/12.jpg)
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.](https://reader035.fdocuments.us/reader035/viewer/2022072113/56649dfe5503460f94ae690e/html5/thumbnails/13.jpg)
Tim Besard2013-06-18
A step towardsgeneral-purpose scientific computing
Julia
http://julialang.org http://github.com/JuliaLang