makefile – make:禁用某些目标的并行执行
发布时间:2020-12-16 07:26:50 所属栏目:百科 来源:网络整理
导读:我有一个编译工作,其中链接需要大量的IO工作.我们有大约十几个核心,所以我们运行make -j13,但是当涉及链接6个目标时,我希望这些是以循环方式完成的.我想过让一个人依赖下一个,但我认为这会打破个人目标.任何想法如何解决这个小问题? 解决方法 使自己不提供
我有一个编译工作,其中链接需要大量的IO工作.我们有大约十几个核心,所以我们运行make -j13,但是当涉及链接6个目标时,我希望这些是以循环方式完成的.我想过让一个人依赖下一个,但我认为这会打破个人目标.任何想法如何解决这个小问题?
解决方法
使自己不提供一种机制来请求“其中的N个,但一次不超过M个”.
您可以尝试在链接器规则的配方中使用GNU parallel包中的sem命令.它的文档有一个example of ensuring only one instance of a tool runs at once.在你的例子中,你可以允许make一次最多启动13个sems,但是一次只能运行一个链接器,而其他的则阻塞. 缺点是你可能会遇到这样一种情况:你的13个作业槽中有5个与sem实例捆绑在一起,这些实例都在等待链接器进程完成.根据构建的结构,这可能意味着浪费了CPU时间.仍然击败了6个连接器,同时颠倒了磁盘,但是:-) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |