栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

分布式与并行计算—Java实现并向算法

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

分布式与并行计算—Java实现并向算法

资源下载地址:https://download.csdn.net/download/sheziqiong/85657012
资源下载地址:https://download.csdn.net/download/sheziqiong/85657012

分布式与并行计算 课程Project 运行时间
  • 为了减小偶然性因素造成的时间差异,对每一个算法重复运行10000次,取平均耗时。
  • 考虑到“枚举排序”所需时间( O ( n 2 ) O(n^2) O(n2))远远长于另外两者,因此“枚举排序”只运行一遍。
时间(毫秒)快速排序枚举排序归并排序
串行1.688922043.4941
并行0.86042771.5046
并行算法实现 快速排序
  • 原始串行快速排序算法中有“分而治之”的递归调用部分,在每次选择pivoit并把序列按照小于pivoIt和大于pivoit分成两类后,左右两部分的递归排序可以并发执行,伪代码如下。
ParallelQucikSort(data, p, r)
	q = Partition(data, p, r) // partition会返回pivoit
	task[1] = ParallelQuickSort(data, p, q - 1)
	task[2] = ParallelQuickSort(data, q + 1, r)
    for j = 1 to 2 par-do
    	task[i]
    return data
枚举排序
  • 枚举排序原本会依次对每个元素进行计数的操作,我们可以使这些操作并行化。
归并排序
  • 归并排序的并行化改进与快速排序类似,都是在“分而治之”分完之后,对两个子任务并行执行,伪代码。
实验结果分析
  • 算法中的并行使用java的Fork / Join框架实现,他会将进程使用ForkJoinPool进行管理,并自动分配到空闲的CPU核心上来运算。由于个人PC的CPU核心数量较少,所以预期至多能产生常数倍的加速效果。
  • 本次实验使用的实验设备为:Intel® Core™ i7-10750H CPU @ 2.60GHz 2.59 GHz,它具有12个计算核心。
  • 实验的详细时间结果参考第一部分。可以发现在QuickSort与MergeSort中,大约获得了两倍的加速。而EnumerateSort则获得了约8倍的加速。
  • 本次实验进行排序的workbench较小(总共30000个),相比于计算时间,准备、通信等时间所占的比例无法忽略。经过测试,如果人为将数据量扩大100倍到3000000个,则并行算法的加速效果可以进一步提升。同时受到CPU核心数的限制(12个),并行程度相当有限,因而最终所取得的加速效果至多只能是常数倍,无法改变渐进意义下的时间复杂度。

资源下载地址:https://download.csdn.net/download/sheziqiong/85657012
资源下载地址:https://download.csdn.net/download/sheziqiong/85657012

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/978597.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号