【发布时间】:2019-10-02 09:40:18
【问题描述】:
我想缩短冗长的图像处理算法的运行时间,该算法通过使用 openMP 的并行处理应用于多个图像。
该算法适用于单个或有限数量 (=2) 的线程。
但是:使用 openMP 进行并行处理需要大量内存,在以最大可能线程数运行时会导致内存不足异常。
为了解决这个问题,我将 “抛出异常” 替换为 “等待空闲内存”,以防内存不足,导致很多 (@987654321 @) 线程正在等待空闲内存...
是否有任何解决方案/工具/方法可以根据可用内存动态维护内存或启动线程?
【问题讨论】:
-
如果你的单线程工作正常,那么为什么多线程版本应该使用更多的内存?这听起来像是一个设计问题。我们需要更多细节和工作示例才能为您提供帮助。
-
如果您没有足够的内存来一次处理多张图像,请并行处理您的算法以处理单张图像。
-
如果这真的只是将 omp 并行包装为您的整个代码,为什么不直接使用 shell(或者,更好的是 Python)脚本来并行运行多个进程!?
标签: c++ multithreading openmp