云扩展,第 1 部分: 构建计算节点或小型集群应用并利用 HPC 进行扩展

根据需要利用仓库规模(warehouse-scale)计算

了解用于构建计算节点和小型集群应用程序的方法和工具,这些节点和应用程序可以利用云对按需高性能计算 (HPC) 进行扩展。本系列文章将深入介绍如何解决在开发和利用仓库级按需 HPC 的效率时面临的独特挑战。该方法允许架构师在本地完成构建,以便提供预期的工作负载,并溢出到按需云 HPC 来应对峰值负载。第 1 部分重点介绍系统构建者和 HPC 应用程序开发人员如何最高效地扩展您的系统和应用程序。

Sam B. Siewert, 助理教授, University of Alaska Anchorage

/developerworks/i/p-ssiewert.jpgSam Siewert 博士是阿拉斯加大学安克雷奇分校计算机科学与工程系的一位助理教授。他还是科罗拉多大学波尔得分校的一位兼职助理教授,主要教授电气、计算机和能源工程系的多门暑期课程。作为一位计算机系统设计工程师,Siewert 自 1988 年以来从事过航空航天、电信和存储等行业的工作。作为一名研究员和顾问,他一直非常关注可伸缩系统、计算机和机器视觉、混合可配置架构及操作系统。相关的研究兴趣包括实时理论、数字媒体和基本计算机架构。



2013 年 8 月 12 日

具有自定义扩展的处理器核心和共享的内存互联网络的外来 HPC 架构正迅速被按需集群所取代,这些集群利用了现成的一般用途向量协同处理器、融合的以太网(每个链路 40 Gbit/s 或更高速度)和多核无头(headless )服务器。这些新的按需云 HPC 资源类似于所谓的仓库规模计算(warehouse-scale computing),其中每个节点都是同类和无头的,关注的是总体拥有成本和总体电源使用效率。但是,HPC 拥有解决超出类似社交网络、Web 搜索和其他典型的仓库规模计算解决方案所需要的处理能力。本文将重点介绍系统构建者和 HPC 应用程序开发人员如何最高效地扩展您的系统和应用程序。

迁移到高性能计算

自 1994 年以来,TOP500 和 Green500 超级计算机(参阅 参考资料)通常不是定制设计的,而是使用现成的无头服务器、融合的以太网(或 InfiniBand 集群)和通用的图形处理单元 (GP-GPU) 协处理器来设计和集成,这些 GPU 不是用于图形处理,而是用于单程序、多数据 (SPMD) 工作负载。高性能计算 (HPC) 偏离了外来定制处理器和内存互联设计方向,有朝着利用现有设备(仓库规模计算)发展的趋势(基于控制总体拥有成本,提高功率效率,以及平衡新建和既定 HPC 操作的操作开支 (OpEx) 和资本开支 (CapEx) 的需求)。这意味着,您可以使用类似的方法构建自己的小型集群,在需要 HPC 仓库规模资源时根据需要使用它们。

Cray 等计算机使用的著名的 3D 环形互联从未完全消失(如今,TOP500 中 1/3 采用大规模并行处理器 [MPP],2/3 的高性能机器采用集群架构),但对效率和新 OpEx 指标(比如 Green500 Floating Point Operation (FLOP)/Watt)的关注正在推动 HPC 的发展和保持架构持续关注集群计算架构。而且,如今许多有趣的应用程序都是数据驱动的(例如数字视频分析),所以许多系统不仅需要对 HPC 检查点(长期运行的作业的保存状态)使用传统的顺序高性能存储,还需要随机访问结构化(数据库)和非结构化(文件)的大型数据集。大数据访问是用于云服务的传统仓库规模计算以及当前和新兴的 HPC 工作负载的一种常见需求。所以,仓库规模计算不是 HPC,但 HPC 应用程序可利用受数据中心启发的技术来实现按需云 HPC,前提是它从一开始就是这么设计的。

计算功率

