>
>
>    - What is the main reason that you started using Julia?
>
> To more quickly develop code for HPCs. I do stochastic numerical methods 
in developmental biology. When I am making methods, I want to show that it 
works, get a relatively fast prototype, and move on (I'll let "library 
builders" build C libraries from this, too much time for me). When I am 
using the method to study biology, I just want it to work, get a result, 
and move on. Other languages required that I use C/Fortran to do this (I 
need the codes fast). Julia lets me do it fast and all in one language. 

Another big plus is that I love its type system. It allows for 
"data-oriented" programming which works really well for big data, and is 
fast. Objects in R/Python tend to be slow, and basically non-existent in 
MATLAB and so it's nice to be able to use data structures in the intuitive 
CS way. Also its package system via Github is really easy to use and since 
you know the code is all Julia code you can change packages around to fit 
your needs. I can keep going if you want lol.

>
>    - Have you used Julia’s parallel computing aspects?
>
> All the time. I documented some of it. Here's a tutorial I wrote for using 
Julia on XSEDE's Comet. 
http://www.stochasticlifestyle.com/multi-node-parallelism-in-julia-on-an-hpc/ 
. I have used it on UC Irvine's cluster and some other XSEDE computers as 
well. I have also used Julia with a Xeon Phi (on my blog) and also with 
GPUs (also on my blog). Its super easy to get it working.

>
>    - What did you use for parallel programming before using Julia and how 
>    do they compare? What made you switch? If applicable.
>
> MATLAB has licensing problems everywhere you go: you want to use it on an 
HPC, but you have to jump through hoops to do so. The end result isn't even 
good because the language is so slow that you're basically throwing 
computers at a slow code to hope it's fast enough. Python annoyed me with 
Global Interpreter Lock and having generally slow language features as 
well. In order to use it "correctly" for big data projects you have to use 
a bunch of packages to do it all in C, and write your own C code to 
compensate for things it can't do (and when writing your own stochastic 
numerical code is all about loop performance, this means the code is 
basically C). R had the same problem (but I liked that the statistical 
packages covered everything). I also used C with OpenMP and MPI but 
development times were slow...

Julia did all of that together and I haven't wanted to go back since. 

>
>    - Would you say Julia’s approach to parallel computing is special or 
>    unique in any way? Could you elaborate?
>
> To me it feels and operates like it's "OpenMP with MPI capabilities". 
Honestly I tend to setup my code to just @parallel or pmap and let the 
backend take care of it all. But doing that allows it to use multiple nodes 
on an HPC, so literally adding @parallel makes a program completely 
parallel in some of my cases (like Monte Carlo simulations). I don't think 
it really teaches one the "how" of the parallel/HPC computing like learning 
MPI does, but it gets the job done soooo much faster.

>
>    - Lastly do you believe Julia is a suitable language to teach students 
>    about parallel programming? Could you elaborate?
>
> I am on the fence for pedagogy via Julia. There are lots of in depth 
things about Julia. There's the LLVM, macros (generated functions), package 
system (understanding it's full use means you have to learn Git/Github, and 
in Julia's state that's pretty necessary since you need to change branches 
for many packages), type system (if someone's never done Object-oriented 
programming before, i find it confuses them but is really present and not 
hidden in the documentation), multiple dispatch, etc. For experienced 
programming, all of this stuff is right there to pick up and is easy to 
use. For beginners you have to tell them to ignore a lot of features when 
they want to learn how to loop (1:5 isn't an array, but it's like an array, 
and will index the loop just fine, trust me!). So honestly, there are 
easier languages like MATLAB for teaching at a beginner level, but with 
Julia you can go really deep.

Hope this post helps. My blog has a bunch of tutorials for doing 
HPC/parallel things in Julia. I may post some slides I'll be using to teach 
a Julia workshop as well.

Reply via email to