并行任务调度算法与的分析.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
多核程序任务调度算法与分析 于俊夫 辽宁师范大学 计算机与信息技术学院 摘要 实验目的: 完成在多核多线程的硬件平台下的多任务调度,达到线程并行化,任务可调度化,尽量充分利用CPU的高频、多核、多线程的特点、加快程序的运行、在操作系统中的灵活调度、使得多核CPU发挥更大的效率。 实验方法: 在visual stdio 2005 下使用openmp 指导语句编写C语言代码,通过对C代码的执行结果的分析,了解多核、多线程的CPU在操作系统下的任务调度。实验中采用三种任务调度算法、主要通过4*4的两个矩阵相乘来完成。 实验结果: 算法1最终矩阵的的16个元的计算在8线程和4线程下分布到各线程中计算达到任务调度的实验目的; 算法2最终矩阵的的16个元的计算分块划分,8线程和4线程下分布到各线程中计算达到任务调度的实验目的; 算法3最终矩阵的的16个元的关联64的计算,8线程和4线程下分布到各线程中计算达到任务调度的实验目的; 实验结论: 在多核、多线程的操作系统中任务可调度、任务执行准确度高,算执行性强。 关键字 4*4的矩阵、分块指导语句、分段指导语句、循环任务分配指导语句 1 引言 实验中选择的是“任务调度”的优化算法,在多核、多线程处理器的任务调度策略问题。对于独立性任务与关联性任务的不同处理方式。最终实现了分块与分段的独立性任务调度算法,和循环任务调度的关联性任务调度算法。 2、实验关键字解析 分块指导语句是解决独立性任务的调度策略所用的方法,是将独立的任务划分成一个或者多个块,在块间进行调度分配。 分段指导语句是解决独立性任务调度的调度策略所用的方法,是将多里的块内的独立的任务再细划分成多个段,即在块内产生段间进行调度分配。 循环任务调度指导语句是解决相关联的任务调度策略所用的方法,是将在循环中的任务进行划分,在循环内进行调度分配。 3、实验的思想 多核程序的任务调度算法中并行化的思想是多核程序任务调度的主思想,在操作系统中根据需要同程序的关联性问题德需要自由的选择调度策略。这样的操作系统执行效率高、灵活性强、可操控性高对程序的执行更有效果。 4、实验方法 4.1、理论分析 Openmp指导语句中parallel命令的sections与sections命令同schedule命令子句分别提供不同的任务调度的指导方法。 parallel命令的sections与sections命令可将程序分割成多块在每块下产生分成多段分段分配线程执行。上述的命令是解决独立性任务的调度策略所用的方法。 schedule命令子句for循环并行化的任务调度语句将for循环内的计算分割并给予多线程分别并行执行。上述的命令是解决相关联的任务调度策略所用的方法。 4.2、实验方法 4.2.1:实验方法一: 一个分块内分多个段的调度策略 void Agra1(int a[4][4],int b[4][4],int c[4][4]) { printf(THIS IS THE FIGURE 1\n); #pragma omp parallel sections { #pragma omp section { printf(section 1 THREADID=%d\na[0][0]*b[0][0]+a[0][1]*b[1][0]+a[0][2]*b[2][0]+a[0][3]*b[3][0]=%d\n,omp_get_thread_num(),c[0][0]=a[0][0]*b[0][0]+a[0][1]*b[1][0]+a[0][2]*b[2][0]+a[0][3]*b[3][0]); } #pragma omp section { printf(section 2 THREADID=%d\n a[0][0]*b[0][1]+a[0][1]*b[1][1]+a[0][2]*b[2][1]+a[0][3]*b[3][1]=%d\n,omp_get_thread_num(),c[0][1]=a[0][0]*b[0][1]+a[0][1]*b[1][1]+a[0][2]*b[2][1]+a[0][3]*b[3][1]); } #pragma omp section { printf(section 3 THREADID=%d\n a[0][0]*b[0][2]+a[0][1]*b[1][2]+a[0][2]*b[2][2]+a[0][3]*b[3][2]=%d\n,omp_get_thread_num(),c[0][2]=a[0][0]*b[0][2]+a[0][1]*b[1][2]+a[0][2]*b[2][2]+a[0][3]*b[3][2]); } #pragma omp

文档评论(0)

hlfy68 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档