计算功率可采用标准的每瓦特性能形式来度量 — 例如,FLOPS/Watt 或分别用于计算和 I/O 的每秒/瓦特输入/输出。而且,任何计算设备都可视为一个将瓦特转换为计算结果的工厂,对优秀的工厂设计的总测量用的是功率使用效率 (PUE),简言之,就是总能耗中提供给计算设备的比率。如今,该值不超过 1.2 就很不错了。导致 PUE 较高的一个原因是:低效的制冷方法,管理开销,以及与云数据中心相比缺乏定制的设备(请参阅 参考资料,获取更多信息的链接)。

可扩展计算架构的关注点总在不断变化,这些变化包括:

  • 早期注重使用一种快速单处理器,将存储程序算术逻辑的单元中央处理器提高到最高的时钟速率和指令吞吐量:
    • John von Neumann、Alan Turing、Robert Noyce(Intel 的创始人)、Ted Hoff(Intel 通用处理器拥护者)和 Gordon Moore,将最初的扩展视为尽可能块地扩展数字逻辑和处理器时钟的一大挑战。
    • 至少直到 1984 年(可能更晚),人们通常认为 “处理器造就了计算机”。
    • Cray Computer 设计了矢量计算机(X-MP 和 Y-MP)和分布式内存多处理器,这些多处理器由一个用于定制的 MPP 机器的 6 向互联 3D 环来建立互联。但这是超级计算领域中独特的设计。
    • IBM 早期的关注点是可扩展大型机和快速的单处理器,直到 1999 年发布了多核 IBM® POWER® 架构板载系统设计和一种 3D 环形互联的 IBM® Blue Gene® 架构。当前的 TOP500 包含许多 Blue Gene 系统,这些系统常常在 LINPACK 度量的 TOP500 中拔得头筹。
  • 从 1994 年直至最近,HPC 不断演化,发展成为一些定制的 MPP 和通常现成的集群,使用定制的互联(比如 Blue Gene 和 Cray)以及现成的融合以太网(10G、40G)和 InfiniBand:
    • TOP500 已被集群统治,这包括如今的大多数顶级性能的 HPC 解决方案(2/3)。
    • 如 1994 年以来的架构 TOP500 图表中所示,集群和 MPP 如今占据着统治地位(相对于单指令、多数据 [SIMD] 矢量;快速单处理器;对称多处理 [SMP] 共享内存;以及其他不太清晰的架构)。
    • Sun Microsystems(现在为 Oracle)中的 John Gage 表明 “网络就是计算机”,它指的是分布式系统和互联网,但同样地,集群中的低延迟网络正变成扩展的核心。
    • 通过内存映射 I/O 连接到集群节点的协处理器,包括 GP-GPU 以及混合现场可编程门阵列 (FPGA) 处理器,被用于加速每个集群节点上特定的计算工作负载。
  • 仓库规模计算和云开始出现,它们关注的是 MapReduce 和 HPC 所称的高度并行的应用程序 (embarrassingly parallel applications):
    • TOP500 使用 LINPACK 和 FLOP 来度量,所以不关注操作成本(例如 FLOP/Watt)或数据访问。内存访问非常重要,而存储访问没有这么重要,除了对于作业检查点(所以如果需要,可重新启动一个作业)。
    • 在新的世纪中出现了许多数据驱动查询应用,包括社交网络、互联网搜索、全球地理信息系统,以及与多于 10 个互联网用户相关联的分析。这不是传统意义上的 HPC,而是大规模的仓库计算操作。
    • Luiz André Barroso 表明 “数据中心就是计算机”,这是第二次远离注重处理器。数据中心高度关注 OpEx 和 CapEx,所以更适合 FLOP/Watt 和数据访问至关重要的 HPC。Google 数据中心拥有低于 1.2 的 PUE,PUE 是一种将消耗的总能耗除以用于计算的功率的度量指标。(大部分计算性企业都拥有 2.0 或更高的 PUE,所以 1.2 确实非常低。请参阅 参考资料,了解有关的更多信息。)
    • Amazon 启动了 Amazon Elastic Compute Cloud (Amazon EC2),这最适合 Web 服务,但具有一些可扩展并且具有高吞吐量的计算特性(参阅 参考资料)。
  • 按需云 HPC 服务进行了扩展,它非常注重集群、存储、协处理器和弹性扩展:
    • 许多私有和公共 HPC 集群占据了 TOP500 的排名,它们运行 Linux® 并使用常见的开源工具,所以用户可在小型集群上构建和扩展应用程序,但有时候需要迁移到云中,根据需要执行大型作业处理。一些公司(比如 Penguin Computing,它拥有 Penguin On-Demand)利用了现成的集群(InfiniBand 和融合的 10G/40G 以太网)、Intel 或 AMD 多核无头节点、GP-GPU 协处理器和可扩展的独立冗余磁盘阵列 (RAID) 存储。
    • IBM 平台计算服务 提供了 IBM xSeries® 和 zSeries® 按需计算,以及一些工作负载管理工具和特性。
    • 许多大学和创业公司都在利用按需 HPC,使用云服务或现成集群为自己的私有服务提供补充。我知道的这方面的两个示例是 University of Alaska Arctic Region Supercomputing Center (ARSC) Pacman (Penguin Computing) 和 University of Colorado JANUS 集群超级计算机。一种常见的 Red Hat Enterprise Linux (RHEL) 开源工作负载工作集和开放架构允许将应用程序从私有云迁移到公共云 HPC 系统。

