如何实现通信计算及存储的动态优化02612113龚轩随着时代的高速发展,我们已经逐步进入了一个大数据时代。在这个信息爆炸的时代,对通信计算与存储的要求大幅度提升。因此,我们必须对通信计算及存储进行优化,以适应时代的要求。接下来,我将从通信计算和存储这两个方面对动态优化提出我的看法。对于通信计算的优化,我主要从大规模并行计算通信来分析其优化。随着系统规模的不断增长和结点计算能力的提高,通信成为影响并行计算系统性能的重要因素。然而,通信对系统性能的限制涉及多种因素,例如,网络链路带宽尚不能与处理器的计算能力相匹配;又如,全局通信时间往往随系统规模增加而迅速增加。但是,国际上对于这些限制还未有统一的认识,尤其是对其内涵和量化均未有研究。通信可扩展性问题就是想定量的分析通信受哪些因素影响并且它们又是如何对系统的可扩展性产生影响的。因此,我们在这一节中主要介绍有关进程映射优化、通信消除以及通信延迟隐藏方面的工作。随着并行机规模的扩大,其不均匀的通信特点逐渐展现。如何将进程映射到并行机的各个处理单元对程序的性能有重要影响。在一般情况下,映射问题是NP完全的。我们不会过分追求其最优解,但是寻找不是最优但实际可行且效果满意的方法,仍是目前十分活跃的研究课题之一。较有代表性的方法包括图论方法、数学规划方法和启发式方法。图论方法是将并行程序和并行机用图的形式加以表达,然后利用图论的方法建立任务(进程)和处理单元间映射关系,产生有效的任务分配方案。网络流方法和图匹配方法是两类典型的图论方法。。数学规划方法是将任务分配(进程映射)问题概括成一种优化问题,然后利用数学规划技术去解决它。数学规划方法主要指的是0-1规划模型。该模型的主要思想是根据进程计算开销和通信开销的产生规则,得到程序完成的总开销的公式,然后求解使得该公式的值最小化的进程分配方案。常见的求解该模型的方法有分支限界算法、结合拉格朗日松弛和分支限界的最优化算法、基于线性松弛技术的算法、基于线性松弛和列生成技术的算法等等。与前两种方法不同,启发式方法的目标是找到问题的次优解。“合一—阈值”算法是一种典型的启发式方法,该算法包含“合一”和“调整”两个阶段。“合一”阶段查找其中这样一对任务(进程),即把它们合一后将消除最大的任务(进程)间通信开销。“调整”阶段则在“合一”阶段的基础上,根据各个处理器上规定的阈值,对各个处理器上的负载进行调整,将超过阈值的处理器上的任务(进程)迁移到未超过阈值的处理器上。除此之外,模拟退火方法遗传算法也是两种常用的启发式方法。启发式方法的描述简单,且效率较高。对于某些复杂问题,启发式方法甚至是唯一能解决它们的方法。通信消除技术包含了通常所说的冗余消息消除技术和消息合并技术:当这两条消息传递的数据完全相同时,则可将其中一条消息消除,即冗余消息消除;当这两条消息的数据部分相同或完全不同,则可将这两条消息合并,即消息合并。冗余消息消除就是消除程序中冗余的消息,从而减少通信的数据量,降低通信开销。所谓冗余的消息,是指传递那些接收方已经获得了的数据的消息。典型的冗余消息消除技术,例如交叉LWT(LastWriteTree)技术、FME(FourierMotzkinElimination)消除算法、基于Define-Use分析的冗余通信消除算法等都是借助编译技术实现的。在当代的并行系统中,消息启动时间常占通信开销的主导地位,并且在一般情况下,传送小消息时的网络有效带宽远小于传送大消息时的有效带宽。因此,将若干条满足一定条件的短消息合并为一条长消息,即消息合并技术,可以减少消息的启动次数,并有效利用网络带宽,从而减少通信的开销。其主要思想是先将发往多个目的结点的多条消息合并为一条长消息,发送给某个中间结点,然后再由此结点负责将这些消息转发到它们的目的结点。在通信开销不可避免的情况下,我们可以通过异步通信、指令重排等技术,使得消息在传递的同时,还有其它消息也在传递,或是处理器可以完成与这个通信无关的计算,即达到通信和通信或是计算和通信的互相重叠,实现通信延迟的隐藏,缩短程序的执行时间。在同步通信结束前,处理器必须空转等待直到同步通信结束。在大规模的并行系统中,通信经常需要较长的时间,那么在这段时间中,由于处理器需要等待同步通信的结束从而导致处理器大量的计算资源被浪费。异步通信方式则可将通信操作交给特定的通信硬件去完成,然后这些通信硬件在处理通信的同时,处理器还可以进行计算操作或启动其它的通信操作,从而达到计算与通信或通信与通信重叠的目的。对于非阻塞通信,一旦通信操作被交给硬件之后,处理器就可以进行与该通信无关的计算操作。指令重排就是在保证程序正确性的前提下,调整指令的顺序,实现计算与通信的最大重叠。指令重排的通用原则是“尽早开始通信,尽晚完成通信”。这是因为在开始通信和完成通信之间进行计算,如果通信启动得越早,完成得越晚,就有可能有更多的计算任务可以和通信重叠,也使通信可以在计算任务执行期间完成,而不需要专门的等待时间。对于存储的动态优化,我主要从数据仓库存储方面进行分析。随着互联网Web2.0技术的发展,数据量呈爆炸式增长,数据存储亦面临巨大挑战。在当前的大数据环境下,传统关系数据库由于自身特性的限制,难以很好地满足数据存储提出的新的需求。因此,有必要对异构大数据环境下的数据存储方法进行研究,寻找满足特定需求的通用的数据存储方案,为大数据存储问题的解决提供参考和借鉴,具有重要的理论意义和实践价值。在对数据仓库的存储进行优化时,常可从以下两个角度来进行处理:最大化系统性能;最小化资源需求。这两类优化方式相互制约,又相互联系。在数据仓库进行存储优化时需要在两者间获得一个平衡点,同时需要对网络操作的开销、数据库的查询操作、事务处理以及聚合的粒度设计等因素有关。而对存储需求影响最大的因素就是数据的稀疏度,即不包含数据的数据区域在多维结构中所占的相对百分比。一般地,稀疏的多维数据集比具有相同的结构设计的密集的多维数据所集需的存储空间要少。但对于高稀疏度的多维数据集来说,常可以采用数据压缩、不存储空值数据或通过算法对摘要汇总等方式进行有效地设计,从而在减少存储的需求的同时而不影响处理的速度。与稀疏度相应的指标则是数据仓库存储密度,即多维结构中包含数据的单元所占的百分比。其中,只存储包含数据的单元是一种常见的存储策略。密集的多维数据集比结构设计相同的稀疏的多维数据集需要更多的存储空间。另外,由于数据仓库是一种典型的三层式结构,网络的质量对系统的性能要求与影响都较大,当多用户对数据仓库进行访问查询操作时,为了保证并发操作的执行,在尽可能减少不必要的进程数的同时,要对数据存储和聚合的粒度进行限制。聚合的数目越多,响应时间就越快,但所需要的存储空间也就越大。因此设计出最优数目的聚合则是聚合粒度的设计的主要目标。该数目不仅能提供快速的响应时间,还能防止分区过大。此外,随着聚合的增加,早期的聚合比后来的聚合会产生更大的性能提升。因此可以通过为聚合指定存储空间限制或者指定一个性能提升的极限来控制聚合的数目。为了提高系统性能,在对数据仓库进行操作的过程中,采用面向集合的操作通常比带有游标的操作响应速度快。而在使用游标时只选择所需要的列,或者使用前向游标或只读游标操作可以有效地提高运行效率。以上内容就是我对通信计算及存储的动态优化的一点小小的看法。我相信随着时代的发展,优化技术也会越来越完善,人们的生活也将越来越轻松。