Re:Composable multi-threaded parallelism in Julia
by gpderetta on Wednesday July 24, 2019 @07:10AM
(#20513960)
While extremely elegant and minimalistic, I do not think cilk ever gained much traction. GCC has deprecated it and is removing it. I think that OpenMP was too entrenched in the language extension space (and has since grown at least the potential of cilk like functionality), while more portable libraries (TBB for example) covered everything else.
I think it has been highly influential though.
Re:Composable multi-threaded parallelism in Julia
by scott_s on Wednesday July 24, 2019 @09:32AM
(#20515058)
Yes, Cilk has been enormously influential. I have personally cited it many times. But I always had the impression it was a little too early for its time, and was never picked up by the HPC community, hence my question.
Re:Composable multi-threaded parallelism in Julia
by minxomat on Tuesday July 23, 2019 @09:10PM
(#20511585)
Cilk maybe not, but TBB is just a library (or more accurately a toolbox of primitives), which integrates nicely with OpenMP: https://software.intel.com/en-us/node/506128
Re:Composable multi-threaded parallelism in Julia
by krapht on Tuesday July 23, 2019 @07:30PM
(#20511128)
The real gain is with MPI, anyway... shared memory is a trap. All the projects I've worked on have exploited parallelism through message passing, or a battle tested multithreaded linear algebra library.
Re:Composable multi-threaded parallelism in Julia
by BubRoss on Tuesday July 23, 2019 @08:26PM
(#20511383)
There are many techniques and calling any of them the one solution and all others a trap is extremely myopic. Shared memory is extremely useful for IPC and fork join parallelism.
Re:Composable multi-threaded parallelism in Julia
by gpderetta on Wednesday July 24, 2019 @05:58AM
(#20513642)
My understanding is that, at least in c/Fortran/c++ land common practice is openmp within a machine and MPI across machines. I've done some work of the sort but I'm far from an expert though.
Re:Composable multi-threaded parallelism in Julia
by steev on Wednesday July 24, 2019 @06:40AM
(#20513826)
You are correct.
Re:Composable multi-threaded parallelism in Julia
by vmchale on Tuesday July 23, 2019 @09:41PM
(#20511743)
> All the projects I've worked on have exploited parallelism through message passing
What? Lots of parallelism doesn't use message passing!
Re:Composable multi-threaded parallelism in Julia
by seanmcdirmid on Wednesday July 24, 2019 @12:50AM
(#20512439)
GPU is the way to go these days to get most parallelism, and it is definitely the shared memory variety. Message passing is the go to when parallelism needs to cross machine boundaries.
Re:Composable multi-threaded parallelism in Julia
by steev on Wednesday July 24, 2019 @06:42AM
(#20513835)
GPU parallelism is highly specialized and requires very specific workloads (e.g., many linear algebra workloads). GPUs are a bad choice for general parallelized tasks.
Re:Composable multi-threaded parallelism in Julia
by seanmcdirmid on Wednesday July 24, 2019 @02:00PM
(#20517835)
Yes, but for heavy numeric problems, GPUs are your best bet if you can make them work. The question is what is Julia being used for, I guess.
Re:Composable multi-threaded parallelism in Julia
by scott_s on Wednesday July 24, 2019 @04:34PM
(#20519363)
A quibble: it's not necessarily "heavy numeric" problems, but problems where the calculations involve extensive data-reuse. (Of which matrix operations are the most obvious.) The GPU is massively parallel, but the up-front cost of transferring data to the GPU is quite high.
Hence, in order for that up-front cost to be worth it, the algorithms run on the GPU need to re-use that data many times. If the algorithms running on the GPU don't make extensive reuse of the data sent to it, it would be faster to just do the calculation on the host CPU.
OpenMP, however, depends on not just compiler extensions, but pragmas, so it tends to not find traction outside of the HPC world.