Solving Partial Differential Equations with Julia


Here is a talk from JuliaCon 2018 where I describe how to use the tooling across the Julia ecosystem to solve partial differential equations (PDEs), and how the different areas of the ecosystem are evolving to give top-notch PDE solver support.

Why Numba and Cython are not substitutes for Julia


August 6 2018 in Julia, Programming | Tags: | Author: Christopher Rackauckas

Sometimes people ask: why does Julia need to be a new language? What about Julia is truly different from tools like Cython and Numba? The purpose of this blog post is to describe how Julia’s design gives a very different package development experience than something like Cython, and how that can lead to many more optimizations. What I really want to show is:

  1. Julia’s compilation setup is built for specialization of labor which is required for scientific progress
  2. Composition of Julia codes can utilize the compilation process to build new programs which are greater than the sum of the parts

I will also explain some of the engineering tradeoffs which were made to make this happen. There are many state-of-the-art scientific computing and data science packages in Julia and what I want to describe is how these are using the more “hardcore … READ MORE

DifferentialEquations.jl’s Confederated Modular API


I wrote a manuscript describing DifferentialEquations.jl’s confederated modular API and its effect on the local scientific computing ecosystem. It’s now on Arxiv until we can find the right venue for it.

Simulation and Control of Biological Stochasticity


Yesterday I defended my PhD thesis entitled “Simulation and Control of Biological Stochasticity”. Here’s the recording:

Intro to solving differential equations in Julia


March 5 2018 in Uncategorized | Tags: | Author: Christopher Rackauckas

I did a livestream tutorial for solving differential equations in Julia and thought I should archive this in my blog. I hope this is interesting.

Using Juno for Interactive Test-Driven Julia Package Development


February 19 2018 in Julia, Programming | Tags: | Author: Christopher Rackauckas

I found myself explaining my development workflow all of the time, so I thought I’d show it in a video. This is some of the stuff I do. You can do it other ways. I like this way.

Algorithm efficiency comes from problem information


This is a high level post about algorithms (especially mathematical, scientific, and data analysis algorithms) which I hope can help people who are not researchers or numerical software developers better understand how to choose and evaluate algorithms. When scientists and programmers think about efficiency of algorithms, they tend to think about high level ideas like temporary arrays, choice of language, and parallelism. Or they tend to think about low level ideas like pointer indirection, cache efficiency, and SIMD vectorization. However, while these features matter, most decent implementations of the same algorithm tend to get quite close in efficiency to each other (probably <3x if everyone is using a performant enough programming language or constructs). If you're sitting down thinking "what is the next algorithm that I am going to invent that will be truly a step beyond what existed before?", ... READ MORE

Solving Systems of Stochastic PDEs and using GPUs in Julia


What I want to describe in this post is how to solve stochastic PDEs in Julia using GPU parallelism. I will go from start to finish, describing how to use the type-genericness of the DifferentialEquations.jl library in order to write a code that uses within-method GPU-parallelism on the system of PDEs. This is mostly a proof of concept: the most efficient integrators for this problem are not compatible with GPU parallelism yet, and the GPU parallelism isn’t fully efficient yet. However, I thought it would be nice to show an early progress report showing that it works and what needs to be fixed in Base Julia and various libraries for us to get the full efficiency.

Edit May 2019

As of DifferentialEquations.jl v6.4.0, this is no longer a proof of concept. The whole library, including implicit solvers with GMRES, etc., and … READ MORE

Some tips for your Google Summer of Code Application


November 13 2017 in Programming | Tags: | Author: Christopher Rackauckas

Google Summer of Code (GSoC) is a highly prestigious and rewarding opportunity for both students and the mentoring institution. Lots of people want to participate in GSoC, yet institutions are limited in who they can take. This means that applications are competitive. How do you break out of the pack?

I wanted to write this blog post because I believe there is a big gap between what students believe is important in an application and what is actually important in an application. This will be a very frank and straight to the point (but purposely pessimistic) explanation of why some things matter, and why some things don’t. What I would like to do is help you (some student) re-orient your thinking about application processes. While this is written for GSoC, this thought process definitely applies to things like graduate school … READ MORE

DifferentialEquations.jl 3.0 and a Roadmap for 4.0


I am pleased to announce the release of DifferentialEquations.jl 3.0. In the last DiffEq blog post I described the current state of JuliaDiffEq and DifferentialEquations.jl along with the trajectory that we hoped to take. We identified (at that time) current shortcomings of the software and our plans to remedy them. I also recently did a survey of differential equation suites in order to understand where we stand and see where we need to improve. These research efforts were used to put together a list of goals that were systematically achieved during 3.0. What I would like to do this time around is give a broad overview of what we have released in the 3.0 timeframe, the goals that we have achieved, and the goals that we are putting off (for next Google Summer of Code?). And then, … READ MORE