朱莉娅的流程数量

Cha*_*ang 2 parallel-processing julia

我的本地机器上有一个四核CPU.如果我运行julia

julia -p 4
Run Code Online (Sandbox Code Playgroud)

并运行一个带并行计算的脚本,我的理解是:

  • 核心1:运行脚本和所有非并行计算+并行工作者1
  • 核心2:并行工作者2
  • 核心3:并行工作者3
  • 核心4:并行工作者4

它是否正确?

另外,如果我的进程多于核心数,会发生什么?例如

julia -p 8
Run Code Online (Sandbox Code Playgroud)

它是否像以下那样?

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

Ste*_*ski 5

除非您手动将工作人员与特定核心关联,否则该关联将是您的操作系统决定的任何内容,并且可能会随着时间的推


Dan*_*ndt 5

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

一般来说,调度程序可能会尽量让进程在同一个内核上运行,以避免上下文切换的成本增加。