You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用--heap-size-hint后Julia脚本在HPC集群报错求助

Julia在HPC集群使用--heap-size-hint时触发终止信号的问题分析

问题描述

  • 我是Julia新手,首次提问。在HPC集群运行Julia脚本时,使用--heap-size-hint参数限制内存为54GB(作业已分配60GB),触发终止信号错误;不加该参数时脚本运行正常,错误指向代码第8行的let-end块。

错误日志如下:

398188] signal (15): Terminated
  in expression starting at /user1/jay.pandey/start_again_copy/start_again/dup_for_check/writing_to_disk.jl:8
  _ZNK4llvm19TargetTransformInfo22getArithmeticInstrCostEjPNS_4TypeENS0_14TargetCostKindENS0_16OperandValueKindES4_NS0_22OperandValuePropertiesES5_NS_8ArrayRefIPKNS_5ValueEEEPKNS_11    InstructionE at /user1/jay.pandey/julia-1.9.0/bin/../lib/julia/libLLVM-14jl.so (unknown line)
  unknown function (ip: 0x4cd832f)
  unknown function (ip: (nil))
  Allocations: 66045750 (Pool: 65995465; Big: 50285); GC: 115

可能的原因

  1. 集群OOM Killer触发终止
    信号15通常是集群管理系统发送的终止信号,而非Julia自身抛出。--heap-size-hint是给Julia GC的软提示,并非硬限制。当let块内进行大量内存分配时,实际内存占用可能短暂接近或超过集群分配的60GB阈值(哪怕你设置了54GB的提示),触发集群的内存超限终止机制。

  2. Julia 1.9版本GC对内存提示的处理缺陷
    Julia 1.9的GC在处理--heap-size-hint时可能存在优化不足,当内存压力达到提示阈值时,GC无法及时完成内存回收,导致内存占用持续攀升,触发集群的监控终止。

  3. let块内的内存累积问题
    let块会创建独立作用域,若块内存在未及时释放的大对象(比如未清空的数组、未关闭的资源),结合内存限制提示,会加速内存占用触顶,增加触发终止的概率。

  4. 集群内存监控的采样间隙问题
    部分HPC集群的内存监控是周期性采样,可能在Julia GC尚未完成回收的间隙,采样到的内存占用超过分配额度,直接发送终止信号,忽略了Julia的内存提示设置。

排查建议

  • 检查let块内代码,确认是否有不必要的大对象创建,可手动调用GC.gc()或使用empty!提前释放变量。
  • 调整--heap-size-hint的值,比如设置为50GB(比分配的60GB留更大缓冲),验证是否还会触发错误。
  • 升级Julia到1.10及以上版本,新版本对GC和内存管理有针对性优化,可能修复此类问题。
  • 联系集群管理员,确认是否是集群OOM Killer触发的终止,以及集群的内存监控策略细节。

内容的提问来源于stack exchange,提问作者moonshine

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 07:57:21