将 Dask 与 Dask 阵列一起使用时,我突然收到以下错误,并且我的内核死机/重新启动。
控制台说:
BLAS : Program is Terminated. Because you tried to allocate too many memory regions
我在 Mac 上使用 OpenBLAS 使用 Anaconda。任何的想法?
注意:这个问题是通过其他方式给我的,我在这里重复一遍以备将来参考
Dask 和 OpenBLAS 都在尝试同时并行化。这会触发 OpenBLAS 中的检查,从而导致硬故障。避免这种情况的一种简单方法是设置以下环境变量:
export OMP_NUM_THREADS=1
Dask 多次并行调用 OpenBLAS 函数(通过 NumPy)。OpenBLAS 依次启动许多线程并行操作。因此,如果您有四个内核,那么最终可能会有 16 个线程都在尝试工作。这可能会导致性能不佳。OpenBLAS 智能地识别这种情况并警告您。不幸的是,它警告你的机制是很难失败。
设置OMP_NUM_THREADS=1告诉 OpenBLAS 一次只使用一个线程。这将有助于避免争用,但在不与 Dask 或 Joblib 等其他库并行时可能会导致性能降低。
| 归档时间: | 
 | 
| 查看次数: | 1054 次 | 
| 最近记录: |