图 1 显示了自上世纪 90 年代中期迁移到集群和 MPP 的 TOP500。

图 1. 自 1994 年以来向集群和 MPP 演化的 TOP500
该图显示了向集群演化的过程

按需云 HPC 方法需要定义明确的现成集群、计算节点和对传输工作负载过程中的 WAN 延迟的容忍能力。就此而言,这些系统不可能进入 TOP500 的前列,但它们可能入围 Green500,为许多工作负载提供高效的扩展能力,而且现在占据了 Top500 的大部分席位。


高清视频计算机视觉:一个可扩展 HPC 案例分析

我们大部分人使用的都是压缩的数字视频,常常是 Motion Picture Experts Group (MPEG) 4 格式,而且没有想过在数据速率和处理上扩展高清 (HD) Web 摄像视频,以便应用简单的图像处理分析。数字制片工作流和后期制作专家非常清楚这些挑战。他们处理每帧 4K 的数据(大约 4 兆像素)或高得多的分辨率。这些帧可能是压缩的,但它们不会像 MPEG 那样以图片组的形式不断压缩,而且常常是无损压缩。

要理解涉及 FLOP 的 HPC 问题、未压缩数据和可用于扩展的工具,让我们看一次简单的寻边(edge-finder)器转换。transform-example.zip 包含将一个实时 Web 视频流实时转换为 Sobel 或 Canny 边缘视图的 Open Computer Vision (OpenCV) 算法,参见图 2。

图 2. 高清视频 Canny 边缘转换
该图显示了一种 Canny 边缘转换

将云 HPC 用于视频分析,可部署更智能的智能电话应用程序。或许电话处理器有一天将能够处理实时高清视频面部识别,但目前,是需要云 HPC 提供帮助的。同样地,来自数据中心的数据(比如地理信息系统 (GIS) 数据)需要通过密集的分析处理来划分场景,从立体视觉中创建 3D 数据的云,从而识别有用的目标(比如著名的地标)。

增强现实和视频分析

视频分析涉及到从非结构化视频(文件)和视频流(比如面部识别)收集结构化(数据库)信息。许多早期的关注点是安全和监视自动化,但应用程序正在快速增多,而且现在用于更加社会化的应用,比如面部识别,可能不是用于识别某个人,而是采集和记录他们的面部表情和情绪(在购物时)。此技术可与增强现实相结合,通过分析来使用有帮助的信息(比如导航数据)更新某个场景。视频数据可能已被压缩并上传到仓库规模数据中心进行处理,以便能够收集分析数据,提供无法在用户智能电话上使用的信息。图像处理是计算密集型的,涉及到大数据存储,而且可能具有更大的挑战(参阅 参考资料,获取更多信息的链接)。

