Parallel processing 在Julia中结合使用自定义系统映像(来自PackageCompiler.jl)和MPI

Parallel processing 在Julia中结合使用自定义系统映像(来自PackageCompiler.jl)和MPI,parallel-processing,julia,mpi,packagecompiler.jl,Parallel Processing,Julia,Mpi,Packagecompiler.jl,我最近一直在为Julia(MPI.jl)使用MPI包装器——昨天我用C和Julia两种语言构建了一个愚蠢的测试问题,并比较了性能,Julia与C非常接近,这令人印象深刻 我认为我可以通过使用PackageCompiler.jl包来加快Julia中的初始加载成本,从而进一步缩小差距,但我无法让它很好地发挥作用。如果我跑步: julia--sysimage myImage.so--project myProject.jl 它工作正常(其中myImage.so是我使用PackageCompiler.

我最近一直在为Julia(MPI.jl)使用MPI包装器——昨天我用C和Julia两种语言构建了一个愚蠢的测试问题,并比较了性能,Julia与C非常接近,这令人印象深刻

我认为我可以通过使用PackageCompiler.jl包来加快Julia中的初始加载成本,从而进一步缩小差距,但我无法让它很好地发挥作用。如果我跑步:

julia--sysimage myImage.so--project myProject.jl

它工作正常(其中myImage.so是我使用PackageCompiler.jl生成的系统映像),但如果我运行:

mpiexec-n np julia--sysimage myImage.so--project myProject.jl


我收到6号信号中止。这是我第一次使用MPI.jl和PackageCompiler.jl软件包,因此非常感谢您提供的任何提示/见解

这确实有效!问题是我最近更新了Julia,并用
#使我的脚本可执行/usr/bin/env julia
。当我编译最终使用Julia 1.5.x的系统映像时,
/usr/bin
中的符号链接仍然指向旧的Julia(1.4.x)

因此,如果您想与自定义图像并行运行Julia项目,您确实可以编写:

mpiexec-n np julia--sysimage myImage.so--project myProject.jl


它会跑得很快!(假设您的操作系统没有混淆要使用哪个Julia)

更新基于Julia Slack中的一个建议,我尝试将Julia命令包装在bash脚本中,以便调用
mpiexec
,但这实际上让我相信问题出在sysimage上,因为bash脚本核心转储,即使在没有MPI的情况下运行。。。返回以下错误:
julia:/buildworker/worker/package\u linux64/build/src/processor.cpp:465:std::vector{anonymous}::反序列化目标数据(const uint8\u t*)[长无符号int n=9;uint8\u t=unsigned char]:断言'nfeature==n'失败。
第二次更新:我认为这可能是一个奇怪的环境问题,但在比较通过bash脚本和仅在终端中运行时的环境时,唯一的区别是其中一个环境变量指向我的
/usr/bin/local
中指向Julia的链接,而另一个环境变量指向直接转到可执行文件,而不是链接,所以遗憾的是,它没有那么简单:(