That's pretty much it. Threads are shared memory, which have less overhead 
(and are thus faster), and can share variables between them. @parallel is 
multiprocessing, i.e. each worker process has its own set of defined 
variables which do not overlap, and data has to be transferred between 
them. @parallel has the advantage that it does not have to be local: 
different processes can be on completely different computers/nodes. But it 
has a higher startup cost and is thus better suited to larger 
parallelizable problems.

However, as Yichao states, @threads is still experimental. For one, since 
the memory is shared, you have have to make sure everything is 
"thread-safe" in order to be correct and not fail (example: two threads 
can't write to the same spot at once or else it can be non-deterministic as 
to what the result is). But also, the internals still have some rough 
edges. Just check out the repo for bug reports and you'll see that things 
can still go wrong, or that your performance can even decrease due to 
type-inference bugs. <https://github.com/JuliaLang/julia/issues/17395> Thus 
it is something to play around with, but it definitely isn't something that 
you should put into production yet (though in many cases it is already 
looking pretty good!).

On Tuesday, August 30, 2016 at 5:46:57 PM UTC-7, Andrew wrote:
>
> I have also been wondering this. I tried @threads yesterday and it got me 
> around a 4-fold speedup on a loop which applied a function to each element 
> in an array, and I conveniently didn't need to bother using SharedArrays as 
> I would with @parallel.
>
> On Tuesday, August 30, 2016 at 7:20:36 PM UTC-4, digxx wrote:
>>
>> Sorry if there is already some information on this though I didnt find 
>> it...
>> So: What is the difference between these?
>> I have used @parallel so far for parallel loops but recently saw this 
>> @threads all in some video and I was wondering what the difference is?
>> Could anyone elaborate or give me a link with some info?
>> Thanks digxx
>>
>

Reply via email to