HN user

mlubin

239 karma
Posts8
Comments18
View on HN

I remember when using download statistics was enough.

No download statistics are currently available for Julia packages. That's essentially the issue that the Pkg.jl telemetry is trying to address.

To follow up on this, a lot of the overhead from reverse-mode AD can be avoided by flattening out the expression graphs and compiling specialized functions (at runtime). A number of the JuliaDiff packages support this approach. This is not a new idea, but Julia's hooks to LLVM make this surprisingly easy to do.

Julia 0.2 released 13 years ago

For anyone interested in using Julia for numerical optimization/mathematical programming, see http://juliaopt.org/.

We have pure-Julia implementations of standard unconstrained methods [1] as well as a domain-specific modeling language [2] for (integer) linear programming with links to open-source and commercial solvers. Julia's performance and advanced language features such as metaprogramming really make it a great language for optimization [3].

[1] https://github.com/JuliaOpt/Optim.jl

[2] https://github.com/JuliaOpt/JuMP.jl

[3] http://www.mit.edu/~mlubin/juliacomputing.pdf

That's a good tip in general, but it's mostly aimed at addressing type instability. For example, if you have

   x = 1
   f(x)
   x = "foobar"
   f(x)
then each call to f will be optimized for the current type of x. On the other hand, if your code is type stable, as it appears to be here, it will be properly optimized in place by the Julia JIT compiler and there's no need split it into separate functions.