gpt4 book ai didi

parallel-processing - 混合使用单线程和多线程配方运行 make

转载 作者:行者123 更新时间:2023-12-04 08:19:55 25 4
gpt4 key购买 nike

我有一个 makefile 编译并运行相当大的一组程序,以产生输出。有些程序是单线程的,有些程序使用 OpenMP 在多个 CPU 内核上运行。相当多的任务需要很长时间才能运行,因此传递“-j”选项以允许单线程程序并行运行会很有用。但是,OpenMP 任务已经使用了所有可用的 CPU 内核(以及相当多的 RAM),因此它们应该一次运行一个。

是否有一个标志可以附加到 makefile 中使用 OpenMP 的任务,以防止其他任务与其并行运行,同时允许其他任务在其他时间并行运行?我认为 .NOTPARALLEL 特殊目标完全禁用所有并行性。

最佳答案

我能想到三种可能:

1) 如果任务相互依赖,make 将不会并行运行任务。
因此,您可以尝试通过向要单独运行的目标添加虚假依赖项来欺骗 make。例如,声明您的 OpenMP 目标依赖于所有串行目标的输出。

2)您也可以将您的 Makefile 分成两个不同的文件:一个用于不会并行运行的 OpenMP 目标,另一个用于串行目标。这意味着您在 OpenMP 和串行目标之间没有交叉依赖关系。

3) 将编译和运行分开。使用 bash 脚本根据需要运行。

关于parallel-processing - 混合使用单线程和多线程配方运行 make,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12285813/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com