技术流:NASA专家细评苹果iMac Pro

小说:看《芈月传》,你需要先知道的历史知识作者:开戏杜更新时间:2019-03-24字数:39963

青耕夫人等人飞了过来,女魃看了青耕夫人一眼,笑道:“我知道你现在就想将她焚尸挫骨,替你的丈夫儿子报仇。不过你放心,这世上有些东西,比死还要可怖得多,我会让她尝到生不如死的痛苦,以泄你们的心头之恨。”

小学新生  在集体中成长的幼小衔接

东、西镇抚带人出谷,龙一放缓速度,“林风,一切只是开始,接下来会更精彩。”
这群不速之客的到来自然是将恒隆大厦的总经理引来了,他来到凌澈的面前,递上了一根烟,小心翼翼的说道:“这位将军,我和你们军区的陈副军长关系很好,不知道将军这次来是有什么事情吗?”

却看到那怪物竟然尖叫起来,尖锐的声音直刺耳膜,叶扬忍不住腾出双手捂住了自己的耳朵。这怪物的声音竟然超过了二百分贝,这等声音可以将普通人的血管都是喊爆裂了。

俗话说得好,钱多烧包。每隔一段时间,总会有那么一样产品会对我产生相似的效果——这种产品是那么吸引人,那么让人兴奋,看起来是那么美,它能让我的钱包升温,甚至烧起来。最新的iMac Pro就是这样一种产品。

承蒙苹果的美意,他们给我发了一台128GB,十核版本的iMac Pro以便测试和评估。我花了不到一周的时间使用这台机器,在航空航天工程和软件开发领域进行我日常的工作流程,另外也运行了一些跑分和测试。iMac Pro在性能和生产力上给我留下了强烈的印象。我会在下文中给出其中一些结果,但我还需要说的是iMac Pro在视觉上也给了我很深的印象。尽管它在造型和尺寸上看起来很像近些年来的27英寸iMac,但iMac Pro是第一款采用深空灰配色的(还有对应配色的键盘、鼠标和触控板),这让它看上去很棒,很有商务的感觉。和我那台银色的iMac放在一起,iMac Pro盘踞在一旁就好像沉默的达斯·维德,正准备要砍翻几个人。

iMac Pro的机身下也同样非常可观,它拥有的是十核的英特尔至强W-2155处理器,主频3.0GHz(通过睿频可加速到4.5GHz)。这是英特尔最新发布的一款工作站级别的至强处理器,用以填补其消费级Core i9和服务器级至强Scalable之间的空白。如果你希望拥有Core i9的性能但内存容量更大,核心数更多,却又不需要至强Scalable那么全面的能力,至强W系列就是对像iMac Pro这样的机器最理想的选择(它提供八核、十核、十四核和十八核四种版本)。至强W还是在Mac中第一款支持英特尔AVX-512向量处理的处理器,这将其向量寄存器的向量长度提高到了512 bit(提升自AVX2的256 bit),并将向量寄存器的数量倍增到每核心32个(提升自AVX2的16个)。我会在下文中更多地讨论此事。

我的测试机中的十核处理器拥有每核心单个13.8MB的L3缓存以及1MB的L2缓存,该机型搭载的是128GB的2666MHz DDR4 ECC内存,一块2TB SSD硬盘(拥有硬件级别的线路速率加密),以及显存为16GB的AMD Radeon Pro Vega 64图形芯片集。与此搭配的是冲击力极强的5120×2880视网膜“5K”显示器,iMac Pro可说是一个图形动力室——我不断为一切被渲染得如此清晰干净,却又对性能没有明显的过度占用或影响感到惊奇。曾经我在将复杂的3D数据集进行视觉化时,不得不在性能或细节中二选一,而iMac Pro两边都能满足。即使仅仅是使用Xcode或终端来工作的时候,屏幕的清晰和高亮度都能让眼睛感到很舒适。

计算流体动力学

那么现在就来做一些测试吧,这些测试基于对空气动力学设计和开发所需的计算流体动力学(CFD)的使用。在这类工作中,我使用的是NASA提供的名为TetrUSS的CFD工具,还有被普遍使用的NACA 0012 airfoil来打造运输类飞机的通用研究模型(CRM)的几何结构。

CFD的一种典型用法是评估航空航天飞行器,诸如火箭或飞机的空气动力表现。该流程的第一步是从CAD定义中创建飞行器的几何网格模型。这本质上能让我们将问题分解为成百万个小单元,以便通过数值来模拟气流的物理表现。类似的流程被用在工程分析的其他领域还包括结构和热传导。另外虽然和模拟无关,OpenGL游戏程序员也很了解用三角形或四边形为3D物体创建网格模型的流程,因为这能够打造一个能够反映光影、着色和其他视觉效果的实体模型。

