TAMIDS Workshop
Texas A&M Univ.
10/25/22
Time | Content |
---|---|
25 min | Introduction to the Julia Programming Language |
25 min | The Julia SciML Ecosystem |
10 min | Break |
30 min | Hands-on session with Julia basics |
30 min | Hands-on session with SciML application |
julia> @code_llvm multiply(1, 1)
; @ REPL[1]:1 within `multiply`
define i64 @julia_multiply_660(i64 signext %0, i64 signext %1) #0 {
top:
; @ REPL[1]:2 within `multiply`
; ┌ @ int.jl:88 within `*`
%2 = mul i64 %1, %0
; └
ret i64 %2
@code_llvm
shows the processed script in intermediate presentation (IR).julia> @code_llvm multiply(2.0,2)
; @ REPL[1]:1 within `multiply`
define double @julia_multiply_208(double %0, i64 signext %1) #0 {
top:
; @ REPL[1]:2 within `multiply`
; ┌ @ promotion.jl:389 within `*`
; │┌ @ promotion.jl:359 within `promote`
; ││┌ @ promotion.jl:336 within `_promote`
; │││┌ @ number.jl:7 within `convert`
; ││││┌ @ float.jl:146 within `Float64`
%2 = sitofp i64 %1 to double
# Skip
ret double %3
}
Syntax is simple5
Extensibility
Fast
Julia is written mostly by Julia
Given \(x=[\alpha_1, \dots, \alpha_m]\). Derive \[\begin{equation} V_{m\times n} = \begin{bmatrix} 1 & \alpha_{1}^{1} & \dots & \alpha_{1}^{n-1}\\ 1 & \alpha_{2}^{1} & \dots & \alpha_{2}^{n-1}\\ \vdots & \vdots & \ddots & \vdots\\ 1 & \alpha_{m}^{1} & \dots & \alpha_{m}^{n-1} \end{bmatrix} \end{equation}\]
vander
Language | Flexibility | Performance |
---|---|---|
High-level (e.g. Python/Matlab) | Great | Bad |
Low-level (e.g. C/Fortan) | Bad | Great |
To develope an algorithm,
Given \(x=[\alpha_1, \dots, \alpha_m]\). Derive \[\begin{equation} V_{m\times n} = \begin{bmatrix} 1 & \alpha_{1}^{1} & \dots & \alpha_{1}^{n-1}\\ 1 & \alpha_{2}^{1} & \dots & \alpha_{2}^{n-1}\\ \vdots & \vdots & \ddots & \vdots\\ 1 & \alpha_{m}^{1} & \dots & \alpha_{m}^{n-1} \end{bmatrix} \end{equation}\]
*
method.Python | Julia 1 |
---|---|
Pandas | DataFrames.jl |
Matplotlib | Plots.jl |
SymPy | ModelingToolkit.jl |
Scipy | DifferentialEquations.jl/JuliaStats/… |
Scikit-Learn | MLJ.jl |
Tensorflow/Pytorch | Flux.jl |
Optimization | JuMP.jl/Optimization.jl |
\(\vdots\) | \(\vdots\) |