【问题标题】:How to run multiple julia files parallel?如何并行运行多个 julia 文件?
【发布时间】:2017-01-04 15:49:36
【问题描述】:

我有一个非常简单的问题,但我似乎无法在任何地方找到答案。我想使用 Julia 终端并行运行两个 .jl 文件。 我试过 include("file1.jl" & "file2.jl") 和 include("file1.jl") & include("file2.jl") 但这不起作用。

【问题讨论】:

  • 你到底想完成什么?
  • 我想在我的 cpu 的不同内核上并行运行两个不同的程序
  • 是否有令人信服的理由从 Julia REPL 运行它?你能简单地从命令行运行它吗?
  • 是的,我想这也行。在命令行中,我可以将它们与“&”结合起来?
  • 是的,如果您正确安排它们。看我的回答

标签: julia


【解决方案1】:

我不确定你到底想做什么,但如果你想在 julia 终端的两个不同工作人员上运行这两个文件,你可以例如

addprocs(1) # add a worker
pmap(include,["file1.jl", "file2.jl"]) # apply include to each element 
                                       # of the array in parallel

但我很确定会有更好的方法来做任何你想做的事情。

【讨论】:

  • 感谢您的回复。在这种情况下,工人是什么?
  • 我尝试了您的解决方案。问题是这两个程序不是在不同的工作人员上并行运行,而是一个接一个地运行。
  • 那是因为addprocs(1)添加了1个worker只尝试添加2个worker。
  • 但是对于您想要做的事情来说,从 cmd 行同时运行它们看起来会更明智?
  • 感谢您的回复。是的,我想命令行可能更简单。我不知道这也是可能的。
【解决方案2】:

虽然您可能会将您的代码纳入 Julia 并行计算范例,但似乎最简单的解决方案是从命令行执行您的 Julia 脚本。在这里,我假设您愿意让 CPU 处理任务调度,这可能会或可能不会导致并行执行。

下面是一个框架管道,可帮助您入门。将task.jl 替换为您的file1.jlfile2.jl 等。

task.jl

println("running like a cheetah")

run_script.sh

echo `date`
julia task.jl
julia task.jl
echo `date`

run_script_parallel.sh

echo `date`
julia task.jl &
julia task.jl &
wait # do not return before background tasks are complete
echo `date`

从命令行,确保您的 BASH 脚本是可执行的:

chmod +rwx run_script.sh run_script_parallel.sh

现在尝试运行脚本。请注意,我的示例 Julia 脚本 task.jl 几乎立即返回,所以这个特殊的比较有点傻:

./run_script.sh
./run_script_parallel.sh

我的输出

Thu Jan 5 14:24:57 PST 2017
running like a cheetah
running like a cheetah
Thu Jan 5 14:24:57 PST 2017

Thu Jan 5 14:25:05 PST 2017
running like a cheetahrunning like a cheetah

Thu Jan 5 14:25:06 PST 2017

第一个输出以干净的串行顺序对打印语句进行排序。但是在第二种情况下观察文本是一起运行的。这是并行打印语句的常见行为。

【讨论】:

    猜你喜欢
    • 2014-04-10
    • 1970-01-01
    • 1970-01-01
    • 2021-07-05
    • 2023-04-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多