JuliaCon2016: Recap of Sessions and Discussions
Table of Contents
- 1. JuliaCon2016
- 2. Actions
- 3. Wednesday Sessions
- 3.1. Fortress Features and Lessons Learned, Guy Steele
- 3.2. Gallium, Keno Fischer
- 3.3. Juno, a Julia IDE
- 3.4. Julia for data science: current progress and future plans, Simon Byrne
- 3.5. TypedTables: type-safe data containers, Andy Ferris
- 3.6. Music Information Retrieval in Julia, Jong Wook Kim
- 3.7. Using Julia as a Quick and Dirty Code Generator, Arch D. Robison
- 3.8. Automatic differentiation techniques used in JuMP, Miles Lubin
- 3.9. ForwardDiff.jl: Fast Derivatives Made Easy, Jarrett Revels
- 3.10. Enabling reverse communication solvers and embedding Julia, Andy Greenwell
- 3.11. Patterns for building web apps with Escher.jl, Shashi Gowda
- 3.12. Unums 2.0: Implementing projective intervals and sets in Julia, Jason Merrill
- 3.13. The design and use of extended precision floats, Jeffrey Sarnoff
- 3.14. Bounded Integers, David Hossack
- 4. Friday Sessions
- 4.1. Quantitative Macroeconomics, Tom Sargent
- 4.2. DSGE.jl – Using Julia for Economic Modeling at the Federal Reserve Bank of New York, Erica Moszkowski
- 4.3. A functional approach to High Performance Computing, Erik Schnetter
- 4.4. Network Algorithms Research in Julia, Huda Nassar
- 4.5. Swifter.jl : Scripting, REPL for iOS App development, WooKyoung Noh
- 4.6. PETSc.jl: Interfacing an enormous C sparse-matrix library, Jared Crean
- 4.7. jInv - A Flexible Julia Package for Parallel PDE Constrained Optimization, Lars Ruthotto
- 4.8. Accelerating Julia Kernels with ArrayFire, Ranjan Anantharaman
1. 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. "
2. 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
3. Wednesday Sessions
3.1. 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.
3.1.1. 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
3.1.2. 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 }
3.2. Gallium, Keno Fischer
3.2.1. Example: 1+2.0
using Galllium @enter 1.0+2
- Reviewed: s, bt, edit, nc, si
- @code_llvm @code_native
3.2.2. Example: plotting
3.2.3. 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
3.3. Juno, a Julia IDE
- workspace available with 0.5
- based off of Gallium changes
- code vs. exploration wih Notebook
3.4. 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
3.5. TypedTables: type-safe data containers, Andy Ferris
- DataFrames
- TypedTables
- GeneratedTypes
3.8. 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
3.9. 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
3.12. 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
3.12.1. 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
3.12.2. Tests
var g = function(x) { return 1 / (x + 3 - x - 3); }
3.13. 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
3.14. Bounded Integers, David Hossack
- standard examples of bit shifting and wrapping
4. Friday Sessions
4.6. 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