作业案例:多核平台下的并行计算课程实验指导书

发布于:2024-05-19 ⋅ 阅读:(86) ⋅ 点赞:(0)

多核平台下的并行计算课程实验指导书

[实验目的]:利用所学的并行技术,实现结构体排序算法的并行化和优化,提高数据处理的效率,并通过实验充分理解与掌握并行计算技术。

[实验安排]:熟悉 Linux 环境,安装并行编程软件;接下来的 7 次实验,使用任选一种并行编程模型:包括课堂上讲过的 MPI、OpenMP、Pthread 或者课堂上没有讲过但通过自学掌握的其它工具如:Intel Cilk,Intel TBB等实现多核CPU处理器上并行化,如有余力可以在算法和粗细粒度上进一步优化代码。

[题目简介]:

结构排序是对数据结构中的元素按照特定规则进行排列的过程,具有重要意义。首先,排序使得数据更有组织性和可管理性,便于理解和维护。其次,排序后的数据可以更快速地进行搜索与查找,提高了数据访问效率,加快了程序的响应速度。此外,排序后的数据更容易进行分析与统计,从中提取有价值的信息,为决策和规划提供支持。此外,结构排序还有助于优化算法性能,提高程序的效率与性能。最后,排序操作还可以改善内存访问模式,减少不必要的内存访问,提高数据访问的局部性,从而进一步优化程序的执行效率。综上所述,结构排序在数据处理和应用程序开发中扮演着重要的角色,对于提高程序的效率、性能和可维护性具有重要意义。结构体排序是对包含多个数据字段的结构体按照特定顺序排列,其意义在于提高数据管理效率、加快搜索与查找速度、便于数据分析与统计、优化算法性能以及改善内存访问模式,为数据处理和应用程序开发提供基础支持。

[优化策略提示]:

  1. 可以选用多线程或者多进程的并行方式优化计算热点。
  2. 另外鼓励从算法上进行进一步优化,比如使用高效排序算法、实现多线程/多进程负载均衡等以实现更好的任务并行度和效率。
  3. 建议尝试使用向量化等细粒度优化技术。

[使用方法及注意事项]:

1.  源代码包括以下文件

a)  struct-sort-exp.cpp 包括了结构体排序采用std::sort的基础实现、结果验证和计时函数等。

2. 程序使用方法:

a)  参考编译命令:g++ -g struct-sort-exp.cpp -o struct-sort

b) 样例代码执行方式 ./struct-sort number_of_elements

c)  提交代码的执行方式:

./struct-sort number_of_elements thread_number

3. 比赛考察程序计时部分和时间戳的位置不可修改

4. 不可以修改结果验证部分.

5. 可自行更改编译方式和编译参数,但需要留存脚本文件或 Makefile 文件。

6. 测试环境为Intel 铂金系列处理器,编译器为GCC8.3以上,并支持openmpi或Intel OneAPI。

7. 排序算法不可调用已有排序算法库

8. 排序算法的实现不可以抄袭网络上已有代码,一经发现代码抄袭将严肃处理!

9. 如使用MPI,其初始化时间需要包含在计时区中

10.不限制具体的排序算法,鼓励阅读排序相关前沿论文并借鉴其中的排序算法

[实验报告]:实验完全结束后每人需要提交一份实验结果zip格式压缩包(先放到文件夹中再压缩,不要使用rar压缩格式),压缩包需要包括一份实验报告(.doc 后缀)、源程序和readme文件(内含执行所实现的并行程序需要的参数说明比如:如何设定程序运行时的线程数等)。其中实验报告需要包括并行算法的设计思路、优化技术以及使用不同线程数目(包括单线程)时的运行时间与加速比情况,具体格式与内容请参见附1。。

附1

多核平台下的并行计算课程实验报告

姓名: 学号:

班级

 

  1. 填写下表,给出所使用的软硬件环境参数

操作系统版本

Ubuntu20.04

并行编程模型

Pthread

编译器版本

G++ 9.4

CPU型号、主频及核数

I7-1070H 2.20Ghz 8核16线程

内存型号,大小及主频

型号未知 31G 2933MHz

  1. 填写下表,给出程序使用不同线程数目时的运行时间与加速比(也可以自己设计图表描述不同线程数时程序的运行时间及加速比)

是否并行

线程数

第一次时长

第二次时长

平均时长

加速比

备注

1

12.9475

12.9016

12.92455

1

 

2

6.65877

6.8536

6.756185

0.52274

pthread

4

7.0503

6.42877

6.739535

0.521452

pthread

8

6.76896

6.9456

6.85728

0.530562

pthread

16

7.53826

6.83585

7.187055

0.556078

pthread

线程数目

运行时间(秒)

加速比

1

1.0

2

4

8

16

……

……

……

  1. 并行算法设计和优化思路

要求图文并茂,可以采用示意图、伪代码等方式详细描述并行算法的设计和优化思路。

以上是硬件信息截图

我使用Windows11系统,wsl的linux子系统


网站公告

今日签到

点亮在社区的每一天
去签到