如何为OpenMDAO内置DOEDriver设置最大可用处理器数?
限制OpenMDAO DOEDriver的总处理器使用量
要实现「用8核同时跑8个单核用例」的需求,核心是控制DOEDriver的并行用例数量,配合单模型核数设置,具体操作如下:
- 第一步:保持
procs_per_model=1的设置,确保每个用例仅占用1个处理器。 - 第二步:给DOEDriver添加
max_parallel=8参数,这个参数直接限制DOEDriver同时运行的最大用例数。由于每个用例用1核,总占用核数刚好锁定为8,不会占用机器剩余的2核。
示例代码片段:
import openmdao.api as om # 定义你的模型 class YourModel(om.ExplicitComponent): # 模型实现逻辑... # 构建问题 prob = om.Problem() prob.model.add_subsystem('model', YourModel()) # 配置DOEDriver driver = prob.driver = om.DOEDriver(om.FullFactorialGenerator(num_levels=2)) driver.options['procs_per_model'] = 1 driver.options['max_parallel'] = 8 # 关键参数:限制同时运行的用例数 # 设置设计变量与响应 driver.add_design_var('model.x', lower=0, upper=10) driver.add_response('model.y') prob.setup() prob.run_driver()
额外注意事项:
- 若用MPI启动脚本(如
mpiexec),可以直接用mpiexec -n 8 python your_script.py启动,再配合上述参数,效果更稳妥——MPI直接限制了总可用进程数,DOEDriver会在这个范围内并行执行用例。 - 你之前尝试的
max_procs是子系统级参数,作用是限制单个子系统的最大可用核数,和DOEDriver的总并行用例数控制无关,因此无法达到预期效果。
内容的提问来源于stack exchange,提问作者Jehan Dastoor
相关产品推荐
相关产品推荐