为了进行单核测试,我们首先从生成一个由237660个三角形组成的CRM翼-体-尾外形的表面网格模型开始。

iMac Pro在这项测试中的耗时结果看上去非常好(下方图标中的最后一栏),在我过去五年里测试过的十个系统中它是最快的,而且差距明显。

时间以秒计,越短越好

CFD流程的另一个关键部分是实际的数值模拟,我们要对网格模型上通过的气流进行运算。通常来说,这些模拟是要在超级计算机集群上运行的,使用500至2000个核心或更多,整个过程有时要耗费数天或数周。较小的实例可以运行在诸如iMac Pro这样的多核心台式电脑上,特别适合那些小型企业用户以及学术界人士(通常实例的规模会受到内存的限制,但这对iMac Pro的128GB来说不是问题——它可以应对大多数有实际意义的实例)。

和网格模型生成不同,气流模拟很考验并行处理,使得它成为理想的多核心测试指标。在这里,我们通过NACA 0012 airfoil计算气流。结果通过示意图来展示运算时间(以秒计),并和所使用的核心数量进行对比。在一部分机器中,最大可用的核心数量为十二核。在同一组系统中,iMac Pro(底部的红线)再一次取得了最好的成绩,在最多到十个核心的对比中,它的耗时很明显是最短的。

X轴是所用核心数,Y轴是以秒计的耗时

我还关注了一下扩展表现,这部分很有趣,因为它能够显示出许多和计算机架构有关的东西。和很多人预期的不同,将更多的核心投入到一个问题中并不总是最完美的答案——从某一点开始各个核心之间会开始争夺各种系统资源,比如内存和硬盘,你也能够从上面的图表中看到曲线是会渐渐平缓的。下面的图表通过计算每一台接受测试的电脑采用多核时,对比单核的速度增幅(单核耗时除以多核耗时),更清楚地体现了这一点。作为参考,理想的曲线以虚线显示。在这个对比中,iMac Pro(红色曲线)的表现和竞争对手们基本相似,使用全部十个核心时有6.7倍的速度提升。如果能让十八核版本的iMac Pro运行同样的测试肯定会很有趣,但可惜的是,它们直到明年一月才出货。

X轴是所用核心数,Y轴是多核与单核的速度比值

软件开发

另一个对我来说很重要,但同时又难以量化的测试项目是软件开发。我倾向于使用C和Fortan编译器在终端上做我大多数工程和CFD相关的软件开发工作,但在iOS和Mac应用的开发上我最常用的却是Xcode。几个星期以前,我忙于调试一个异常棘手的MapKit分块渲染Bug,与此同时还要为iPhone X准备好我的AR应用Theodolite,我很确信在那几天之内我按了Xcode的Build/Run好几千次(至少感觉上是这样)。当你进入一个涉及到大量编译工作的高强度开发或调试阶段时,这儿省几秒那儿省几秒,加起来一天就能多出几个小时了。十核iMac Pro在这个方面大放光彩,特别是当它结合Xcode能够自动利用多核心去同时编译多个源文件的能力时更是如此。

绝大多数我的应用有20000至30000行代码,分布在80至120个源文件中(大部分是Obj-C和C,混合极少量Swift)。有太多变量会影响编译表现,所以很难提出一种普遍适用的测试标准,因此我就简单地描述一下,当我将iMac Pro和我的2016版MacBook Pro和2013版iMac对比时,我注意到编译耗时有了30%至60%的减少。如果你开发iOS应用,仍会注意到在模拟器或在设备上安装或启动应用存在瓶颈,但在开发Mac应用时,反复的代码-编译-调试循环会有相当明显的提升。

AVX512向量处理

我长年以来醉心于向量化,从上世纪90年代的Cray超级计算机开始,到进入2000年后PowerMac G4和G5中的AltiVec。所以我很高兴能够听到iMac Pro在向量处理上了有了很大飞跃。

向量化是一种单指令多数据(SIMD)处理的形式,处理器能够同步地在一个“向量”内执行多个数据元素的运算。与此相对的,常见的“标量”代码一次只能执行单个数据元素。标量代码的经典例子是如下所示的循环,我们将数组“a”的元素加上数组“b”的元素,并将结果储存在数组“c”:

for (i=0;i<N;i++) {

c=a+b;

}

