有些编程技巧针对的是当前或者将来的超等计算机,固然它们已经存在了很长时光,但如今很多开辟人员并没有对这些技巧有一个清楚的概念和熟悉。
然后,20世纪90年代的“杀手微指令的袭击”把一切都变成了一个小问题。跟着节点数量的增长,应用法度榜样开辟人员不得不推敲PVM(并行计算机),然后是MPI通信协定,在他们的义务中,在没有任何向量指令的情况下,将应用法度榜样并行化到大年夜量的节点上,这些节点包含商品的COTS (货架产品)芯片。如下图所示,大年夜1995年到2010年,COTS芯片的时钟周期削减了。应用法度榜样开辟人员不再须要关怀节点架构。
跟着AVX256,AVX512,SVE和GPU的出现,在以前的5年迈,矢量已经开端返回我们的视野。更近一点儿说,像英特尔的Knight ' s Landing(KNL)如许的核心体系,以及附加的加快器,如Nvidia的GPU,都须要从新检查应用法度榜样,以大年夜新的更强大年夜的节点中获得更好的机能。因为应用法度榜样弗成能老是由编译器进行矢量化和/或并行化,是以应用法度榜样开辟人员必须做一些工作。
大年夜编写重要的内核到Nvidia GPU的CUDA等专业编程模型,到应用编译器指令赞助编译器将输入的用户级代码转换为处理器的初级矢量化代码。然后还有一个问题,就是在节点/生成数千个线程上为GPU应用所有这些内核。因为在所有的节点上运行MPI是异常有效的,最初的多核体系的开辟人员并不须要应用共享内存线程来并行化。然而,在Nvidia加快器上线程是绝对须要的。OpenACC和OpenMP 4.5是为GPU的线程化和矢量化解决筹划开辟的。
新体系构造中的另一个启发是,内存层次构造变得越来越复杂,尤其是当应用法度榜样具有很大年夜的内存占用时。KNL,以及带有GPU加快器的节点,有两个级其余内存,这将惹人新的挑衅,这些挑衅必须由开辟人员员来解决。下图显示了KNL的内存层次构造和承载的GPU之间的差别。如不雅一个应用法度榜样合适于高速存储器,那么它将获得优良的内存机能。然则,如不雅应用法度榜样须要更多的内存,那么必须将数据集以高效和及时的方法在两者之间进行治理。
大年夜上世纪六七十年代世界上首个超等计算机CDC6600被Seymour Cray研制出来起,超等计算机就成为了应用法度榜样开辟人员的另一目标,使开辟人员赓续适应新的办法,和持续变更的硬件和软件体系。在高机能计算范畴,开辟人员所须要的适应性尤为明显,这里,开辟人员平日须要对目标节点架构进行优化,以“挤出”最后一点可用的机能。
以前的四到五年对那些保持进步临盆力的开辟人员来说是一种文化冲击。他们如今面对着有效应用这些新的强大年夜节点的严格挑衅。如不雅它们持续应用全MPI代码,并没有对独裁并行代码履行须要的转换(经由过程矢量化和线程化),那么它们的机能将只是节点数量和时钟周期的一个函数。固然节点上的核心数量正在迟缓上升,但这些核心的时钟率正在降低,导致在没有软件优化的情况下,新硬件投资的回报率很低。
【编辑推荐】
- 奇幻工房编程教导机械人在中国表态
- NVIDIA向OpenAI交付全球首台单机箱人工智能超等计算机
- 中国E级高机能计算机原型体系正式进入研制阶段
- 中国高机能计算机TOP100出炉 曙光联想并列第一
- 人工智能快速成长 计算机视觉产品打造智能社会“人口”
推荐阅读
之前我的常识星球内有人问过这么一个问题,当时髦了一个答复,今天在知乎上也看到一个类似的问题,看到很多人的谜底都含糊其词,给你说一大年夜堆套话,新手如不雅可以懂得的话就不是新手>>>详细阅读
本文标题:开发人员该如何对超级计算机进行编程?
地址:http://www.17bianji.com/lsqh/38363.html
1/2 1