测试集
基础测试集
基础测试集涉及一些基本的并行算法,包括矩阵、向量运算比如矩阵转置求逆、向量求和内积等,也包括了各种并行规约和排序算法,我们还选取了部 分Polybench中的程序包括一些稍微复杂些的线性代数算法比如卷积运算、各种形式的矩阵乘加运算、协方差计算、有限差分计算等等。
程序 | 类型 | 描述 | 支持情况 |
---|---|---|---|
BITONIC_SORT | alphaTest | 双调排序 | ✔ |
DOT_PRODUCT | alphaTest | 向量内积 | ✔ |
MATRIX_INVERSION | alphaTest | 矩阵求逆 | ✔ |
MATRIX_TRANSPOSE | alphaTest | 矩阵转置 | ✔ |
MERGE_SORT | alphaTest | 归并排序 | ✔ |
NBODY | alphaTest | 多体问题模拟 | ✔ |
NQUEEN | alphaTest | N皇后问题 | ✔ |
PREFIX_SUM | alphaTest | 前缀和计算 | ✔ |
RADIX_SORT | alphaTest | 基数排序 | ✔ |
REDUCTION_MAX | alphaTest | 最大值规约 | ✔ |
REDUCTION_SUM | alphaTest | 求和规约 | ✔ |
TRIANGLE_AREA | alphaTest | 海伦公式计算三角形面积 | ✔ |
VECTORADD | alphaTest | 多种数据类型的向量加法 | ✔ |
VECTORDIV | alphaTest | 单精度浮点型向量除法 | ✔ |
VECTORMMA | alphaTest | 带常量内存的向量乘加 | ✔ |
2DCONV | Polybench | 2D卷积 | ✔ |
2MM | Polybench | 2矩阵乘(alpha * A * B * C + beta * D) | ✔ |
3DCONV | Polybench | 3D卷积 | ✔ |
3MM | Polybench | 3矩阵乘((AB)(C*D)) | ✔ |
ATAX | Polybench | 矩阵转置向量乘 | ✔ |
BICG | Polybench | 矩阵转置向量乘 | ✔ |
CORR | Polybench | 相关系数计算 | ✔ |
COVAR | Polybench | 协方差计算 | ✔ |
FDTD-2D | Polybench | 2D时域有限差分计算 | ✔ |
GEMM | Polybench | 通用矩阵乘加(C=alpha.A.B+beta.C) | ✔ |
GESUMMV | Polybench | 标量向量矩阵乘 | ✔ |
GRAMSCHM | Polybench | Gram-Schmidt分解 | ✔ |
MVT | Polybench | 矩阵向量内积转置 | ✔ |
SR2K | Polybench | 对称秩二更新 | ✔ |
SRK | Polybench | 对称秩一更新 | ✔ |
高级测试集
高级测试集涵盖了图像处理、高性能计算和机器学习等诸多领域的复杂算法,包括Rodinia的部分benchmark涉及医学图像、物理模拟等, 也包括一些非常典型的Pytorch算子比如Conv2d算子、ReLU算子、MaxPool2d算子等,还提供了一些完整的神经网络模型,比如ResNet18网络、AlexNet网络、Yolov3网络等。
程序 | 类型 | 描述 | 支持情况 |
---|---|---|---|
rgb2gray | 图像 | 将rgb格式图像转为灰度图 | ✔ |
Img scale | 图像 | 图像缩放 | ✔ |
NOISEREMOVEV1 | 图像 | 图像去噪 | ✔ |
NOISEREMOVEV2 | 图像 | 使用shared meomory优化的图像去噪。 | _ |
SobelFilter | 图像 | Sobel算子,也被称为Sobel-Feldman算子,或者Sobel滤波,是在图像处理和计算机视觉得到广泛应用的一种图像边缘检测算法。 | _ |
bilateralFilter | 图像 | 双边滤波(Bilateral filter)是一种非线性的滤波方法,是结合图像的空间邻近度和像素值相似度的一种折衷处理,同时考虑空域信息和灰度相似性,达到保边去噪的目的。具有简单、非迭代、局部的特点。Solver | _ |
gaussian | Rodinia/线性代数 | 高斯消去法逐行计算结果,求解线性系统中的所有变量。 | ✔ |
lud | Rodinia/线性代数 | SLU分解是一种计算一组线性方程解的算法。LUD核将矩阵分解为下三角矩阵和上三角矩阵的乘积 | ✔ |
heartwall | Rodinia/医学图像 | Heart Wall应用程序在一系列104609×590的超声图像上跟踪小鼠心脏的运动,以记录对刺激的反应。在其初始阶段,该程序对第一图像执行图像处理操作,以检测心脏内壁和外壁的初始部分形状。这些操作包括:边缘检测、SRAD去斑点、形态学变换和扩张。为了重建心脏壁的近似完整形状,该程序生成椭圆,这些椭圆叠加在图像上并采样以标记心脏壁上的点(Hough Search)。在其最后阶段(此处介绍的心墙跟踪),程序通过检测样本点下的图像区域的移动来跟踪表面的移动,因为心墙的形状在整个图像序列中发生变化。 | _ |
particle_filter_naive | Rodinia/医学图像 | 粒子滤波器(PF)是给定目标位置的噪声测量和贝叶斯框架中目标路径的概念的目标对象位置的统计估计。PF有很多应用,从跟踪车辆、细胞和面部的视频监控到视频压缩。该特定实施方式被优化用于跟踪细胞,特别是白细胞和心肌细胞。在选择目标对象之后,PF通过对当前帧进行一系列猜测来开始跟踪该对象,这是因为从上一帧中已经知道了什么。PF然后使用预定义的可能性模型确定这些猜测中的每一个发生的可能性。然后,PF基于这些猜测的似然性对其进行归一化,然后对归一化的猜测求和以确定对象的当前位置。最后,PF在对视频中的所有剩余帧重复此过程之前,根据对象的当前位置更新猜测。 | ✔ |
leukocyte | Rodinia/医学图像 | 白细胞应用程序在血管的体内视频显微镜中检测和跟踪滚动的白细胞(白细胞)。白细胞滚动的速度提供了炎症过程的重要信息,有助于生物医学研究人员开发抗炎药物。在该应用中,在第一视频帧中检测细胞,然后通过后续帧跟踪细胞。通过计算帧中每个像素在一系列可能椭圆上的最大梯度反变异系数(GICOV)分数来完成检测。椭圆的GICOV分数是沿椭圆的平均梯度幅度除以梯度幅度的标准偏差。然后对GICOV得分矩阵进行扩展,以简化查找局部最大值的过程。对于每个局部最大值,使用活动轮廓算法来更准确地确定单元的形状。通过首先在每个单元周围的区域中计算运动梯度矢量流(MGVF)矩阵来完成跟踪。MGVF是一个沿血流方向偏置的梯度场,使用迭代雅可比解程序计算。在计算MGVF之后,再次使用活动轮廓来细化形状并确定每个单元的新位置。 | ✔ |
particlefilter_double | Rodinia/医学图像 | 粒子滤波器(PF)是给定目标位置的噪声测量和贝叶斯框架中目标路径的概念的目标对象位置的统计估计。PF有很多应用,从跟踪车辆、细胞和面部的视频监控到视频压缩。该特定实施方式被优化用于跟踪细胞,特别是白细胞和心肌细胞。在选择目标对象之后,PF通过对当前帧进行一系列猜测来开始跟踪该对象,这是因为从上一帧中已经知道了什么。PF然后使用预定义的可能性模型确定这些猜测中的每一个发生的可能性。然后,PF基于这些猜测的似然性对其进行归一化,然后对归一化的猜测求和以确定对象的当前位置。最后,PF在对视频中的所有剩余帧重复此过程之前,根据对象的当前位置更新猜测。 | _ |
hotspot | Rodinia/物理模拟 | HotSpot是一种广泛使用的工具,用于基于架构平面图和模拟功率测量来估计处理器温度。热模拟迭代求解块的一系列微分方程。计算网格中的每个输出单元表示芯片相应区域的平均温度值。 | ✔ |
hotspot3d | Rodinia/物理模拟 | 基于三维空间的热模拟 | ✔ |
srad_v1 | Rodinia/图像处理 | SRAD(散斑减少各向异性扩散)是一种基于偏微分方程(PDE)的超声和雷达成像应用的扩散方法。它用于去除局部相关噪声(称为散斑),而不破坏重要的图像特征。SRAD由几个部分组成:图像提取、图像上的连续迭代(准备、缩减、统计、计算1和计算2)和图像压缩。所有这些阶段之间的顺序依赖关系需要在每个阶段之后进行同步(因为每个阶段都对整个图像进行操作)。SRAD也被用作心墙应用程序的初始阶段之一。 | ✔ |
srad_v2 | Rodinia/图像处理 | SRAD(散斑减少各向异性扩散)是一种基于偏微分方程(PDE)的超声和雷达成像应用的扩散方法。它用于去除局部相关噪声(称为散斑),而不破坏重要的图像特征。相比v1版本,随机初始化了输入。 | ✔ |
nn | Rodinia/数据挖掘 | NN(最近邻居)从非结构化数据集中查找k个最近邻居。顺序NN算法每次读取一条记录,计算与目标纬度和经度的欧几里德距离,并评估k个最近的邻居。并行版本一次读取许多记录,在多个线程上执行距离计算,主线程更新最近邻居的列表。 | ✔ |
streamcluster | Rodinia/数据挖掘 | 流集群(SC),解决在线集群问题。streamcluster内核基于普林斯顿大学开发的Parsec套件中的streamcluster基准进行了修改。以下是Parsec技术报告[1]中对流簇的描述:“对于输入点流,它会找到预定数量的中间点,以便将每个点分配到其最近的中心。聚类的质量通过平方距离之和(SSQ)度量来衡量。” | _ |
lavaMD | Rodinia/分子动力学 | 该代码计算大三维空间内粒子之间的相互作用力导致的粒子电势和重定位。该空间被划分为分配给各个集群节点的cubes或large boxes。每个节点上的box被进一步分成cube,称为box。26个相邻box围绕每个box(home box)。粒子空间边界处的主框具有较少的邻居。粒子只与截止半径内的其他粒子相互作用,因为距离较大的粒子施加的力可忽略不计。因此,选择box大小以使截止半径不会超出home box中任何粒子的任何相邻box,从而将参考空间限制为有限数量的box。 | ✔ |
myocyte | Rodinia/生物模拟 | 肌细胞应用模拟心肌细胞(心肌细胞)并模拟其行为。该模型将心肌细胞电活动与钙调神经磷酸酶通路相结合,这是心力衰竭发展的关键方面。该模型跨越了大量的时间尺度,以反映运动或压力期间观察到的心率变化如何促进钙调神经磷酸酶途径的激活,最终导致许多重塑心脏结构的基因的表达。它可用于识别可能对心力衰竭治疗有用的潜在治疗靶点。细胞中的生化反应、离子传输和电活性用91个常微分方程(ODE)建模,这些方程由200多个实验验证的参数确定。通过在指定的时间间隔内求解这组ODE来模拟模型。ODE的求解过程是基于不同时间步长下ODE值之间的因果关系,因此它大多是连续的。在每个动态确定的时间步长,解算器评估由一组91个ODE和480个支持方程组成的模型,以确定系统在该特定时间实例的行为。如果评估结果不在给定时间步长的预期公差范围内(通常是由于时间步长的错误确定),则在修改(通常减少)的时间步长进行另一次计算尝试。由于ODE是刚性的(在短时间间隔内表现出快速的变化率),因此需要使用自适应步长解算器在小时间尺度上对其进行模拟。 | _ |
nw/needle | Rodinia/生物信息学 | Needleman-Wunsch是一种DNA序列比对的非线性全局优化方法。潜在的序列对被组织在2D矩阵中。在第一步中,算法从左上到右下逐步填充矩阵。最佳对齐是通过具有最大分数的阵列的路径,其中分数是在该单元结束的最大加权路径的值。因此,每个数据元素的值取决于其西北、北部和西部相邻元素的值。在第二步中,向后追踪最大路径以推断最佳对准。 | ✔ |
pathfinder | Rodinia/网格遍历 | PathFinder使用动态编程在2-D网格上找到从底行到顶行的路径,该路径具有最小的累积权重,其中路径的每一步都直接向前或对角向前移动。它逐行迭代,每个节点选择前一行中具有最小累积权重的相邻节点,并将其自身权重添加到总和中。 | ✔ |
histogram | 图像 | 64位和256位直方图 | _ |
bucketsort | miscellaneous | 桶排序算法,将元素分配到多个bucket,每个bucket插入排序。 | ✔ |
RBF | miscellaneous | RBF(Radial Basis Function, 径向基函数)网络一般来说,是一种单隐层前馈神经网络,它使用径向基函数作为隐含层神经元激活函数,而输出层则是对隐含层神经元输出的线性组合。 | _ |
pcm | miscellaneous | 脉冲编码调制(PulseCodeModulation),简称PCM。是对连续变化的模拟信号进行抽样、量化和编码产生的数字信号。PCM的优点就是音质好,缺点就是体积大。PCM可以提供用户从2M到155M速率的数字数据专线业务,也可以提供话音、图象传送、远程教学等其他业务。PCM有两个标准(表现形式):E1和T1。脉冲编码调制(Pulse Code Modulation)是最常用、最简单的波形编码。它是一种直接、简单地把语音经抽样、A/D转换得到的数字均匀量化后进行编码的方法,是其他编码算法的基础。 | _ |
DCT 8x8 | miscellaneous | 离散余弦变换(DCT for Discrete Cosine Transform)是与傅里叶变换相关的一种变换,它类似于离散傅里叶变换(DFT for Discrete Fourier Transform),但是只使用实数。离散余弦变换相当于一个长度大概是它两倍的离散傅里叶变换,这个离散傅里叶变换是对一个实偶函数进行的(因为一个实偶函数的傅里叶变换仍然是一个实偶函数),在有些变形里面需要将输入或者输出的位置移动半个单位。 | _ |
BlackSholes | miscellaneous | 布莱克-舒尔斯模型(英语:Black-Scholes Model),简称BS模型,又称布莱克-舒尔斯-墨顿模型(Black–Scholes–Merton model),是一种为期权或权证等金融衍生工具定价的数学模型,由美国经济学家迈伦·舒尔斯(Myron Scholes)与费雪·布莱克(Fischer Black)首先提出,并由罗伯特·墨顿(Robert C. Merton)修改模型于有派发股利时亦可使用而更完善。 | _ |
eigenvalues | miscellaneous | 特征值,是线性代数中的一个重要概念,是指设 A 是n阶方阵,如果存在数m和非零n维列向量 x,使得 Ax=mx 成立,则称 m 是A的一个特征值(characteristic value)或本征值(eigenvalue)。 | _ |
fastwalshTransform | miscellaneous | 沃尔什-阿达玛变换(Walsh-Hadamard Transform)是一种广义傅里叶变换,为信号处理,集成电路和图像处理中频谱分析的一种变换方法,用于替换离散傅里叶变换。快速沃尔什-阿达玛变换是一种进行WHT的快速算法,和FFT类似。 | _ |
page rank | miscellaneous | PageRank,网页排名,又称网页级别、Google左侧排名或佩奇排名,是一种由根据网页之间相互的超链接计算的技术,而作为网页排名的要素之一,以Google公司创办人拉里·佩奇(Larry Page)之姓来命名。Google用它来体现网页的相关性和重要性,在搜索引擎优化操作中是经常被用来评估网页优化的成效因素之一。Google的创始人拉里·佩奇和谢尔盖·布林于1998年在斯坦福大学发明了这项技术。PageRank通过网络浩瀚的超链接关系来确定一个页面的等级。Google把从A页面到B页面的链接解释为A页面给B页面投票,Google根据投票来源(甚至来源的来源,即链接到A页面的页面)和投票目标的等级来决定新的等级。简单的说,一个高等级的页面可以使其他低等级页面的等级提升。 | _ |
mandelbortset | miscellaneous | 曼德博集合(Mandelbrot set,或译为曼德布洛特复数集合)是一种在复平面上组成分形的点的集合,以数学家本华·曼德博的名字命名。曼德博集合与朱利亚集合有些相似的地方,例如使用相同的复二次多项式来进行迭代。 | _ |
torch.nn.Conv3d | Pytorch OP | Conv3d算子 | _ |
torch.nn.BatchNorm3d | Pytorch OP | BatchNorm3d算子 | _ |
torch.nn.Conv2d | Pytorch OP | Conv2d算子 | ✔ |
torch.nn.LeakyReLU | Pytorch OP | LeakyReLU算子 | ✔ |
torch.nn.ReLU | Pytorch OP | torch.nn.AdaptiveAvgPool2d | ✔ |
torch.nn.MaxPool2d | Pytorch OP | MaxPool2d算子 | ✔ |
torch.nn.AdaptiveAvgPool2d | Pytorch OP | AdaptiveAvgPool2d算子 | ✔ |
torch.nn.Dropout | Pytorch OP | Dropout算子 | ✔ |
torch.nn.Linear | Pytorch OP | Linear算子 | ✔ |
torch.nn.BatchNorm2d | Pytorch OP | BatchNorm2d算子 | ✔ |
torch.nn.Hardswish | Pytorch OP | Hardsiwsh算子 | ✔ |
torch.nn.Hardsigmoid | Pytorch OP | Hardsigmoid算子 | ✔ |
torch.nn.SiLU | Pytorch OP | SiLU算子 | ✔ |
torch.nn.Sigmoid | Pytorch OP | Sigmoid算子 | ✔ |
torch.nn.Embedding | Pytorch OP | Embedding算子 | ✔ |
torch.nn.LayerNorm | Pytorch OP | LayerNorm算子 | ✔ |
torch.nn.GELU | Pytorch OP | GELU算子 | ✔ |
torch.nn.Tanh | Pytorch OP | Tanh算子 | ✔ |
torch.nn.Softmax | Pytorch OP | Softmax算子 | ✔ |
torch.nn.GRU | Pytorch OP | GRU算子 | ✔ |
torch.nn.LSTM | Pytorch OP | LSTM算子 | ✔ |
lenet | Pytorch NN | lenet网络 | ✔ |
AlexNet | Pytorch NN | AlexNet网络 | ✔ |
GoogLeNet | Pytorch NN | GoogLeNet网络 | ✔ |
VGG | Pytorch NN | VGG网络 | ✔ |
ResNet18 | Pytorch NN | ResNet18网络 | ✔ |
Yolov3 | Pytorch NN | Yolov3网络 | ✔ |
Yolov5 | Pytorch NN | Yolov5网络 | ✔ |
Densenet | Pytorch NN | Densenet网络 | ✔ |
squeezenet | Pytorch NN | squeezenet网络 | ✔ |
mobilenetv2 | Pytorch NN | mobilenetv2网络 | ✔ |
mobilenetv3 | Pytorch NN | mobilenetv3网络 | ✔ |
inception_v1 | Pytorch NN | inceptionv1网络 | ✔ |
inception_v2 | Pytorch NN | inceptionv2网络 | ✔ |
inception_v3 | Pytorch NN | inceptionv3网络 | ✔ |
ShuffleNetV2 | Pytorch NN | ShuffleNetV2网络 | ✔ |
EfficientNet | Pytorch NN | EfficientNet网络 | ✔ |
transformer | Pytorch NN | transformer 网络 | ✔ |