有时,在现场收集数字视频时,必须将数据传递给计算资源;但如果可能的话,只应在必要时移动数字视频,以避免执行编码压缩和解码解压来查看数据。称为编解码器(编码器/解码器)的专业协处理器被设计用于解码,无需使用软件和协处理器来呈现图形 (GPU),但到目前为止,还没有 CV 协处理器被广泛使用。Khronos 在 2012 年末启动了一项计划来定义 OpenCV 的硬件加速,但这项工作才刚刚开始(参阅 参考资料)。所以,目前为止,CV 更多的是一种主要吸引数字制片人注意的 HPC 应用,但鉴于移动和云领域对 CV 的兴趣,此现状正迅速发生改变。

尽管我们都在想象在移动机器人上实现 CV,但在我们将 CV 用于智能运输的多功能显示屏中以及个人用途的设备(比如现在推出的 Google 眼镜)上,还无法肯定所有处理都必须在嵌入式设备上完成,或者它甚至应该能够这么做。原因在数据上:无法访问相关的数据中心数据,CV 信息就没有多大价值。例如,知道您在何处而没有更多地图和 GIS 数据来帮助到达接下来将去的地方,会有多大价值?实时 CV 和视频分析正在取得进步,但它们面临着许多挑战,包括巨大的存储需求、极高的网络传输比特率,以及用于解释数据的重大的处理需求。无论处理是由云 HPC 集群还是嵌入式系统完成,显然并发和并行处理都会发挥重要作用。尝试在我拍摄的 12 兆像素的仙人球照片 上运行一次简单的 Hough 线性变换,您将了解为什么需要 HPC 来以 60 帧/秒的速率分割一个场景。


让算法并行化的挑战

同时包含集群和 MPP 的 HPC 需要编码方法,以在每个多核节点上利用大量执行现成,使用消息传递接口 (MPI) 和基本方法来映射数据和编码,以处理资源和收集结果。对于数字视频,如果在帧级别上完成,映射可能很简单。在一个帧内更复杂,但也好过将帧分割并重新拼合到一起的步骤。

MapReduce 的强大功能

MapReduce 概念一般与 Google 和开源的 Hadoop 项目(来自 Apache Software Foundation)相关联,但任何并行计算都必须采用此概念来获得加速,无论是使用 Java™ 技术在节点或集群级别上完成,还是在针对非一致内存访问 (NUMA) 共享内存在线程级别上完成。对于数字视频分析等应用,映射是数据密集型的,所以将(在映射阶段)该功能转移到数据上会很有用,但无论如何,要处理的数据都必须被映射和处理,然后将结果结合在一起。聪明的映射会尽可能避免数据依赖性和同步的需求。在图像处理情形中,对于 CV,映射可在一个帧内,在帧级别上或按图片组来执行(参见 参考资料)。

为按需云 HPC 设计集群扩展应用的重要工具包括:

  • 在线程方式中,单个应用程序(或 Linux 进程)是一个集群节点上的一个地址空间,可设计为使用该节点上的所有处理器核心。这常常使用 Portable Operating System Interface for UNIX® (POSIX) Pthreads 或使用一个库(比如 OpenMP,它抽象 POSIX 线程的低级细节)来完成。我发现 POSIX 线程非常简单,并且通常编写 Pthread 代码来实现,如 hpc_cloud_grid.tar.gz 示例中所示。此示例将线程映射到数字空间,以便进行素数搜索。
  • MPI 是一个库,它可链接到某个集群并行应用程序中,协助将处理能力映射到每个节点,然后执行同步和精减结果。尽管可以使用 MPI 实现 MapReduce,但不同于 Hadoop,它通常将(消息中的)数据转移到某个在每个节点上运行的程序函数(而不是将代码转移到数据中)。在本系列最后的视频分析文章中,我将提供一个线程,以及采集-转换代码的 MPI 集群可扩展版本。在这里,我提供了单个线程和节点的简单代码以供参考。可同时运行它和 Linux dstat 来监视 CPU、I/O 和存储使用情况。它是一个资源密集型的程序,在一个 2560x1920 像素图像上计算 Sobel 和 Canny 转换。它应该运行在任何具有 OpenCV 和网络摄像头的 Linux 系统上。
  • 在编译期间,可在 Intel 和 AMD 节点上使用一个开关来完成矢量 SIMD 和 SPMD 处理,或者花费更多的精力,在 CUDA 或 OpenCL 中创建转换内核,将工作赋给到 GPU 或 GP-GPU 协处理器上。
  • OpenCV 对视频分析非常有用,因为它不仅包含便捷的图像采集、处理和显示功能,还包含 CV 中使用的最优秀的图像处理算法。

