# Understanding distributed computing taxonomy

**URL:** <https://discourse.julialang.org/t/understanding-distributed-computing-taxonomy/45210>\
**Category:** General Usage\
**Tags:** question\
**Created:** [August 19, 2020, 2:28pm UTC](https://discourse.julialang.org/t/understanding-distributed-computing-taxonomy/45210 "2020-08-19T14:28:54Z")\
**Posts on this page:** 2\
**Page:** 1

<div class="post-metadata">

**Author:** ![Joao\_Barata](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/joao_barata/32/10082_2.png) [@Joao\_Barata](https://discourse.julialang.org/u/Joao_Barata)\
**Post date:** [August 19, 2020, 2:28pm UTC](https://discourse.julialang.org/t/understanding-distributed-computing-taxonomy/45210/1 "2020-08-19T14:28:54Z")

</div>

Hi,

I’m doing my first steps in terms of distributed computing and I was going through the distributed computing page in the julia [documentation](https://docs.julialang.org/en/v1/manual/distributed-computing/#Starting-and-managing-worker-processes-1). I’ve also done a bit of research into parallel computing in general.

The main barrier I have in understanding the julia section on multi-processing is the taxonomy in the text. I get the central point, expressed in the second paragraph: if you have N calculations and X “computers” (here computer might mean CPU, for example), you might be able to able to decrease runtime by assigning N/X calculation to each “computer”.

The trouble starts when words like “process”, “worker”, and “task” start popping up. I have no idea what is the difference between a “worker” and a “process”, nor how each of these relate to the hardware (CPU, CPU core, or logical processor). I have read up on intros to parallel computing more generally, but apparently, the definitions there can be fluid and depend on what language you are discussing.

A more concrete example of my predicament is: what does the addprocs function do exactly? My computer has 6 CPU cores and 12 logical processors. When I do addprocs(5) am I telling julia to set up network of 6 CPU cores? What is the difference between the info given by workers() and nprocs()?

Thanks

---

<div class="post-metadata">

**Author:** ![nilshg](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/nilshg/32/2283_2.png) [@nilshg](https://discourse.julialang.org/u/nilshg)\
**Post date:** [August 19, 2020, 4:15pm UTC](https://discourse.julialang.org/t/understanding-distributed-computing-taxonomy/45210/2 "2020-08-19T16:15:23Z")

</div>

`workers` are the processes doing the work, and are a subset of all processes, which are returned by `nprocs()`:

```julia
julia> using Distributed

julia> procs()
1-element Array{Int64,1}:
 1

julia> addprocs(2)
2-element Array{Int64,1}:
 2
 3

julia> procs()
3-element Array{Int64,1}:
 1
 2
 3

julia> workers()
2-element Array{Int64,1}:
 2
 3

```

So here process 1 is the “main” process that distributes the work to the worker processes 2 and 3.
