The first day of JuliaCon 2018 consisted of a series of in-depth tutorials. The conference proper launches tomorrow. The venue is at the Roberts Building in UCL. As London is still baking in a heatwave I am rather glad that the lecture theatres are well air conditioned! AV facilities are rather good also. More highlights follow.

Tutorial: Introduction to Julia

Streamed here.

Jane Herriman from Julia Computing and Caltech delivered a well paced introduction to the language. One take-home which you should note is that Julia solves the Two Language Problem. When I worked with ASML I was told that their expert mechanical engineers working on the precision movements of semiconductor wafers within the litho machines would regularly code in Python. Once they had the algorithms working they way they wanted they would have to recode in C for speed. Julia makes this sort of Two Language work redundant.

Another thing to note about Julia is that it is almost completely written in Julia. There is no need to bring in C routines for speed. To paraphrase Terry Pratchett, it is Julia All the Way Down.

Looks like Python Feels like LISP Runs like C

Celeste Project: Julia in Practice

Jane also highlighted the Celeste Project - where Julia joined the Petaflop Club as the third member (C and FORTRAN being the first two), The Celeste Project analysed 178 Terabytes of data from the Sloan Digital Sky Survey on a NERSC supercomputer at Berkeley Lab. The project processed 188 million stars and galaxies using 1.3 million threads on 9300 Knights Landing Xeon Phi nodes at NERSC, reaching a peak of 1.54 Petaflops/second.


Julia has a very strong community, which is centered around the Julia Discourse forum

Introduction to Queryverse

Streamed here.

David Anthoff of UC Berkeley then gave a tutorial on the Queryverse - a complete integrated data science stack for Julia. David first introduced Voyager which is a complete data exploration lab for tabular data. He then went on to present data analysis workflows using Queryverse and the versatile Vega plotting package.

Queryverse ins modeled on Microsofts LINQ There are macros to filter, order (sort), map, group, flatten etc. Since these macros work with the named tuples introduced in Julia 0.7 they are applicable to a whole range of Julia data objects. David finished by commenting that there is a lot of potential for new backends e.g. SQL data sources and parallel/distributed queryverse workflows.

Machine Learning Workshop

Streamed here.

Denis Yuret delivered a deep dive into the Knet deep learning framework. One takeaway from this talk: Julia has a very rich type system. At run time you can create a new type which can be of a type suitable for processing by a CPU or a GPU, for example:

Atype = gpu() >= 0 ? KnetArray{Float32} : Array{Float32}

Here the ternary operator is used. If there is a GPU on the system then Atype is of the KnetArray type suitable for GPUs. If not then a 32 bit floating point array type is used. Then the training datasets are created using this type, for example:

dtst = minibatch(xtst,ytst,100;xtype=Atype)

To me, this means no more C-style #IFDEFS and compiling up different executables for GPU and non-GPU systems.


In summary this was an intense yet very satisfying day. During the day a third 0.7 series release candidate for Julia was announced.

Roll on tomorrow!

You have no rights to post comments


Login And Newsletter

Create an account to access exclusive content, comment on articles, and receive our newsletters.


This work is licensed under CC BY-NC-SA 4.0

©2005-2023 Copyright Seagrove LLC, Some rights reserved. Except where otherwise noted, this site is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International. The Cluster Monkey Logo and Monkey Character are Trademarks of Seagrove LLC.