zoukankan      html  css  js  c++  java
  • 针对多核架构下的并行排序

    在多核环境中,排序时如果仍然使用单核时代的串行排序算法的话,那么只能有一个CPU核在运行,其他CPU核将得不到利用。因此多核环境中的排序一般需要用到并行排序算法。

    并行排序算法和串行排序算法相比,会增加一些额外的开销,如计算开销或空间开销。那么在并行排序算法中,有那些需求呢?下面给出一些并行排序方面的需求供参考。

    需求1:算法能随CPU核数扩展,即CPU核数升级后不需要修改算法就可以取得加速比性能的线性增加。

    需求2:算法能有一个较好的能耗效率,算法并不是越快越好,而是需要在速度和CPU能耗方面取得均衡,有时候为了追求效率,但是却让CPU能耗提高了许多。最好的做法是加速比能够达到一定目标的情况下尽量降低CPU能耗。也就是说不需要片面去追求将程序并行化。有些时候程序串行执行比并行执行慢不了多少,但是CPU能耗却降低了不少。

    需求3:需要控制线程的粒度,否则线程粒度太细,频繁创建线程会导致大量的额外开销,从而使得效率大大降低。

    需求4:在设计并行排序算法时,还要考虑内存管理的开销,由于并行算法使用了多个线程,如果内存分配和释放操作频繁的话,那么花费在这方面的开销将是非常可观的,因为常规的内存分配和释放需要进行加锁解锁操作。

    当然有一些方法来缩减内存管理方面的开销

    1、采用分布式内存管理

    2、如果需要进行多块内存的分配,那么可以先分配一块大的内存,然后再将分配的大的内存划分成对应的多个小块。

    并行排序算法有许多种,不同的应用场景中需要使用不同的排序算法。一般来说,主要是针对不同的数据量,需要使用不同的算,如数量量很少的情况下,插入排序就足够了,数据量特别大的情况下,需要使用基数排序,一般情况下可以使用快速排序和归并排序。

  • 相关阅读:
    python之openpyxl模块(最全总结 足够初次使用)
    随笔 遇见
    浅析企业服务器安全防护的七个切入点
    jQuery.API源码深入剖析以及应用实现(1) - 核心函数篇
    常用Javascript精选(二)
    随笔 生活与生命
    jquery插件 8个很有用的jQuery插件
    jquery插件 5个小插件
    常用Javascript精选(一)
    jQuery库与其他JS库冲突的解决办法(转)
  • 原文地址:https://www.cnblogs.com/shine-yr/p/5214985.html
Copyright © 2011-2022 走看看