JuliaCon2016: Recap of Sessions and Discussions
Table of Contents
- JuliaCon2016
- Actions
- Wednesday Sessions
- Fortress Features and Lessons Learned, Guy Steele
- Gallium, Keno Fischer
- Juno, a Julia IDE
- Julia for data science: current progress and future plans, Simon Byrne
- TypedTables: type-safe data containers, Andy Ferris
- Music Information Retrieval in Julia, Jong Wook Kim
- Using Julia as a Quick and Dirty Code Generator, Arch D. Robison
- Automatic differentiation techniques used in JuMP, Miles Lubin
- ForwardDiff.jl: Fast Derivatives Made Easy, Jarrett Revels
- Enabling reverse communication solvers and embedding Julia, Andy Greenwell
- Patterns for building web apps with Escher.jl, Shashi Gowda
- Unums 2.0: Implementing projective intervals and sets in Julia, Jason Merrill
- The design and use of extended precision floats, Jeffrey Sarnoff
- Bounded Integers, David Hossack
- Friday Sessions
- Quantitative Macroeconomics, Tom Sargent
- DSGE.jl – Using Julia for Economic Modeling at the Federal Reserve Bank of New York, Erica Moszkowski
- A functional approach to High Performance Computing, Erik Schnetter
- Network Algorithms Research in Julia, Huda Nassar
- Swifter.jl : Scripting, REPL for iOS App development, WooKyoung Noh
- PETSc.jl: Interfacing an enormous C sparse-matrix library, Jared Crean
- jInv - A Flexible Julia Package for Parallel PDE Constrained Optimization, Lars Ruthotto
- Accelerating Julia Kernels with ArrayFire, Ranjan Anantharaman
JuliaCon2016
http://juliacon.org/schedule.html
"The third Julia conference will take place June 21st-25th, 2016 at the Massachusetts Institute of Technology in Cambridge, Massachusetts. "
Actions
- 0.4 changelog
- xdata, oore foundation
- distributed, high performance,
- check remaining work on 0.5 https://github.com/JuliaLang/julia/milestones/0.5.0
- what were the failures in CS education wrt the web in 1990
- what were the goals in college programs that emphasized C support for core algorithms
- what is the difference between expected work and education and does that drift create issues
- Automatic Differentiation http://alexey.radul.name/ideas/2013/introduction-to-automatic-differentiation/
- getLaplacian
- Jacobians
- Conjugate Gradient Methods for 2D Laplacian
- performance profiling for FP with allocation, memory, and time space
- http://quant-econ.net/jl/index.html
- Quantitative Economics translated to JavaScript
- https://www.manning.com/books/julia-in-action
Wednesday Sessions
Fortress Features and Lessons Learned, Guy Steele
https://en.wikipedia.org/wiki/Fortress_(programming_language)
Covered four of the 20 crazy programming ideas implemented in Forturs.
Exmaple: histogramWater
For an array of integers create a histogram, then let it rain on the histogram and find the volume of water.
- sum the volume of water for each item
- each item looks left and right to find the max
Features
- libraries
- symmetry
- whitespace
- preserve whiteboarded mathematics
- requires understanding the precedence of operators of all operators
- clear point: don't force yourself to have a parser define precendence built into a langage that would not be used consistently: use parenthesis and don't make it Facebook link-bait
- general big sigma and comprehension
- generators and reductions filter through the type system
- overloading with types- trait Boolean extends { Any } excludes { String }
Gallium, Keno Fischer
Example: 1+2.0
using Galllium @enter 1.0+2
- Reviewed: s, bt, edit, nc, si
- @codellvm @codenative
Example: plotting
Example: gcd
breakpoint(gcd) methods(gcd)
- Any of the calls to the types supported by calls
- macro expansion
- new error message from repl
- generator functions
Juno, a Julia IDE
- workspace available with 0.5
- based off of Gallium changes
- code vs. exploration wih Notebook
Julia for data science: current progress and future plans, Simon Byrne
- dataframes and integration with Python, R, Spark, GraphLab
- allocation of memory between sources
- switching to maps (without union operations)
- compound operations (filter then average) are greedy
TypedTables: type-safe data containers, Andy Ferris
- DataFrames
- TypedTables
- GeneratedTypes
Music Information Retrieval in Julia, Jong Wook Kim
Using Julia as a Quick and Dirty Code Generator, Arch D. Robison
Automatic differentiation techniques used in JuMP, Miles Lubin
https://github.com/JuliaDiff/ReverseDiffSource.jl
- nodes in memory can be a performance constraint
- billions of long-lived objects that would need GCC
- single vector of immutable objects
- register functions
ForwardDiff.jl: Fast Derivatives Made Easy, Jarrett Revels
https://github.com/JuliaDiff/ForwardDiff.jl
Example: you inherit a function where you can't symbolically
automatic differentation (AD)
df(x)/dx = lim h→0, f(x+h)−f(x)/ h
- central difference
lim h -> 0; f'(x) = f(x) + f(x + h) / h
- complex step method
- dual number method
Profiling:
f(x) = e^x / sqrt(sin^3(x) + cos^3(x))
- Jacobians: J(g)(f)
- Dual numbers: less, sin, * are implementation of chain rule and product rule
Test:
function cumprod end
- test the function: cumprod
cumprod(A[, dim]) Cumulative product along a dimension dim (defaults to 1). See also cumprod!() to use a preallocated output array, both for performance and to control the precision of the output (e.g. to avoid overflow).
- write the Jacobian
- create test of the input size
- provide the timing
- graph the error rates
Enabling reverse communication solvers and embedding Julia, Andy Greenwell
Patterns for building web apps with Escher.jl, Shashi Gowda
Unums 2.0: Implementing projective intervals and sets in Julia, Jason Merrill
https://www.crcpress.com/The-End-of-Error-Unum-Computing/Gustafson/p/book/9781482239867
- second version of an idea that's under active development
- good ideas that show issue
- ranges
- open and closed sets
- issues with 0 and -0
Universal numbers
- Superset of IEEE types,both 754 and 1788
- Integers->floats->unums
- No rounding, no overflow to ∞, no underflow to zero
- Projective infinity implies closed interval on interval arithmetic
Tests
var g = function(x) { return 1 / (x + 3 - x - 3); }
The design and use of extended precision floats, Jeffrey Sarnoff
- from 1986: always double the bit width
- float64 calculation with the LHC they would use double-doubles
- example: precision on non-precise items: lasers cutting tumors don't have the level of precision
- time is generally a better example
- risk is also not that precise: individual or organizational risk thresholds are likely a single order
- Q: continued taylo expansions
Bounded Integers, David Hossack
- standard examples of bit shifting and wrapping
Friday Sessions
Quantitative Macroeconomics, Tom Sargent
DSGE.jl – Using Julia for Economic Modeling at the Federal Reserve Bank of New York, Erica Moszkowski
A functional approach to High Performance Computing, Erik Schnetter
Network Algorithms Research in Julia, Huda Nassar
Swifter.jl : Scripting, REPL for iOS App development, WooKyoung Noh
PETSc.jl: Interfacing an enormous C sparse-matrix library, Jared Crean
- partial differential equations
- distributed memory vectors
- sparse matrices
- starts with Clang.jl: Petsc headers to Julia