by Julius Donnert
In the last weeks, I've been busy developing the visualization infrastructure for 3D Wombat data in Julialang. We plan to use it for all our visualization and post processing, including Terabyte-sized snapshots on a cluster. Here is the 3D blob in a shock tube test visualized with less than 20 lines of Julialang:
Commonly, scientists use a low level language like C/C++ to compute projection maps or ray casted images from their simulations and then produce a graph or movie with a high level language like Python or IDL.
Here, Julialang enables us to solve this two language problem. For embarrassingly parallel problems, we skip the low level language entirely. Because Julialang is fast and node parallel, so it can process large amounts of 3D data on the fly. This increases productivity of the user dramatically, because debugging is much easier in a high level language than in C or Fortran.
Julialang makes the user "compiler aware", the language can show why simple Julia code is faster than simple Python or IDL code. Bachelor and master projects usually consist of running WOMBAT, followed by lots of post processing in a high level language. With its introspection abilities, Julialang allows us to introduce students to HPC concepts like vectorization and parallelism in a fun and easy way that does not require sifting through log files. Our visualization routines are already thread parallel (1 macro) and vectorize where possible (2 macros).
JD