多核处理器:软件成功的关键

多线程并行计算软件和适当的用户工具推进了多核处理器高性能和电源效率的承诺。链接到这个四部分系列中的其他3篇控制工程文章。

2011年1月17日

软件开发人员在为多核处理器(mcp)编写代码时需要更多地关注并行性。(下面,链接到这个四部分系列中的其他三篇控制工程文章。)

公司软件产品经理Casey Weltzin说国家仪器公司在美国,开发人员需要更多地考虑编程,如果他们想要调整MCP应用程序,以使用不同的内核获得最高的性能。这就是Weltzin所说的当今软件设计师所面临的“人为复杂性”的一个例子。

软件设计人员面临的一个主要问题是如何简化处理器不同核心之间的数据流链接。最终,核心中正在进行的独立操作必须通过一种称为内存架构.“已经有一些工具可以提供帮助。它们减少了程序员考虑底层硬件的需求,让他们能够专注于编程。”Weltzin说。

有两种基本方法可以使软件应用程序适当地并行以利用mcp多任务处理而且线程。

多任务处理

在多任务处理中,两种方法中更简单的是,不同的进程可以映射到不同的核心,因为许多操作系统(OS)允许用户分配进程的“核心亲和力”,这告诉操作系统在特定的核心上运行特定的进程,at的工业自动化战略营销经理Ian Gilvarry解释道英特尔(intc . o:行情)。操作系统还将具有SMP(对称多处理),即在两个核心之间划分操作系统进程的能力。Gilvarry说:“采用这种多任务处理方法后,系统上的计算负载将被分割,两个核心都将工作。”“然而,多任务处理并不容易扩展到更多核(比如4核或8核),但这是一种短期的方法,它的简单性将鼓励大多数客户首先尝试。”

随着内核数量的增加,多任务管理将多个进程调度到不同的内核成为问题。Gilvarry提出了利用MCP技术的三大策略:

  • 多任务处理,允许启用smp的操作系统在其他核心上调度其他任务——例如,为应用程序A释放核心1
  • 分布式处理,在所有核心上提供粗粒度的“重量级进程”分布,提供更好的负载平衡
  • 应用程序线程,它提供细粒度的“轻量级进程”分布到所有核心,提供最佳的负载平衡和可伸缩性。

Gilvarry认为这三种策略是实现mcp预期目标的“好、更好、最好”的方法。

线程

至于实现“最佳”方法,他概述了将串行单线程应用程序转换为多线程并发应用程序的四个步骤。

1.分析并行性:这通常涉及到一个分析工具来确定程序中的热点,并生成应用程序的调用图*。如何并行化是在找到热点后确定的。“线程助手”工具可用于将热点信息集成到并行化代码的可行性分析中。例如,该工具可以回答这样的问题:多线程的预期加速是多少?相对于同步,哪些变量最受关注?

[*“调用图”提供软件程序的基本概要分析,例如跟踪过程之间的值流。它表示调用之间的关系子例程在软件中程序根据维基百科。调用图分析允许用户分析程序中的关键函数和调用序列,指示创建的线程、内存中执行的函数等。英特尔提供了更多关于图形分析和调用图的信息。

2.表达并行性:将使用什么编程抽象?应该使用特定于领域的多线程库,还是最终用户发现并行并编写代码?将使用什么语言或应用程序编程接口(API) ?

3.利用并行性:在这里,实现和执行多线程代码的实际软件工具开始发挥作用。这包括编译器、运行时引擎和api,它们使分区更加高效和简单。硬件支持与此区域重叠。为了验证并行性,调试器需要扩展来处理多个同时执行的处理器的操作所增加的困难。如何为开发人员简化这一点也有改进的空间。

4.优化并行性:这一步涉及线程的开销和平衡问题。需要回答的一些问题:锁有效吗?并行度的粒度是否合适?我们如何帮助开发工程师知道他们什么时候做对了,并知道他们在特定的应用程序上可以做得更好?

用户工具

mcp依赖于适当的多线程编程和调试工具来高效地执行多个程序。处理器供应商和软件开发人员正在响应这种用户需求。

数据流编程是软件工具中使用的一种通用方法,用于识别在不同核心中正在进行的计算之间的问题,并管理代码的并行部分。例如,国家仪器公司的LabVIEW图形软件包就包含了数据流。当用户在LabVIEW中创建程序时,数据流有助于将不同的、同时进行的操作连接起来——同时智能编译器会自动分析代码的线程性和并行性。Weltzin解释说,LabVIEW的运行时引擎可以自动跨多个cpu运行数据流应用程序。

另一个值得注意的并行计算开发工具是Intel公司的parallel Studio 2011集成开发环境(IDE)的Microsoft Visual Studio并且与C/ c++应用程序兼容。Parallel Studio的工具包括线程助手、带有库的优化编译器、内存和线程错误检查器以及线程性能分析器。该软件套件由独立的元素组成,概述如下:

英特尔并行顾问2011是一个简化和辅助代码线程的工具。据说它可以识别并行(和串行)应用程序中并行性具有最大潜在影响的领域。

英特尔并行编写器2011旨在通过工具组合简化并行应用程序开发,包括优化C/ c++编译器、性能库和对英特尔并行构建块的支持。后者是一组用于实现广泛的并行性需求的开发模型。

英特尔并行检查器2011是内存和线程错误检查器。据报道,并行检查器允许C/ c++开发人员快速分析代码,并在线程和内存错误引起问题之前发现它们。

英特尔并行放大器2011是一种性能和可伸缩性工具,可帮助确保最佳地使用多核和处理器功能。并行放大器据说可以快速发现多核性能瓶颈,而不需要特定处理器架构或汇编代码方面的专业知识。

简而言之,Parallel Studio允许软件开发人员为多核处理器设计、构建/调试、验证和调优并行应用程序。

上述挑战并不是为了阻止工业自动化设计人员在其系统中应用多核cpu。“相反,他们需要专注于使用正确的工具来缓解设计挑战和降低风险,以实现并行处理器所能提供的好处,”国家仪器公司的Weltzin总结道。“多核处理器的未来是软件编程,可以减少对硬件的关注。工程师们已经面临了太多人工制造的复杂性。”

有关此主题的更多信息,请参阅2011年2月关于多核处理器的专题文章。

www.intel.com

www.ni.com

弗兰克·j·巴托斯,体育老师控制工程贡献内容专家。联络他的地址是braunbart@sbcglobal.net。

本系列的其他文章

计算能力:多核处理器有助于工业自动化——一个微处理器芯片上的两个或多个独立执行内核可以通过在更低的频率和更少的功耗运行来达到或超过单核芯片的性能。不同的软件编程需要获得充分的好处。

关于多核处理器的见解——英特尔表示,多核处理器技术通过提供更好的“原始”和实时性能,解决了众多工业控制挑战。这是由于关键应用程序需要快速和可预测地响应实时事件。

越来越多的多核处理器应用-多核处理器具有广泛的工业应用潜力——从视觉检测系统到运动控制——随着开发人员越来越多地实施这项技术,最初是在高端系统中。