开发者
我要评分
获取效率
正确性
完整性
易理解
在线提单
论坛求助

性能瓶颈优化

操作步骤

  1. 修改源码文件,如图1所示,将修改后的源码文件重命名为memory_bound_after.c,并上传到“/home/demo”目录。
    修改后的源码使用MemoryBoundBench_OPT函数,此函数选择分块优化,对j变量进行限制,将数据划分为小块,利用缓存的空间局部性和时间局部性,每次只处理一个块,使该块数据被缓存重复利用,从而减少Cache Miss现象。
    图1 修改后的源码文件
  2. 编译源码文件。
    gcc -O2 -o /home/demo/ddrc_after /home/demo/memory_bound_after.c -fopenmp
  3. 切换至KSYS工具安装目录,xxx指版本号,请根据实际情况替换。
    cd /home/ksys-x.x.x-Linux-aarch64
  4. 采集优化后的应用的性能数据。
    ./ksys collect /home/demo/ddrc_after
    图2 访存统计数据

    在访存统计数据部分,发现DDRC读带宽数据的总值从28700MB/s+降低至790MB/s+。DDRC读带宽数据降低,说明内存中数据吞吐速率有提升,解决了CPU等待内存数据的问题,内存瓶颈问题得到优化。

  5. 切换至demo目录,查看优化后应用的运行时间。
    1. 切换至demo目录。
      cd /home/demo
    2. 查看优化后应用的运行时间。
      ./ddrc_after

      执行命令后,发现应用运行时间从6372毫秒缩短到3503毫秒,优化后的应用计算性能得到提升。

      图3 运行时间