当单个任务可能消耗 python 之外的大量内存时,dask.delayed 内存管理

cbf*_*123 5 pardiso dask

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

Sul*_*yev 0

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

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

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