Parallel processing Julia中的进程数

Parallel processing Julia中的进程数,parallel-processing,julia,Parallel Processing,Julia,我的本地机器上有一个四核CPU。如果我像其他人一样运行julia julia -p 4 在并行计算中运行脚本,我的理解是: 核心1:运行脚本和所有非并行计算+并行工作者1 核心2:并行工作者2 核心3:并行工作者3 核心4:并行工作者4 这是正确的吗 此外,如果我的进程数大于内核数,会发生什么情况?比如说 julia -p 8 是这样的吗 核心1:运行脚本和所有非并行计算+并行工作者1+并行工作者5 核心2:并行工作程序2+并行工作程序6 核心3:并行工作程序3+并行工作程序7 核心4

我的本地机器上有一个四核CPU。如果我像其他人一样运行
julia

julia -p 4
在并行计算中运行脚本,我的理解是:

  • 核心1:运行脚本和所有非并行计算+并行工作者1
  • 核心2:并行工作者2
  • 核心3:并行工作者3
  • 核心4:并行工作者4
这是正确的吗

此外,如果我的进程数大于内核数,会发生什么情况?比如说

julia -p 8
是这样的吗

  • 核心1:运行脚本和所有非并行计算+并行工作者1+并行工作者5
  • 核心2:并行工作程序2+并行工作程序6
  • 核心3:并行工作程序3+并行工作程序7
  • 核心4:并行工作程序4+并行工作程序8

除非您手动将工作线程与特定内核关联,否则关联将取决于您的操作系统的决定,并且可能会随着时间的推移而改变。

这是一个复杂的问题,但简而言之,它不是留给Julia的。由调度程序决定哪些资源执行工作。进程(worker)甚至可以切换核心(即worker 2可以在核心3上启动,然后在核心4上继续)。工作进程与处理器上的内核之间没有关系


一般来说,调度器可能会尽可能长时间地保持进程在同一个内核上运行,以避免上下文切换成本的增加。

Close
julia-p4
将启动4个工作进程。这意味着如果您运行
nprocs()
您将有5个。id为1的进程将指导计算,然后进程2-5将是执行并行计算的工作进程。