65.9K
CodeProject 正在变化。 阅读更多。
Home

关于线程的思考。

starIconstarIconemptyStarIconemptyStarIconemptyStarIcon

2.00/5 (1投票)

2017年9月18日

CPOL

6分钟阅读

viewsIcon

14436

TotalView 包含一套工具,可为科学和学术开发者提供对进程和线程执行的控制,并深入了解程序状态和数据。

尝试 Intel® Parallel Studio XE

摩尔定律在几十年里一直可靠地预测着处理器性能每两年翻一番,但现在正面临着一系列新的挑战。传统处理器在量子物理层面遇到了瓶颈,并且在获得更快速度时需要处理产生的热量。作为回应,英特尔和 AMD 等处理器制造商转向了多核技术和并行化以提升处理器性能。

在不久的过去,软件工程师不必担心创建复杂的多线程或多核代码——他们只需要编写单线程代码,然后依靠硬件供应商每两到三年刷新一次架构。应用程序运行得更快,工程师无需费心。

关注并行化

所有这些都随着英特尔至强融核(Xeon Phi)系列等新型强大架构的出现而改变。但要利用这些额外的核心,处理器制造商不得不在硬件和软件组合中加入并行化。通过降低延迟和提高吞吐量实现的更高速度是其中一个好处。这对于致力于缩短单个作业(例如电话交换机应用程序)的“挂钟时间”的开发者,或者专注于在特定时间内处理最多作业的吞吐量开发者来说尤为重要。

对开发者而言,这一转变意味着他们必须从设计过程的早期就开始考虑如何并行运行应用程序。幸运的是,现在有一系列新的选项可供选择,包括利用多线程或配置多个处理器并行运行。多核系统可能将单个处理器专门用于特定应用程序。例如,一个采购订单处理系统可能有一个处理器或一个线程专门用于运行基于 Word 的应用程序。另一个可能处理 Excel 电子表格,还有一个处理 Internet Explorer 正在处理的任务。所有这些单独的应用程序都可以并行运行。这可能涉及进程间通信。

如果开发者决定基于系统的多线程能力开发并行代码,那么情况可能会变得复杂。学习如何为多线程系统编写应用程序被广泛认为是软件编程中最困难的任务之一(如果不是最困难的话)。以前程序员只需要处理一个线程。现在,对一个为多线程处理设计的复杂应用程序的某一部分进行更改可能会影响整个系统——一切都必须改变,从而产生新的复杂性。

线程的完整性和安全性成为问题。新线程可能会与现有线程不同步,开发者可能会在诊断问题时遇到重大困难。时序可能非常紧张——毫秒级的行为不一致可能引发多个看似自主的问题。

英特尔与 Rogue Wave Software 合作

在此环境中,调试是最困难的任务,它对开发者提出了新的挑战,或者促使他们开始使用能够极大地简化和抽象这些复杂性的工具。他们可以处理 C、C++ 和老式 FORTRAN 等不同语言。Intel 的 VTune 就是其中一个工具,Rogue Wave 的领先调试器 TotalView for HPC 也是。两家公司最新的合作成果是 TotalView Xeon Phi Debugger。

据 Rogue Wave 称,TotalView 支持更快的故障隔离、改进的内存优化以及对通常涉及数百甚至数千个核心的大规模并行和多核应用程序的动态可视化。TotalView 包含一套工具,可为科学和学术开发者提供对进程和线程执行的控制,并深入了解程序状态和数据。

Rogue Wave 的首席产品经理 Marty Bakal 表示:“TotalView 允许在单个窗口中同时调试 多个进程和线程。“开发者可以对程序执行进行完全控制。”这使得开发者能够在单个线程或任意一组进程或线程中运行、单步执行和暂停应用程序。他们还可以通过反向调试从失败中回溯,通过消除重复重启应用程序、重现和排查并发程序中可能出现的困难问题的需要,从而更快地找到根本原因,这些并发程序利用了线程、OpenMP、MPI、GPU 或协处理器。

TotalView 为开发者提供全面支持,使他们能够查看、控制和调试 Intel Xeon Phi 处理器。例如,TotalView 提供

  • 支持原生、卸载和对称编程模型
  • 支持 Xeon Phi 上原生和对称应用程序的内存调试
  • 完整的异步线程控制
  • 某些断点共享
  • 支持集群和多设备配置
  • 支持将 MPI 和混合 MPI + OpenMP 原生启动到 Intel Xeon Phi

展望未来

如今,英特尔在市场上的产品主要是拥有 24 个核心的机器——6 个芯片,每个芯片有 4 个核心。但对未来几年处理器发展进行的推测性路线图预测,机器将拥有 100 个核心。其中包括一些需要解决的重大障碍。例如,开发者可能会获取一段传统软件,做所有正确的事情使其高效地并行运行,调试整个系统,并将其放到一个 8 核机器上运行,运行得非常好,充分利用了所有 8 个核心。但当移植到 96 核机器上时,一切都会停滞。这个问题将得到解决,但挑战从未停止——例如,由 I/O 和数据访问复杂性产生的新瓶颈需要应对。

以下是未来可能出现的其他一些随机场景。再加上一些提示

  • 将构建具有高速背板的系统,其中所有机架共享背板,使其看起来像一个大盒子。应用程序将运行,就像在一台机器上有 128 个核心可用一样。
  • 未来的软件解决方案将利用现有的应用程序,如 MPI 和 OpenMP。OpenMP 将把线程任务交给编译器,从而减轻开发者的负担。
  • 提示——在开发周期的早期考虑并行性。以便在设计后期充分发挥其强大功能和复杂性。
  • 同样,在开发阶段早期,最好是在设计阶段开始时,就研究所有可用的工具。
  • 最后,请务必彻底掌握并行编程基础知识,包括线程和多进程。软件开发领域正在展开一个全新的世界,而并行处理是其核心。

本文是英特尔高性能计算(HPC)编辑计划的一部分,旨在通过先进技术突出 HPC 社区驱动的前沿科学、研究和创新。内容发布者拥有最终编辑权,并决定哪些文章发布。

© . All rights reserved.