我是靠谱客的博主 开朗绿茶,最近开发中收集的这篇文章主要介绍针对多核架构下的并行排序,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

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

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

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

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

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

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

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

1、采用分布式内存管理

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

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

最后

以上就是开朗绿茶为你收集整理的针对多核架构下的并行排序的全部内容,希望文章能够帮你解决针对多核架构下的并行排序所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(53)

评论列表共有 0 条评论

立即
投稿
返回
顶部