并行GADriver如何支持分布式内存

how does parallel GADriver support distributed memory

当我为 SimpleGADriver 设置 run_parallel = True 时,内存是如何处理的?它对分布式内存有什么作用吗?它是否将生成中的每个点发送到单个内存(如果我有一个连接多个节点的设置(每个节点都有自己的内存))?

我不确定我是否完全理解你的问题,但我可以概述一下它是如何工作的。

当 "run_parallel" 为 True,并且您在具有 n 个处理器的 MPI 下 运行 时,SimpleGADriver 将使用这些过程来评估新生成的总体设计值。首先,GA 在每个处理器上运行,本地值在本地内存中。当生成一组新的点时,等级 0 的值将广播到所有等级并放入列表中。然后根据处理器等级评估这些点,以便每个 proc 评估不同的点。完成后,所有的值都被收集起来,之后,每个处理器都有新一代的所有 objective 值。此过程一直持续到达到终止条件为止。

所以本质上,我们只是使用多个处理器来加速 objective 函数评估(即 运行 模型),这对于较慢的模型可能很重要。

需要注意的是,总人口规模需要被处理器数量整除,否则将引发异常。

从等级 0(而不是任何其他等级)广播人口的选择是任意的,但这些值来自包括随机交叉和锦标赛选择的过程,因此每个处理器确实生成一个新的有效的唯一人口和我们只选一个。