Computer science 计算机模拟:资源密集程度如何?

Computer science 计算机模拟:资源密集程度如何?,computer-science,simulation,Computer Science,Simulation,问题: 计算机模拟通常是资源密集型的,它是如何进行的 例如:一个离散事件模拟软件包-为什么计算量很大,是什么因素(计算)造成的?计算机模拟通常会快速运行多个场景,并对它们进行比较 例如,金融模拟通常使用具有数千次运行的 模拟通常包括 超过10000次模型评估, 这项任务在过去只是 实际使用超级计算机。 - 计算机模拟通常会快速运行多个场景并进行比较 例如,金融模拟通常使用具有数千次运行的 模拟通常包括 超过10000次模型评估, 这项任务在过去只是 实际使用超级计算机。 - 离散事件模拟是一

问题:

  • 计算机模拟通常是资源密集型的,它是如何进行的

例如:一个离散事件模拟软件包-为什么计算量很大,是什么因素(计算)造成的?

计算机模拟通常会快速运行多个场景,并对它们进行比较

例如,金融模拟通常使用具有数千次运行的

模拟通常包括 超过10000次模型评估, 这项任务在过去只是 实际使用超级计算机。 -


计算机模拟通常会快速运行多个场景并进行比较

例如,金融模拟通常使用具有数千次运行的

模拟通常包括 超过10000次模型评估, 这项任务在过去只是 实际使用超级计算机。 -


离散事件模拟是一个非常广泛的术语;你可以模拟任何东西,从柠檬水摊,到跨国公司的交易和物流,到复杂的软件系统,再到尚不存在的新的计算机体系结构(而且比模拟运行的机器要复杂和先进得多)

我将使用我所在领域(计算机体系结构)的一个例子,但它在计算上的开销应该可以很好地概括。很多时候,您试图模拟一个分布式系统,其中有许多具有自己简单控制逻辑的独立代理,它们共同实现一个非常复杂的动态系统。在计算系统的情况下,模拟器的组合工作集至少与所有组合组成组件的架构、微架构和内存状态一样大。如果每个组件都稍微复杂,这意味着在完成模拟的每个时间步时,您的时间和空间位置都会大大减少。每个时间步都需要运行整个工作集,这意味着缓存利用率很低,可能会影响性能一到两个数量级。这种模式是不可避免的,因为在多个时间段内独立运行每个组件,并且只定期合并结果是有问题的,而且系统越复杂,耦合性越强

此外,您通常希望保留各种统计信息,这些信息会在组件模拟之上引入大量额外的空间和时间开销

简言之,下限是模拟所有组件的复杂度之和。在实践中,如果您有许多组件,如果您的组件比运行模拟的主机更复杂,甚至有很大的不同,并且如果您有大量的工具,则会导致很多低效


最后一件事:离散事件模拟通常涉及将项目放置在队列中,并基于跟踪一组指针来查找将请求放置在哪个队列中。这些操作很难并行化,使问题进一步复杂化。然而,正如我前面提到的,术语“离散事件模拟”可以包含从琐碎到不可能的任何东西,因此提取一般模式是困难的;你可以模拟任何东西,从柠檬水摊,到跨国公司的交易和物流,到复杂的软件系统,再到尚不存在的新的计算机体系结构(而且比模拟运行的机器要复杂和先进得多)

我将使用我所在领域(计算机体系结构)的一个例子,但它在计算上的开销应该可以很好地概括。很多时候,您试图模拟一个分布式系统,其中有许多具有自己简单控制逻辑的独立代理,它们共同实现一个非常复杂的动态系统。在计算系统的情况下,模拟器的组合工作集至少与所有组合组成组件的架构、微架构和内存状态一样大。如果每个组件都稍微复杂,这意味着在完成模拟的每个时间步时,您的时间和空间位置都会大大减少。每个时间步都需要运行整个工作集,这意味着缓存利用率很低,可能会影响性能一到两个数量级。这种模式是不可避免的,因为在多个时间段内独立运行每个组件,并且只定期合并结果是有问题的,而且系统越复杂,耦合性越强

此外,您通常希望保留各种统计信息,这些信息会在组件模拟之上引入大量额外的空间和时间开销

简言之,下限是模拟所有组件的复杂度之和。在实践中,如果您有许多组件,如果您的组件比运行模拟的主机更复杂,甚至有很大的不同,并且如果您有大量的工具,则会导致很多低效

最后一件事:离散事件模拟通常涉及将项目放置在队列中,并基于跟踪一组指针来查找将请求放置在哪个队列中。这些操作很难并行化,使问题进一步复杂化。然而,正如我前面提到的,术语“离散事件模拟”可以包含从琐碎到不可能的任何内容,因此提取一般模式是困难的