当我们这样循环的时候,我们一次只处理一个数据元素。如果你也了解这方面,就会知道每一次循环都需要两次负载,加法和存储——四次运算——因此我们在这个标量循环中就有总共4*N次运算。现在,因为iMac Pro的处理器每个核心都有了AVX-512向量处理器,我们就可以形成支持16字节单精度(32位)浮点数或8字节双精度(64位)浮点数(或当使用整数时的等量)。如果我们假设范例中的数组是双精度,那么使用AVX-512向量指令的等量向量循环就会是这个样子:

for (i=0;i<N;i=i+8) {

__m512d a_vec = _mm512_load_pd(&a);

__m512d b_vec = _mm512_load_pd(&b);

__m512d c_vec = _mm512_add_pd(a_vec,b_vec);

_mm512_store_pd(&c,c_vec);

}

我们还是需要两次负载,通过每次循环就有一次加法一次存储,但因为我们是通过每个支持8字节双精度的向量运算的,我们每一次就能增加8个循环,所需的总运算量就是4*N/8——之前的八分之一!。

你可能会马上期待一个八倍的性能提升,但实际上这个涨幅太理论化了,现实中不会有那么多。误差的多少取决于很多因素,比如数据大小,它是否能适合不同的缓存或分配入RAM中,等等。但在这个例子中,我们取N为512,结果也很棒了。AVX-512带来的速度提升是5.2倍。作为对比,我也总结了AVX2的测试结果,它使用256 bit宽向量,一次可支持4次双精度运算。这最终带来了3倍的速度提升。虽然我不会给出具体的代码细节,但如果是使用单精度浮点数进行同样的测试,AVX-512的速度提升是10.1倍,而AVX2则为6.3倍。

一个需要注意的重要细节是,在上文的代码范例中为了方便说明(也为了在测试时能有明确的控制),我使用了原有的AVX-512向量指令。实际上,现在的编译器很擅于对合适的标量循环进行自动向量化,且在大多数情况下,你除了选择更高层的优化(通常是-O2或-O3)以及指定正确的架构和/或指令集标记外不需要做任何事。另一个可选项是链接到向量优化库。英特尔的Math Kernel Library(MKL)对AVX-512进行了高度优化,我被告知苹果的Accelerate框架也已经针对AVX-512进行了优化(更多的改进未来还会有)。

总结

最显而易见的问题,其实我以上的测试并没有直接给出答案,即iMac Pro和往年的标准版iMac相比,性能究竟如何。这里最相近的直接对比是我的2013版iMac,但和它相比已经落后几代了。即便如此,我还是拿到了一些关于2017版iMac的4.2GHz四核Core i7处理器的有限资料。尽管2017版iMac在单核表现上比iMac Pro稍快一些,但随着更多核心的参与,性能表现渐渐持平,到四核的时候iMac的优势不再。从四核到十核,iMac Pro一路绝尘而去。如果你要利用AVX-512(标准版iMac不支持),iMac Pro更是直接超越。这样的强化是iMac Pro的其中一个主要优势——工作站级别的处理器相比标准版iMac所能提供的,可以利用更多的核心,更先进的处理功能,以及更大、扩展性更强的性能极限。另一个关键优势是内存容量和图形能力。如果你的工作能受益于其中任何一样,那么iMac Pro就是自然而然的选择。

我写稿时,苹果仍然没有公开iMac Pro产品线的完整价位,只提到搭载八核处理器、32GB内存、1TB SSD和Vega Pro 56图形芯片集的基本款起售价是4999美元。价位上最相近的对比是27英寸iMac,售价3699美元,但处理器和图形芯片集差了太多。少了四个核心,整体上还有其他劣势。因此结合上文来看,多花1300美元入手iMac Pro是根本不需要考虑的。有趣的是高端机型究竟会是怎样的价格,尤其是十八核版本,但如果按照入门级的价位这么延伸下去,那对那些想要购买工作站级Mac的人们来说可是一大笔钱。只要注意,钱包可别烧起来就行了。

编辑:北乙扁道

发布:2019-03-24 09:53:51

当前文章:http://leetaemin.cn/news/201901/26/content_22596.html

我女儿喜欢了富二代该怎么办? 懒是婚姻的致命伤 知道的多好还是知道的精好? 诗装 - 黄胤然首倡文化新理念 谈早恋与儿童的异性交往 当古体诗词遇见汉服 - 诗装 为什么现在的女孩越来越难追? 花博士教你:男女之间的风水很重要!这不是迷信!

18038 66335 63900 12691 90287 95361 27845 47954 61643 40506 71446 84163 87196 50454 70745 69114 81541 25349 15870 64318

我要说两句: (0人参与)

发布