Estou correndo
julia --threads 4
Então os comandos
using Distributed
@time pmap(x->begin println(x); sleep(1); println(x); x end, 1:10);
eu recebo a saída
1
1
2
2
3
3
4
4
5
5
6
6
7
7
8
8
9
9
10
10
10.766960 seconds (2.50 M allocations: 140.642 MiB, 0.20% gc time, 6.88% compilation time)
O que indica claramente que isso está sendo executado em série. Por que o código não está sendo executado em paralelo?
O número de tarefas simultâneas é definido como
nworkers()
, que é um a menos quenprocs()
, o que não é baseado no número de threads, mas sim no número de processos com os quais Julia é iniciada, que pode ser definido com-p
ou--procs
.