测试套件扩展

摘要

这些是关于可以添加到 LLVM 测试套件中的其他程序、基准测试、应用程序和算法的想法。测试套件可以比现在大得多,这将有助于我们在开发过程中检测编译器错误(崩溃、错误编译)。

最有可能的是,下面这些程序尚未添加到测试套件中的原因是没有人有时间去做。但也可能存在其他问题,例如

  • 许可证(仍然可以作为外部模块添加支持,

    例如 SPEC 基准测试)

  • 语言(特别是,还没有官方的 LLVM 前端

    用于 FORTRAN)

  • 并行性(目前,测试套件中的所有程序都使用

    仅一个线程)

基准测试

SPEC CPU 2017

https://www.spec.org/cpu2017/

以下程序尚未包含,因为它们包含 Fortran 代码。

对于 cactuBSSN,只有一小部分是 Fortran。主机上的 Fortran 编译器可以用于这些部分。

请注意,CMake 的 Ninja 生成器在处理 Fortran 时存在困难。有关详细信息,请参阅CMake 文档

  • 503.bwaves_r/603.bwaves_s

  • 507.cactuBSSN_r

  • 521.wrf_r/621.wrf_s

  • 527.cam4_r/627.cam4_s

  • 628.pop2_s

  • 548.exchange2_r/648.exchange2_s

  • 549.fotonik3d_r/649.fotonik3d_s

  • 554.roms_r/654.roms_s

SPEC OMP2012

https://www.spec.org/omp2012/

  • 350.md

  • 351.bwaves

  • 352.nab

  • 357.bt331

  • 358.botsalgn

  • 359.botsspar

  • 360.ilbdc

  • 362.fma3d

  • 363.swim

  • 367.imagick

  • 370.mgrid331

  • 371.applu331

  • 372.smithwa

  • 376.kdtree

OpenCV

https://opencv.ac.cn/

OpenMP 4.x SIMD 基准测试

https://github.com/flwende/simd_benchmarks

PWM 基准测试

https://github.com/tbepler/PWM-benchmarking

SLAMBench

https://github.com/pamela-project/slambench

FireHose

http://firehose.sandia.gov/

C/C++ 标准库基准测试

https://github.com/hiraditya/std-benchmark

OpenBenchmarking.org CPU/处理器套件

https://openbenchmarking.org/suite/pts/cpu

这是Phoronix 测试套件的一个子集,它本身就是一系列基准测试套件的集合。

Parboil 基准测试

http://impact.crhc.illinois.edu/parboil/parboil.aspx

MachSuite

https://breagen.github.io/MachSuite/

Rodinia

http://lava.cs.virginia.edu/Rodinia/download_links.htm

Rodinia 已经部分包含在 MultiSource/Benchmarks/Rodinia 中。仍然缺少的基准测试是

  • streamcluster

  • particlefilter

  • nw

  • nn

  • myocyte

  • mummergpu

  • lud

  • leukocyte

  • lavaMD

  • kmeans

  • hotspot3D

  • heartwall

  • cfd

  • bfs

  • b+tree

vecmathlib 测试套件

https://bitbucket.org/eschnett/vecmathlib/wiki/Home

PARSEC

http://parsec.cs.princeton.edu/

Graph500 参考实现

https://github.com/graph500/graph500/tree/v2-spec

NAS 并行基准测试

https://www.nas.nasa.gov/publications/npb.html

官方基准测试是用 Fortran 编写的,但也有一个非官方的 C 翻译版本:https://github.com/benchmark-subsetting/NPB3.0-omp-C

DARPA HPCS SSCA#2 C/OpenMP 参考实现

http://www.highproductivity.org/SSCABmks.htm

该网站已不存在,但似乎有一些基准测试的副本https://github.com/gtcasl/hpc-benchmarks/tree/master/SSCA2v2.2

Kokkos

https://github.com/kokkos/kokkos-kernels/tree/master/perf_test https://github.com/kokkos/kokkos/tree/master/benchmarks

PolyMage

https://github.com/bondhugula/polymage-benchmarks

PolyBench

https://sourceforge.net/projects/polybench/

Polybench 3.2 的修改版本已在 SingleSource/Benchmarks/Polybench 中提供。较新的版本 4.2.1 也已可用。

高性能几何多重网格

https://crd.lbl.gov/departments/computer-science/PAR/research/hpgmg/

RAJA 性能套件

https://github.com/LLNL/RAJAPerf

CORAL-2 基准测试

https://asc.llnl.gov/coral-2-benchmarks/

其中许多程序已集成到 MultiSource/Benchmarks/DOE-ProxyApps-C 和 MultiSource/Benchmarks/DOE-ProxyApps-C++ 中。

  • Nekbone

  • QMCPack

  • LAMMPS

  • Kripke

  • Quicksilver

  • PENNANT

  • 大数据分析套件

  • 深度学习套件

  • Stream

  • Stride

  • ML/DL 微基准测试

  • Pynamic

  • ACME

  • VPIC

  • Laghos

  • 并行整数排序

  • Havoq

NWChem

http://www.nwchem-sw.org/index.php/Benchmarks

TVM

https://github.com/dmlc/tvm/tree/main/apps/benchmark

HydroBench

https://github.com/HydroBench/Hydro

ParRes

https://github.com/ParRes/Kernels/tree/default/Cxx11

应用程序/库

GnuPG

https://gnupg.org/

Blitz++

https://sourceforge.net/projects/blitz/

FFmpeg

https://ffmpeg.org/

FreePOOMA

http://www.nongnu.org/freepooma/

FTensors

http://www.wlandry.net/Projects/FTensor

rawspeed

https://github.com/darktable-org/rawspeed

其测试数据集大小为 756 MB,对于包含在测试套件存储库中来说太大。

C++ 性能基准测试

https://gitlab.com/chriscox/CppPerformanceBenchmarks

通用算法

图像处理

重采样

  • 双线性

  • 双三次

  • 兰索斯

抖动

  • 阈值

  • 随机

  • 半色调

  • 拜耳

  • Floyd-Steinberg

  • Jarvis

  • Stucki

  • Burkes

  • Sierra

  • Atkinson

  • 基于梯度的

特征检测

  • Harris

  • 方向梯度直方图

颜色转换

  • RGB 转灰度

  • HSL 转 RGB

图形

搜索算法

  • 广度优先搜索

  • 深度优先搜索

  • 迪杰斯特拉算法

  • A* 搜索算法

生成树

  • 克鲁斯卡尔算法

  • 普里姆算法