按需云 HPC 的未来

本文探讨了云 HPC。本文的目标是让您熟悉该理念和一些挑战,熟悉那些引人注目的应用(比如 CV),并向您介绍编写可在集群和 MPP 机器上扩展的应用程序的方法。在未来的文章中,我将在 CV 示例上更进一步,调整该示例,使它不仅适用于线程,也适用于 MPI,这样我们就可以检查它在云 HPC 上(在我的示例中,在 Pacman 或 JANUS 的 ARSC 上)的扩展能力。我的研究涉及到对比紧密耦合的 CV 协处理器(我使用称为计算机视觉处理单元 [CVPU] 的一个 Altera Stratix IV FPGA 来构建的)。我将此结果与在 ARSC 上使用 CV 实现的结果进行了对比,以便了解环境感知数据和 GIS 数据是否可以像图形那样,使用协处理器进行处理、在集群上进行处理或结合使用二者得到最佳处理。该研究的目标非常深远。对于 CVPU,在我设想的类似图灵机的 CV/图形测试中,可以将 CVPU 分析的场景发送给某个 GPU 来呈现它。在理想情况下,分析/呈现的图像可与真正的数字视频流区分开。在呈现的场景和分析它们的能力达到某种共同的保真度时,增强现实、感知计算和视频分析将拥有改变我们的生活的神奇力量。


下载

描述名字大小
连续高清数码相机转换示例transform-example.zip123KB
网格线式素数生成器基准测试hpc_cloud_grid.tar.gz3KB
转换高清图像的基准测试Cactus-12mpixel.zip12288KB

参考资料

学习

获得产品和技术

  • 以最适合您的方式 评估 IBM 产品:下载产品试用版,在线试用产品,在云环境中使用产品,或者在 SOA 沙盒 中花几小时学习如何高效地实现面向服务的架构。

讨论

条评论

developerWorks: 登录

标有星(*)号的字段是必填字段。


需要一个 IBM ID?
忘记 IBM ID?


忘记密码?
更改您的密码

单击提交则表示您同意developerWorks 的条款和条件。 查看条款和条件

 


在您首次登录 developerWorks 时,会为您创建一份个人概要。您的个人概要中的信息(您的姓名、国家/地区,以及公司名称)是公开显示的,而且会随着您发布的任何内容一起显示,除非您选择隐藏您的公司名称。您可以随时更新您的 IBM 帐户。

所有提交的信息确保安全。

选择您的昵称



当您初次登录到 developerWorks 时,将会为您创建一份概要信息,您需要指定一个昵称。您的昵称将和您在 developerWorks 发布的内容显示在一起。

昵称长度在 3 至 31 个字符之间。 您的昵称在 developerWorks 社区中必须是唯一的,并且出于隐私保护的原因,不能是您的电子邮件地址。

标有星(*)号的字段是必填字段。

(昵称长度在 3 至 31 个字符之间)

单击提交则表示您同意developerWorks 的条款和条件。 查看条款和条件.

 


所有提交的信息确保安全。


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=10
Zone=Cloud computing
ArticleID=940522
ArticleTitle=云扩展,第 1 部分: 构建计算节点或小型集群应用并利用 HPC 进行扩展
publish-date=08122013