【问题标题】:dask.delayed memory management when a single task can consume a lot of memory outside of python当单个任务可以在 python 之外消耗大量内存时,dask.delayed 内存管理
【发布时间】:2021-04-05 15:36:55
【问题描述】:

我有一些计算从 python 调用 pardiso() 求解器。求解器以对 python 不透明的方式分配自己的内存,但用于访问该内存的指针存储在 python 中。如果我尝试使用 dask.delayed 运行这些计算,有没有办法告诉 dask 计算的预期内存消耗,以便它可以适当地安排它们?

【问题讨论】:

  • 能否请您提供mcve

标签: dask pardiso


【解决方案1】:

对于 dask 应该遵守某些约束的情况,至少有两种解决方案:resources 参数和 Semaphore

对于资源,工作流程是为每个工作人员分配一些资源(在启动工作人员时通过 cli 或在 LocalCluster 或其他类型的集群中使用 resources kwarg)。然后,代码将指定在.compute.map/.submit 时每个任务使用了多少此资源。

Semaphore 的工作流程是在创建信号量时指定可能的租约数量(请注意,与资源不同,这是一个整数,因此在某种意义上不太灵活)(请参阅docs)。然后,每当访问昂贵的资源时,都应将其包装在 with sem 上下文管理器中。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-16
    • 2014-01-04
    • 2012-07-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多