Groups 15 of 99+ julia-users › Your experiences with Julia's parallel computing 4 posts by 3 authors Joost Vissers Apr 7 Hello everyone, Recently I got introduced to Julia due to a research project with regards to its educational capabilities for teaching students about parallel computing. My group and I are wondering what you, the community, think of Julia’s parallel computing capabilities and would like to ask you the following questions: What is the main reason that you started using Julia? Have you used Julia’s parallel computing aspects? What did you use for parallel programming before using Julia and how do they compare? What made you switch? If applicable. Would you say Julia’s approach to parallel computing is special or unique in any way? Could you elaborate? Lastly do you believe Julia is a suitable language to teach students about parallel programming? Could you elaborate? Our group and I would like to thank you in advance, and wish you a pleasant day. Joost michae...@gmail.com Apr 7 What is the main reason that you started using Julia? Free, fast, works on all popular operating systems, so good for teaching and portability of research Have you used Julia’s parallel computing aspects? Yes, but I mostly use the MPI.jl package. What did you use for parallel programming before using Julia and how do they compare? The MPI package for GNU Octave. Using MPI with Julia is very much like MPI with Octave. What made you switch? If applicable. Julia is faster, and I like the language better overall. Would you say Julia’s approach to parallel computing is special or unique in any way? I don't actually use the real "Julian" methods, as I'm familiar with MPI, which works well for me. Could you elaborate? Lastly do you believe Julia is a suitable language to teach students about parallel programming? Could you elaborate? Sure, it's a comfortable way to use MPI, at least. I expect that the other methods are good too, but I don't have much experience with them. Chris Rackauckas Apr 7 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. Joost Vissers Apr 12 I want to thank you both for taking the time to answer the questions, it is greatly appreciated! Joost. - show quoted text -