我有一个包含n
h5文件的目录,每个文件都有m
个要过滤的图像堆栈。对于每个图像,我将使用dask
并行数组运行过滤(高斯和拉普拉斯),以加快处理(Ref to Dask)。我将通过scikit映像中的apply_parallel()
函数使用dask数组。
我将使用20 cpus
在小型服务器上运行处理。在
我想咨询一下哪种并行策略更适合使用:
1)对h5文件和所有CPU进行顺序处理以进行dask处理
2) 使用x
核并行处理h5文件,并使用剩余的20-x
进行dask处理。
3) 分配资源并并行处理h5文件、每个h5文件中的图像以及dask的剩余资源。在
谢谢你的帮助!在
使用
make
进行并行化。在使用
make -j20
可以告诉make
并行运行20个进程。在通过使用多个进程,可以避免“全局解释器锁”的开销。对于独立的任务,使用多个独立的流程更有效(如果您有疑问,基准)。Make非常适合于处理需要对每个文件应用相同命令的整个文件夹—它通常用于编译源代码,但也可以用于运行任意命令。在
最好用最简单的方法并行化。如果您有多个文件,并且只想在每个文件上运行相同的计算,那么这几乎肯定是最简单的方法。如果这会使你的计算资源饱和,那么你可以在这里停下来,而不必深入研究更复杂的方法。在
如果这确实是您的情况,那么您可以使用
dask
、make
、concurrent.futures
或任何其他库来并行化done。在如果还有其他问题,比如试图并行化操作本身或者确保内存不会耗尽,那么您将被迫进入更复杂的系统,如dask,但情况可能并非如此。在
相关问题 更多 >
编程相关推荐