littlebot
Published on 2025-04-18 / 0 Visits
0

【源码】基于C++和ISPC的多核CPU并行计算性能分析项目

项目简介

本项目致力于协助开发者深入了解现代多核CPU中SIMD执行(单处理核心内)与多核心并行执行这两种主要并行执行形式。借助一系列编程任务和性能分析,让开发者体验并行程序性能的测量与推理。项目包含多个程序,如使用线程进行并行分形生成、利用SIMD内在函数向量化代码、使用ISPC实现并行分形生成、迭代计算平方根、执行BLAS saxpy操作以及加速K - Means算法等。

项目的主要特性和功能

  1. 多形式并行计算:支持多线程与ISPC两种并行计算方式,可在不同场景下发挥多核CPU性能。
  2. 性能分析:提供并行程序性能测量与分析功能,能生成速度提升图,助力开发者理解不同并行策略的效果。
  3. 算法实现:实现多种算法,如Mandelbrot集生成、向量指数计算、平方根计算、saxpy操作和K - Means聚类算法等,部分算法经过并行优化。
  4. 跨平台兼容性:可在斯坦福的myth机器上运行,也能在安装了Intel SPMD Program Compiler(ISPC)的个人机器上运行。

安装使用步骤

环境设置

  1. 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文件以永久生效。

程序运行

  1. Program 1:进入prog1_mandelbrot_threads/目录,使用make命令编译,然后使用./mandelbrot运行程序。可通过修改代码实现多线程并行计算Mandelbrot集,并分析不同线程数下的速度提升。
  2. Program 2:在prog2_vecintrin/目录下,实现clampedExpSerial函数的向量化版本clampedExpVector,并通过./myexp运行程序进行测试和性能分析。
  3. Program 3:编译并运行mandelbrot_ispc程序,分析其性能和速度提升。可通过设置--tasks参数进一步优化性能。
  4. Program 4:构建并运行sqrt程序,报告不同情况下的ISPC实现速度提升,并通过修改输入数据优化速度。
  5. Program 5:编译并运行saxpy程序,观察使用ISPC和任务并行时的速度提升,并分析性能。
  6. 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】