项目简介
本项目致力于协助开发者深入了解现代多核CPU中SIMD执行(单处理核心内)与多核心并行执行这两种主要并行执行形式。借助一系列编程任务和性能分析,让开发者体验并行程序性能的测量与推理。项目包含多个程序,如使用线程进行并行分形生成、利用SIMD内在函数向量化代码、使用ISPC实现并行分形生成、迭代计算平方根、执行BLAS saxpy操作以及加速K - Means算法等。
项目的主要特性和功能
- 多形式并行计算:支持多线程与ISPC两种并行计算方式,可在不同场景下发挥多核CPU性能。
- 性能分析:提供并行程序性能测量与分析功能,能生成速度提升图,助力开发者理解不同并行策略的效果。
- 算法实现:实现多种算法,如Mandelbrot集生成、向量指数计算、平方根计算、saxpy操作和K - Means聚类算法等,部分算法经过并行优化。
- 跨平台兼容性:可在斯坦福的myth机器上运行,也能在安装了Intel SPMD Program Compiler(ISPC)的个人机器上运行。
安装使用步骤
环境设置
- ISPC安装:
- 解压下载的文件:
tar -xvf ispc-v1.21.0-linux.tar.gz
。 - 将ISPC的
bin
目录添加到系统路径。例如,若解压后的目录为~/Downloads/ispc-v1.21.0-linux
,在bash中可使用export PATH=$PATH:${HOME}/Downloads/ispc-v1.21.0-linux/bin
,也可将此命令添加到.bashrc
文件以永久生效。
- 解压下载的文件:
程序运行
- Program 1:进入
prog1_mandelbrot_threads/
目录,使用make
命令编译,然后使用./mandelbrot
运行程序。可通过修改代码实现多线程并行计算Mandelbrot集,并分析不同线程数下的速度提升。 - Program 2:在
prog2_vecintrin/
目录下,实现clampedExpSerial
函数的向量化版本clampedExpVector
,并通过./myexp
运行程序进行测试和性能分析。 - Program 3:编译并运行
mandelbrot_ispc
程序,分析其性能和速度提升。可通过设置--tasks
参数进一步优化性能。 - Program 4:构建并运行
sqrt
程序,报告不同情况下的ISPC实现速度提升,并通过修改输入数据优化速度。 - Program 5:编译并运行
saxpy
程序,观察使用ISPC和任务并行时的速度提升,并分析性能。 - Program 6:
- 在
prog6_kmeans
目录下,使用ln -s /afs/ir.stanford.edu/class/cs149/data/data.dat ./data.dat
创建数据集的符号链接。 - 运行
pip install -r requirements.txt
下载必要的绘图包。 - 编译并运行
kmeans
程序,使用python3 plot.py
生成可视化结果。 - 通过插入计时代码找出性能瓶颈并优化代码。
- 在
下载地址
点击下载 【提取码: 4003】【解压密码: www.makuang.net】