`
ld_hust
  • 浏览: 170316 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

不能实施并行处理的情况

阅读更多
作为一名软件开发人员,您在决定是否以及如何针对并行架构修改您的应用时会面临众多选择。应采用哪种方法?对应用的修改程度如何?何时应“拒绝”实施并行处理?要回答这些问题,不仅需要深厚的技术专业知识,还需要从战略角度评估业务优势和成本。在权衡选择时,请考虑以下建议,这些建议源于我们在英特尔与软件开发人员合作优化代码时总结出的经验。

不要对非优化的串行代码进行并行处理
毋庸置疑,并行化是为当前和未来的各代硬件升级应用性能的一个重要方法。此外,优化应用的第一步不应是线程化,而应是确定您能否借助串行和矢量优化来实现性能目标。在某些情况下,通过优化串行代码所能实现的性能提升要比创建并行代码高。

如果串行代码的运行速度足够快,则不要进行并行处理
尽管您能够并且应当使您的代码支持未来架构,然而现在竭力满足尚未成形的需求也许时机尚未成熟,从而不会为您带来可观的成本效益。使用当前架构无法支持的高水平并行处理能力开发代码,这是少有的充分利用资源的方法。当然,如果您的代码受 I/O 或内存限制,那么对代码进行并行处理便无济于事了。

不要花费时间试图即刻对您以前的所有工作进行并行处理。仅当构建新代码或重建部分现有代码时再考虑使用并行处理。与其按顺序解决问题,不如考虑如何将这些问题分解为可以同时执行的单独片断。

在考虑需要长期执行的并行处理工作量时,请先确定应用工作负载的扩充速度,以及该扩充速度将如何影响计算需求。计算量可能会随数据集的增大呈线性增长,或者以较快或较慢的速度呈几何倍数增长。(如果工作负载随数据增长呈线性扩充,请注意代码会在某一点遇到 I/O 瓶颈。)

例如,由于一个音频处理应用已经能够以适当的取样率处理足够数量的信道,这个应用就不太适合并行处理。而另一方面,物理建模应用可能是理想的备选应用,因为借助更强大的计算能力,建模应用可以实现更精细的建模和更精确的算法。

总之,应确保并行处理应用所得收益超出延迟发运下一代产品所造成的损失。

不要通过从头重写代码进行并行处理
不要因噎废食。不要放弃整个正在使用的代码库,因为这是拙劣、绕弯而老套的做法。Netscape 的经历就是一个警示。软件开发人员 Joel Spolsky 在其博客中谈道,1997 年至 2000 年间,Netscape 重新编写了其浏览器的整个代码库,但未推出任何新的浏览器版本,于是微软趁机接收了浏览器市场,而 Netscape 再也未能翻身。

正如 Spolsky 所述,大多数程序员都致力于编写更完善的代码。通过开发流程,大量代码被添加和修改,因此最后得到的代码可能不太好看。然而如果重写代码,您就失去了上述代码块所代表的知识。而且在任何情况下,人们的眼中总会看到不好的一面。就像计算机代码,人们读起来可能很费力,但它却能够正常工作。

总会有一些需要重新开始的情况。然而,通过分解类或子例程来引入并行处理可能远比从头开始更加有效。

如果已有人为您完成了工作,则不要进行无谓的并行处理
在处理您的代码或尝试亲自对其进行并行处理之前,请查看商业或开放源代码解决方案能否提供您所需的内容。例如,如果您正在使用科学或技术应用,那么您也许会发现常用数学库中的标准例程可以帮您节省宝贵的时间。

请考虑使用英特尔® 软件工具(http://www3.intel.com/cd/software/products/asmo-na/eng/index.htm)。例如,借助英特尔® 线程构建模块,一种基于 C++ 模板的并行结构与算法运行时库来显著简化您的工作。借助这些结构,您的代码能够随执行内核数量的增加而自动扩充。此外,这些结构的设计还能够与其它线程技术(包括其它并行库)相兼容,如英特尔® IPP 高效多媒体函数库和英特尔® 数学核心函数库。借助编译器或 OpenMP*,提供更多方法来轻松增添并行能力。

不要冲动行事
多核架构的出现掀起了计算机技术领域的一场革命,但是利用多核技术的优势这一工作需要循序渐进地执行。多线程和其它并行化软件方法是复杂的任务,可能需要大量资源。应将并行化作为一种投资——在需要时进行部署,但首先要考虑成本和收益。
分享到:
评论

相关推荐

    ORACLE数据库优化之SQL语句的并行处理.pdf

    ### ORACLE数据库优化之SQL语句的并行处理 #### SQL语句并行处理的重要性与优势 在现代信息系统的高效运作中,数据库的性能优化至关重要,尤其是面对大规模数据集时。Oracle数据库作为企业级数据库解决方案的佼佼...

    基于并行处理技术的分布式3维数据动态调度策略

    通过实施上述并行处理技术和分布式架构,不仅可以显著降低硬件成本,还能大幅提高运算速度,从而更好地完成3维数据处理任务。具体优势包括: - **资源利用效率提高**:分布式架构允许将计算任务分散到多个节点上,...

    行业分类-设备装置-一种并行处理方法及装置.zip

    并行处理方法的设计与实施需要考虑多个因素,包括负载均衡、通信开销、数据一致性以及并行算法的选择。负载均衡是确保所有处理器都得到充分利用的关键,避免某些处理器过载而其他处理器闲置。通信开销是指处理器之间...

    行业分类-设备装置-并行处理TDSOFDM定时同步方法.zip

    在实施并行处理TDSOFDM定时同步时,还需要考虑以下几个关键点: - **同步指标**:选择合适的同步指标,如相关函数的最大值、能量检测等,这些指标能够有效地反映信号的同步状态。 - **硬件资源**:并行处理需要更...

    行业分类-设备装置-任务并行处理方法和装置.zip

    "行业分类-设备装置-任务并行处理方法和装置"的主题涉及到如何设计和实施这种并行处理机制,以提升系统效率和响应速度。 首先,任务并行处理的核心思想是将一个大型任务分解为多个较小的子任务,这些子任务可以在...

    DM7大规模并行处理MPP

    达梦大规模并行处理(MPP)是达梦数据库管理系统所特有的对等无共享式集群组件,它能够将多个数据库实例组织成一个并行计算网络,实现统一的数据库服务。MPP架构特别适用于海量数据分析的场景,它能够提供强大的系统...

    PostgreSQL并行管理

    尽管并行查询在许多情况下能显著提高性能,但在某些条件下可能不适用。例如,当所有CPU核心已经被其他查询占用时,启用并行执行可能会导致CPU资源的争抢,从而增加响应时间。并行处理还会显著增加内存的使用,特别是...

    并行计算.pdf

    并行算法是指在多处理器环境中设计和实施的算法,能够同时执行多个任务,以减少解决问题所需的时间。并行算法的重要性在于: - **提高性能**:对于计算密集型任务,使用并行算法可以在短时间内完成计算。 - **扩展...

    行业分类-设备装置-一种动态并行处理银行数据的方法及系统.zip

    这个压缩包内容对于理解如何利用动态并行处理技术优化银行业务流程,提升数据处理能力具有重要价值,对于IT专业人士来说,无论是系统架构师、数据工程师还是银行IT部门,都能从中获取宝贵的信息和灵感。

    DATASTAGE并行作业教程

    DataStage的核心优势在于其并行处理能力,能够通过分布式计算环境加速数据处理流程,显著提升数据仓库的构建效率。本文将围绕DataStage并行作业的开发进行深入探讨,旨在帮助读者掌握DataStage并行作业的设计与实施...

    图的并行广度优先遍历

    在实施并行BFS算法时,需要注意数据竞争、负载平衡和通信开销等问题。数据竞争可能发生在多个并行处理单元访问同一数据时;负载平衡是指要尽量确保每个处理单元的任务量大致相等,避免出现部分处理单元空闲而其他...

    行业分类-设备装置-一种FFT和IFFT逆序数表的并行处理方法.zip

    标题中的“行业分类-设备装置-一种FFT和IFFT逆序数表的并行处理方法”揭示了这个压缩包文件内容主要涉及的...通过并行处理,不仅能显著提高计算速度,还能有效利用现代计算硬件的资源,以应对大数据和实时处理的挑战。

    并行算法实践 ppt

    7. **并行计算环境**:并行计算可以在单个多核处理器、多台计算机的集群,甚至是云计算平台等不同环境中实施。不同的环境对并行算法的设计和实现有不同的要求。 8. **错误处理与容错性**:并行系统中,由于并发和...

    基于Python的“地理处理”并行方案.pdf

    随着地理数据量的大幅增长,传统单一核处理器的计算能力已不足以高效处理这些数据,因此必须利用现代计算机的多核处理器进行并行处理,以提高数据处理的效率。 文章首先指出,ArcGIS软件中的地理处理工具在处理大型...

    国外并行工程研究与应用进展综述

    此外,实施并行工程的要素包括跨功能团队的建立、基于过程的组织模式的采用、信息技术的支持、以及供应链内部的标准化和术语统一等。 ### 实施并行工程的组织模式 并行工程的实施离不开有效的组织模式。传统的顺序...

    一种基于群集的并行数据处理中间件.pdf

    随着大数据和高性能计算的需求增加,利用并行处理来提升数据处理效率变得至关重要。这种中间件系统,称为HPDPM,设计用于共享无状态集群架构,目的是让数据库系统能够充分利用并行共享无状态系统的性能优势。 ...

    基于嵌入式并行处理的视觉惯导SLAM算法研究1

    【嵌入式并行处理】嵌入式并行处理是指在嵌入式系统中利用并行计算资源,如GPU(图形处理器)进行多线程运算,以提高计算效率和实时性。在本文中,这种技术被应用于视觉惯导SLAM算法,通过GPU加速图像特征点的深度...

Global site tag (gtag.js) - Google Analytics