如果运行 "inside" VM,我们会在 Chapel 中看到预期的加速吗?



我下学期将在Chapel教书,我们正在考虑使用VM供学生编程,而不是物理机器。 作为课堂的一部分,我希望学生能够在使用多个线程时看到加速。 我担心他们将无法看到这一点,因为 VM 将使用隐式超线程进行操作;一个线程的运行速度与多个线程一样快。

有人对此有任何经验吗? 我是否有可能使用 VM 而不是物理设备?

我们在虚拟机方面取得了成功! 我们用于整个类的 VM 具有:

  • 16 个中央处理器
  • 一个 60 GB 硬盘
  • 4 GB 内存
  • 3 个 ESXi 主机

系统还具有有限的 IOPS。 (每秒输入/输出。

我向其他老师推荐此解决方案。

是的,但任何加速都不仅仅是语法构造函数的问题,而是问题可实现( [SEQ], [PAR] )重新表述的问题:


我直言,教授,阿姆达尔定律违背了大多数幼稚的、只是语法装饰的努力。

当代对Gene AMDAHL博士原论点的批评和重新表述考虑了两个主要扩展:

  • 开销严格的公式(不要忘记,从[SEQ][PAR]代码执行是有代价的,总是附加成本,这与任何预期的(实际附加开销成本无关)加速严重背道而驰)

  • 任何[PAR]执行粒度的主要限制,在有限的原子事务级别,无论进一步的可用资源,即使是无限的容量,也不会由于进一步不可分割的调度"原子性"而进一步提高整体速度

这两个问题将比实际的虚拟机抽象更能主导您的教育工作,并且更详细地讨论调度"阻塞"资源的所有这些影响确实很棒,而不仅仅是 CPU 核心和硬件线程(操作系统调度到其中),无论是物理的还是由虚拟机虚拟机管理程序抽象的。

正如伟大的 CRAY Chapel 团队成员已经多次指出的那样,实际硬件 NUMA 问题对最终附加组件开销有很大影响,高级制定语法实际上将注入到实际平台处理中,因此情况更加疯狂。


虚拟机:

更好地检查虚拟机管理程序生成的虚拟机-NUMA 拓扑(hwloc/lstopo)以更好地解码虚拟机-CPU 缓存架构,您的虚拟机沙盒将享受任何硬件导向的低级 { C | 汇编 } 代码,并且人们可能会想象许多"愚弄"效果,如果虚拟机声称 vCPU 有 8 个独立的 vCPU 插槽,每个插槽有 4 个独立的 vCPU 核心,每个核心都有一个完全独立和自治的非共享 vCPU-CACHE(s) 层次结构, 其中没有一个级别是共享的(尽管事实上,主机的物理 CPU 主要共享L3_CACHE)。

所有这些都会误导任何以硬件为中心的资源优化器的决策(如果虚拟化错过了主机的物理属性,性能永远不会上升)。


(也可以使用 https://tio.run 的现场教堂平台进行调整和原型制作)


最新更新