我下个学期在Chapel教学,我们正在考虑使用VM来让学生编程而不是物理机器。作为课程的一部分,我希望学生在使用多个线程时能够看到加速。我担心他们将无法看到这一点,因为虚拟机将采用隐式超线程行动;一个线程的运行速度与许多线程一样快。
有没有人有这方面的经验?我有可能使用VM而不是物理设备吗?
答案 0 :(得分:1)
我们在虚拟机上取得了成功!我们用于整个课程的VM具有:
系统还具有无限的IOP。 (每秒输入/输出。)
我将此解决方案推荐给其他老师。
答案 1 :(得分:-4)
是的,但任何加速都不仅仅是语法构造函数,而是问题的可实现( [SEQ], [PAR] )
重新制定:
教授认为,Amdahl's Law充分尊重大多数天真的,只是语法修饰的努力。
Contemporary criticism and re-formulation of the original Dr. Gene AMDAHL's argument考虑了两个主要的扩展:
限制开销(不要忘记,从[SEQ]
转换为[PAR]
代码执行需要付出代价,总是会增加成本,严重违反任何预期的(实际的附加开销成本不可知)加速)
任何[PAR]
- 执行粒度的主要限制,在有限的,原子事务级别,其中任何其他可用资源,即使在无限容量中,也不会由于进一步不可分割的时间安排而进一步提高整体速度"原子性"
这两个问题将主导您的教育工作,而不是实际的VM抽象,并且确实很好地讨论来自调度的所有这些影响 - "阻止" - 资源,而不仅仅是CPU -core和硬件线程(O / S调度),由VM-hypervisor物理或抽象。
正如伟大的CRAY Chapel团队成员已经多次注意到的那样,真正的硬件NUMA问题对最终的附加开销产生了很大影响,高级公式语法实际上会注入到真实平台处理中,所以景观甚至更加狂野。
更好地检查VM-hypervisor生成的VM-NUMA拓扑(hwloc
/ lstopo
)以更好地解码VM-CPU-Cache架构,您的VM-sand-box将面向任何硬件导向低级{C |汇编} - 编码,可以想象很多"愚弄"效果,如果VM声称vCPU有8个独立的vCPU套接字,每个套接口有4个独立的vCPU核心,每个核心都有一个完全独立的vCPU核心。非共享vCPU-CACHE的自治层次结构,其中没有一个级别被共享(尽管事实上,主机的物理CPU主要共享L3_CACHE(s))。
所有这些都误导了任何以硬件为中心的资源 - 优化者的决策(如果虚拟化错过了主机的物理属性,性能永远不会上升。)
(也可以使用Live chapel platform at https://tio.run for tweaking and prototyping )