基于少量故障注入样本的GPGPU程序可靠性预测模型构建方法

魏晓辉 ,  李旭睿 ,  代渊超 ,  于洪梅 ,  姜楠 ,  岳恒山

吉林大学学报(工学版) ›› 2026, Vol. 56 ›› Issue (8) : 2191 -2200.

PDF (2408KB)
吉林大学学报(工学版) ›› 2026, Vol. 56 ›› Issue (8) : 2191 -2200. DOI: 10.13229/j.cnki.jdxbgxb.20250033
计算机科学与技术

基于少量故障注入样本的GPGPU程序可靠性预测模型构建方法

作者信息 +

Construction method of reliability prediction model for GPGPU programs based on limited fault injection samples

Author information +
文章历史 +
PDF (2465K)

摘要

针对GPGPU程序在软错误扰动下的可靠性预测问题,提出了一种基于少量故障注入样本的预测模型构建方法。通过设计引导规则实现针对性的故障注入样本收集,结合数据增强策略,在少量故障注入样本前提下,实现了高精度的可靠性模型的构建。实验结果表明:本文方法在仅需300个故障注入样本的情况下,预测模型的平均精度达到91.56%。

Abstract

Reliability prediction of GPGPU programs under soft error perturbations presents significant challenges, particularly when fault injection samples are limited. This paper proposes a novel method for constructing a high-accuracy reliability prediction model using a small number of fault injection samples. The approach introduces guiding rules to optimize fault injection experiments by reducing redundancy and enhancing the quality of collected samples. Furthermore, data augmentation techniques are employed to mitigate the challenges of insufficient training data, enabling effective model learning. Experimental validation on various benchmark programs demonstrates that the proposed method achieves an average prediction accuracy of 91.56% with only 300 fault injection samples. These results highlight the method's capability to reduce experimental overhead while maintaining high prediction performance.

Graphical abstract

关键词

计算机系统结构 / 通用图形处理器 / 可靠性 / 软错误

Key words

computer architecture / general-purpose graphics processing units / reliability / soft error

引用本文

引用格式 ▾
魏晓辉,李旭睿,代渊超,于洪梅,姜楠,岳恒山. 基于少量故障注入样本的GPGPU程序可靠性预测模型构建方法[J]. 吉林大学学报(工学版), 2026, 56(8): 2191-2200 DOI:10.13229/j.cnki.jdxbgxb.20250033

登录浏览全文

4963

注册一个新账户 忘记密码

0 引 言

随着大数据、人工智能等技术的快速发展,CPU越来越难以满足迅速增长的计算能力需求[1]。近年来,通用图形处理器[2](General-purpose graphics processing units, GPGPUs)因其不断改进的可编程性和强大的并行计算能力逐渐成为现代先进计算系统的重要组成部分。例如,在2024年11月发布的最新TOP500超级计算机榜单中,前十名中的九台超级计算机都配备了GPGPU作为计算加速器。在超级计算系统中,GPGPU广泛应用于高性能计算[3]、人工智能[4]、智慧医疗[5]以及航空航天[6]等领域。上述领域对计算精度和正确性均有较高的要求,任何计算错误都可能导致计算结果偏差,从而给应用安全方面带来灾难性后果。因此,在享受GPGPU高效能计算能力的同时,确保其可靠执行也尤为重要。然而,随着芯片集成度不断提高,当前计算系统容易受到高能辐射粒子、阿尔法粒子攻击[7],从而引起底层执行单元发生瞬时比特翻转(也称为软错误)。计算系统一旦受到软错误的扰动,会造成计算结果不准确、系统崩溃等严重后果。相较于传统CPU,软错误扰动这一问题在GPGPU加速器中更加严重,因为其为了实现高度并行化,集成了数量远超于CPU的执行单元,会造成故障率的显著提升[8]。

为确保GPGPU在软错误的扰动下能够可靠执行计算任务,学术界和工业界采用了选择性指令复制策略[9]、选择性线程重映射与部分冗余[10]等高效能的容错策略。值得注意的是,上述高效能容错策略探索的基础是深入理解GPGPU应用在软错误扰动下的可靠性,从而避免对错误鲁棒区域的过度容错设计。因此,研制面向GPSGPU应用的可靠性分析方法尤为关键。

当前最常用的可靠性分析方法是故障模拟注入(Fault injection, FI),例如学术界研制了LLFI-GPU[11]和GPU-Qin[12]等,工业界如英伟达公司推出了SASSIFI[13]和NVBitFI[14]。FI过程在程序执行的过程中模拟故障发生并记录故障注入信息,根据程序最终的执行结果来判断故障影响,要获得具有统计意义的可靠性评估结果,必须进行数以万计的统计故障行为,由于每次FI过程都需要程序端到端的完整执行来进行结果判定,传统FI方法会引入巨大的时间和能耗开销。为降低FI开销,先前研究工作尝试挖掘程序的启发式可靠性特征[15],利用部分FI实验数据构造训练集来训练机器学习模型进行系统可靠性预测。虽然上述方法避免了对程序进行大量FI进行,但是其仍然需要进行上千次FI实验,依然不可避免地带来了显著的时间和资源开销。这反映出精度与开销之间的内在矛盾:为了提升预测精度,需要增加FI实验数据量,而减少实验数据则可能导致预测精度下降。因此,如何训练数据在时间和可靠性预测精度这一矛盾中寻找突破口,探索在少量故障注入数据前提下的可靠性预测模型构造方法,具有十分重要的研究意义。

本文提出了一种基于少量故障注入样本的高效可靠性预测方法,旨在打破现有方法在精度与开销之间的权衡。据了解,本文是首个在样本量较少的情况下进行可靠性预测模型构建的工作。在研究GPGPU程序可靠性时,本文观察到两种关键现象:一是线程相似性,具有相同动态指令数目的线程表现出相似的可靠性表现,表明这些线程在FI实验中是等价的;二是浮点数据低位的Masked倾向性,发生在浮点类型数据低位(0~3位)的错误极大概率被屏蔽掉。这些现象为挑选高效故障模拟注入点提供了新思路,本文归纳出两条引导规则:一是仅对线程等价组中的代表性线程进行故障模拟注入;二是跳过浮点数低位的故障模拟注入。

基于引导规则挑选出高效的故障模拟注入点,结合本文所选取的可靠性启发式特征,进行FI实验可以构建高效的故障注入样本,保障了样本的多样性与覆盖度,避免信息不足,又减少了冗余实验。

然而在样本数量少的前提下,上述构建的高效的故障注入样本虽然可以训练出有一定精度保障的可靠性预测模型,仍难以获得高置信度的可靠性预测结果。为应对这一挑战,本文引入了特征优化和数据增强双重策略,通过特征转换、缩放和交互特征扩展,增强了特征之间的区分度,挖掘了潜在的非线性关系。同时,采用故障点位置偏移和程序执行阶段扰动的增强策略,增加了训练样本的多样性,进一步提升了模型的预测精度。

实验结果表明,本文提出的方法在仅需300个故障注入样本的情况下,构建的可靠性预测模型平均预测精度达到91.56%,并且预测的SDC概率与故障注入统计分布的误差仅为0.24%。这一结果表明,本文方法能显著减少故障注入实验的数量,同时保持较高的预测精度,从而提高实验效率。该方法尤其适用于高性能计算、人工智能等领域,能够快速进行可靠性分析并指导高效能的容错策略设计,具有重要的实际应用价值。

1 基本概念

1.1 GPGPU架构和CUDA执行模式

如图1所示,GPGPU架构由多个流多处理器(Streaming multiprocessors, SM)组成,每个SM负责执行分配给它的线程块(block)内的线程[16]。程序执行从主机CPU启动,任务通过PCIe接口传递到GPU,在多个SM中并行执行。每个SM中block内线程被进一步细分,32个线程被组合成线程束(warp),以此为单位进行调度和执行。SM内部配备了L1指令缓存(L1 Instruction cache)、warp调度器(Warp scheduler)和指令分发单元(Dispatch unit),分别负责存储指令、调度线程和将指令分发到计算单元。

每个线程有独立的寄存器文件用于存储局部数据,操作数通过操作数收集器(Operand collector)准备完毕后,warp中的32个并行线程按照指令的操作类型分配到不同的计算单元中并行执行,包括流处理器(Streaming processor, SP)、特殊函数计算单元(Special function unit, SFU)以及加载存储单元(Load store unit, LSU)。SM还配备了私有的L1数据缓存(L1 Data Cache),用于加速高频数据的访问,并提供软件管理的共享内存(Shared memory)以支持block内线程间的数据通信和共享。

在全局范围内,所有SM通过片上互连网络(Interconnect network)连接到共享的L2缓存(L2 Cache)和内存控制器(Memory controllers)。通过内存控制器,SM可以访问片外全局内存(DRAM),存储程序的全局数据。GPGPU这种高度并行的架构设计,使得线程能够以单指令多线程(Single instruction multiple thread, SIMT)模式执行。在该模式下,同一warp的所有线程以同步的方式执行相同的指令。

1.2 软错误故障模型

不考虑发生在GPGPU内存、共享内存、缓存、寄存器文件中的软错误,因为当前主流的GPGPU中采用纠错码(Error correction code,ECC)技术来保护这些存储中的数据不受软错误影响。本文关注在GPGPU指令执行过程中发生的软错误,仅考虑故障发生在GPGPU的功能单元,例如算术逻辑单元和加载存储单元。这些故障导致指令产生错误的运算结果,然后存储到目的寄存器中。为了模拟这些故障的发生,本文通过随机翻转目的寄存器中的比特位进行模拟,这种方法被称为故障模拟注入(Fault simulation injection, FSI),是GPGPU可靠性研究的常用手段。

软错误可能表现为单比特翻转或多比特翻转,本文采用单比特翻转模型作为研究对象。因为单比特翻转通常被认为是微处理器中最常见的错误类型。此外,先前研究表明,多比特翻转对程序可靠性影响与单比特翻转相似[17],且在该领域的研究工作也普遍采用了单比特翻转模型[18,19]。

在软错误的扰动下,GPGPU程序的有以下3种可能的执行结果:

Masked: 程序完成执行,输出结果与标准运行结果(即同一程序在故障情况下的执行结果)一致,这表明故障在执行的过程中被屏蔽。

SDC: 程序完成执行,未抛出任何异常,但输出结果与标准运行结果不一致,这表明故障导致了静默数据损坏(Silent data corruption, SDC)。

Crash:程序在执行过程中由于严重异常情况(例如,非法内存地址访问)被中断,未能完成执行过程,因此程序未产生任何输出结果。

2 高效故障注入点选择

为在故障注入实验中高效地选择注入点,减少冗余注入并提高样本的代表性与多样性,提出了基于线程相似性分析和数据低位Masked倾向性分析的两条引导规则,能高效地进行故障注入实验,为高效故障注入样本构建提供指导意义。

2.1 线程相似性分析

图2展示了线程动态指令数与SDC概率的关系,其中每个线程的动态指令数目和SDC概率分别以黄色和蓝色数据点表示,彩图参见电子版,下同。可以看到,具有相同动态指令数目的线程在SDC概率上表现出高度的相似性。原因在于,这些线程可能遵循相同的控制流和数据流。在GPGPU的执行过程中,虽然所有线程运行相同的静态代码,但由于初始输入数据不同,不同线程可能经历不同的分支路径和循环次数,导致动态指令数的差异。然而,当线程的动态指令数目相同时,这表明它们在执行过程中经历了相同的指令序列,也即相同的分支选择和循环迭代次数。因此,它们的控制流和数据流行为一致,进而导致错误传播路径和错误敏感性也一致,从而表现出相似的SDC概率。

基于此观察,归纳出引导规则1:对具有相同动态指令数目的线程,只需选择线程等价组中的代表性线程进行故障注入实验。这意味着在故障注入实验中,可以根据线程动态指令数目划分等价组并选择代表性线程,避免在同一等价组内对等价位置(如相同指令序号的目的寄存器)进行重复注入。在少量故障注入实验的前提下,通过减少冗余的故障注入实验,使实验资源能够集中于更多具有代表性和有效性的故障注入。这种优化不仅提升了有限故障注入实验的质量,还进一步保障了故障注入实验的多样性与覆盖度,从而最大程度地发挥了少量故障实验的作用,为后续高效故障注入样本提供了机会。

2.2 数据低位的Masked倾向性分析

图3展示了在3mm程序中,不同比特翻转位置导致程序产生SDC的概率分布,可观察到,当比特翻转范围为0~3数据低位时,SDC概率显著低于其他情况,接近于0;而随着数据位的升高,SDC概率逐渐上升。这表明,低数据位的比特翻转的错误影响在极大概率上被屏蔽(Masked),对程序输出几乎没有影响。这是因为数据高位的比特翻转更容易造成显著的数值变化,从而影响到计算结果。具体到浮点数来说,根据IEEE 754浮点数表示标准,浮点数的高位用于表示指数和符号位,而低位则用于表示尾数部分。尾数部分发生比特翻转仅导致微小的数据波动,这种波动在大多数情况下被屏蔽掉(Masked),不影响程序的输出。而指数和符号位发生比特翻转,导致数值发生剧烈变化,难以在后续的执行中被屏蔽掉,因此更容易产生SDC的错误类型。对于整型数据来说,比特翻转在高位可能引发数值的巨大变化,甚至导致程序的执行流程发生显著改变(例如非法内存访问或逻辑错误),从而增加Crash错误的比例。在这种情况下,由于Crash的比例上升,SDC的概率反而会下降。

在此基础上,进一步剖析了在0~3位比特翻转导致SDC的情况。尽管0~3位比特翻转整体表现为较低的SDC比例,但在这些产生SDC的少量样本中,绝大多数源于整型数据,而浮点数类型数据所致的错误几乎完全被屏蔽掉(Masked)。基于上述观察,可以归纳出引导规则2:对于浮点类型数据的0~3位比特翻转,可以完全跳过故障注入实验。在少量故障注入实验的场景下,此类故障点的结果非常明确,不注入这些位置可以优化实验资源的分配,将更多资源用于生成具有更高分析价值的故障注入实验过程。而对于整型数据的0~3位比特翻转,尽管SDC概率较低,仍需保留故障注入实验分析,以捕捉可能发生的SDC情况,确保预测模型对这一特殊场景的覆盖。此外,本文将浮点数数据低位Masked倾向性这一先验知识通过规则嵌入的方式传递给预测模型。

3 启发式可靠性特征选择、优化与数据增强

通过第2节归纳出的两个引导规则,可以选择出高效的故障注入点,引导针对性的故障注入实验。距离构建高效的故障注入样本还缺乏可靠性启发式特征,因此本文选用启发式特征,用克莱姆相关系数验证了启发式特征选择的有效性。据此可以构建高效的故障注入样本,但在少量故障注入样本的场景下,通过该高效故障注入样本构建的模型预测精度有限,为了进一步提升模型预测精度,本文结合错误启发式特征,提出了特征优化方法和数据增强方法来增加可信的故障注入样本数量,从而增加模型的预测性能表现。

3.1 特征选择

通过对大量故障注入的实验结果分析,发掘出了以下5种启发式特征,分别是指令操作功能、操作数类型、故障点比特位置、故障点比特翻转类型,以及程序的执行阶段。对所选择的启发式特征进行了相关性检验,以评估这些启发式特征与程序错误结果(SDC、Masked、Crash)之间的关联性,确保模型构建时所使用的特征具备较高的有效性和区分能力。具体地,选择了克莱姆相关系数(Cramér's V)[20]作为相关性检验的评价指标。

克莱姆相关系数检验方法是一种常用的相关性度量方法,用于分析分类变量之间的关联强度,其计算公式如下:

V=χ2n⋅min(k-1,r-1)

式中:χ2为卡方统计量;n为样本总数;k和r分别为启发式特征和程序错误结果的分类数。

克莱姆相关系数值范围在0到1之间,其中Cramér's V值为0表示完全独立,即启发式特征与程序错误结果之间无关联性;Cramér's V值为1则表示完全相关,即启发式特征可以完全决定程序错误结果。根据经验规则,Cramér's V的划分标准通常为:当值在0~0.1之间时,表示特征与程序错误结果几乎没有相关性;当值在0.1~0.3之间时,表示特征与程序错误结果之间具有弱相关性;当值在0.3~0.5之间时,表示特征与程序错误结果之间具有中等相关性;而当其值大于0.5时,则表示二者具有很强的相关性。这一方法适用于离散型特征与目标变量的之间的相关性检验,与皮尔逊相关系数等线性相关系数不同,后者仅适用于连续性的数据,并且假设变量之间存在线性关系,而克莱姆相关系数的方法更贴合于本文选择的启发式特征的数据样本特性,能够有效处理离散型的数据,而且不依赖于线性关系的假设。

表1展示了5个所选取的启发式特征进行克莱姆相关系数检验的结果。从表中可以看出,5个特征的Cramér's V值均在0.28到0.37之间,表明这些特征与程序错误结果具有一定程度的关联性,这初步说明这些启发式特征的选择是合理的。

尽管如此,没有一个特征的Cramér's V的值超过0.5,一方面,程序在软错误扰动情况下的错误结果是个复杂问题。单一特征可能对程序错误结果有一定程度的影响,但它的解释力通常是有限的,原因在于程序错误结果通常受多个因素影响,单个特征只能反映其中的一部分信息。例如,同样是发生在32位数据位高位的软错误(即比特翻转),整数加法指令更容易导致Crash类型的错误,而浮点加法指令更容易导致SDC类型的错误。这是因为整数加法指令的结果通常用于地址运算或者决定程序的工作流程,而浮点类型的加法指令的结果通常用于数值计算。这个例子就说明了,不同特征之间可能存在复杂的关系,只有同时考虑全部的特征,利用特征之间互补,才能更好地捕获程序错误结果的变化规律。另一方面,当特征与程序错误结果的Cramér's V值较高时,通常表明该特征与目标变量的关联性强,可能会导致模型过度依赖这些特征,从而忽视其他潜在有用的特征,这样容易造成过拟合现象。具体表现为,模型在训练集上表现优异,但在测试集或真实数据上的泛化能力较差。考虑到本文面对的是低训练样本量的预测模型构建,过拟合的风险更加突出。相比之下,Cramér's V值位于0.28~0.37之间,属于弱到中等相关性范围,表明这些特征与程序错误结果的预测能力相对均衡,从避免过拟合的角度来看,所选的启发式特征具有较好的安全性。

在此基础上,分析启发式特征在程序错误结果中的作用机制,揭示其隐藏的本质。针对程序执行阶段这一启发式特征,随着一些GPGPU程序的执行阶段推进,软错误导致的程序错误结果为SDC的概率逐步升高。这表明,相对于在程序执行阶段早期发生的错误,在后期阶段发生的错误更容易引发SDC。这种现象可以归因于循环迭代过程中的屏蔽效应的存在。具体而言,在程序早期执行阶段发生的错误可能被后续迭代运算的所覆盖,从而降低了其对最终程序错误结果的影响。相反,在程序后期执行阶段的错误由于接近程序执行的终点,更容易直接影响程序输出结果,导致SDC发生的概率显著高于早期执行阶段的错误。除了程序执行阶段这一特征,先前研究已经做了详细的分析,指令操作功能,操作数类型,故障点位置以及故障点比特翻转方向这些启发式特征也具有类似的本质,本章节不一一列举。

3.2 特征优化和数据增强

在少量故障注入样本的前提下,少量的样本在简单的线性模型中难以学习到足够的特征,而在复杂的模型上很容易产生过拟合,这就导致模型预测精度不高。因此,本文结合启发式特征提出了一种启发式特征优化方法。

原始训练样本中存在一些难以直接处理的特征,例如,特征尺度过大容易导致模型倾向于过度学习数值较大的特征,以及一些类别特征不能直接用于训练模型。据此,考虑在故障注入数据特征的基础上进行一些数据转换、缩放以及交互,从而增强数据的可用性和辨别性。首先,在原始数据集中存在两个数值型的特征,分别是:程序执行阶段和故障点位置。对于故障点位置,受到其二进制编码在高位和低位上受影响的程度不同的启发,将其采用等频分箱策略,将[0, 31]范围内的连续特征转换成8个区间的离散特征,从而更好地捕捉数据中的非线性趋势。同样的,对于程序执行阶段特征也采用了相似的分箱策略。对于其他的非数值型特征,本文对其进行特征编码以转换成模型可以识别的数值型变量。

特征之间往往存在着关联关系。因此,使用多项式特征[21]扩展策略进一步地探索特征之间存在的潜在关系对最终分类结果的影响。给定n维特征向量x={x1,…,xn},其扩展得到的多项式特征可以表示为:

ϕ(x)=∏i=1nxiki:k1,…,kn∈N0,∑i=1nki≤d

式中:ki为非负的整数幂。

本文通过限制生成的多项式特征的最高次幂为2(即d=2)来限制新生成的多项式特征的特征数量和特征复杂度,从而更好地理解这两个数值型特征之间的非线性关系和更深层次的数据模式。最后,对所有特征进行归一化和标准化处理。

(1)故障点位置偏移数据增强策略。相邻位置的故障点位置(也就是相邻的比特位)可能会表现出相似的行为特征,因此,可以通过在一定阈值范围内将原始的故障点位置偏移,模拟软错误发生相邻故障点位置的比特翻转情况。假设原先的故障点位置为pi,则定义偏移后的故障点位置pi'为:

pi'∈{pi+δ | δ∈-2,-1, 0, 1, 2
0 ≤ pi+δ<32}

式中:δ为一个随机偏移量,它可以控制故障点位置在上下2个位置范围内进行随机偏移,并且该策略设置了严格的边界检查,确保新生成的故障点位置不会超出有效范围(即[0, 31])。

(2)程序执行阶段扰动数据增强策略。程序执行阶段具有较强的局部相关性,也就是说,程序执行阶段的特征值在一定范围内的小幅波动并不会显著改变程序错误结果的整体分布趋势,反而能增加数据的多样性和局部连续性。因此,本文关注程序执行阶段特征,在原始的程序执行阶段值的基础上人为地添加±10%范围内的扰动。假设原先的程序执行阶段为ci,则定义扰动后的程序执行阶段ci'为:

ci'=max{0, ci+ε}ε=ci × U-0.1, 0.1

式中:U-0.1, 0.1为在区间[-0.1,0.1]上的均匀分布;ε是一个服从均匀分布的随机误差项,以保证扰动范围是原始值的±10%;为契合程序执行阶段不会小于0的特点,增加了max{⋅,⋅}函数确保扰动后的程序执行阶段符合实际情况。

关于数据增强策略的参数设置,通过敏感性实验根据实验经验选择了最佳参数。结果表明,故障点位置的最大偏移范围设置为2(δ∈[-2,-1,0,1,2])时,预测效果最好;过大的偏移范围会引入噪声,导致性能下降。对于程序执行阶段扰动幅度,最大值为0.1时效果最佳。因此,推荐将最大偏移范围设置为[-2,-1,0,1,2],最大扰动幅度设置为0.1。

由于在数据增强阶段增加了很多样本数据,因此在训练过程中平衡原始样本和合成样本在训练中的权重是非常有必要的。据此,提出了一个动态权重调节机制,旨在训练过程中动态监测合成的新样本的权重,避免数据增强产生的新样本为训练过程带来的噪声。

具体来说,给定n维特征向量x={x1,…xn},合成样本x'和合成样本的类别标签y',首先训练一个决策树分类器来计算每个特征xi对分类任务的贡献程度,将其定义为特征重要性分数Ii:

Ii=Δt∈TGitT

式中:T为决策树[22]中所有的决策节点集合;Δt∈TGit为特征xi在节点Git上的信息增益。

对于合成样本x',根据计算得到的特征重要性分数Ii定义其初步权重w1'为:

w1'=β⋅1+∑i=1nIi⋅xi-xi'

式中:xi-xi'表示合成样本x'与原始样本x在第i个特征上的差异(由欧氏距离计算),β是一个常数系数用于控制权重的基础值。

此外,为了应对类别不平衡问题并避免模型偏向于多数类,本文进一步引入了基于类别分布的调整策略。通过计算每个类别的样本数量的倒数来分配权重,使得类别数量较少的类会获得较高的权重,从而减轻模型对多数类的偏向。最终,定义合成样本x'的动态权重w'为:

w'=w1'⋅1∑k=1my'=yk

式中:⋅为指示函数;m为总的样本数。

4 可靠性预测模型的构建

本文提出了一个依托高效故障注入样本构建和增强的可靠性预测模型构建方法,以保证在少量故障注入样本用来模型训练的条件下,仍能构建一个较高预测精度的可靠性预测模型。

如图4所示,GPGPU的可靠性预测模型构建的过程分为3个步骤,第一步是程序分析和代表性线程选择阶段;第二步是引导性的训练样本收集阶段;第三步是数据增强驱动模型训练阶段。

4.1 程序分析和代表性线程选择

程序分析要求程序运行一遍,完成两项任务:①获取程序标准输出(即无故障情况下的程序输出);②收集各个线程的动态指令数目。其中,程序标准输出是在后续引导性的训练样本收集阶段的故障注入实验中判断故障是否导致SDC的。各个线程的动态指令数目的用途如第2节中所述,根据线程的动态指令数目将所有的线程分为等价组,并从每个等价组中选择一条线程作为代表性线程,接下来的样本收集过程的故障注入实验只针对代表性的线程进行。

4.2 引导性的训练样本收集

模型的训练需要足够的故障注入样本来构建数据集,而这些训练样本的获取依赖于故障注入实验。为降低传统随机故障注入实验的高开销,本模型构建方法采用了基于引导规则的故障注入方法,通过跳过冗余实验和结果明确的故障注入实验来构建高效的故障注入样本。具体而言,样本构建的实验遵循前文提出的两条引导规则:

引导规则 1:仅对代表性线程的指令进行故障注入。

引导规则 2:跳过浮点类型数据低位(0~3 位)的比特翻转故障注入。

对每次在引导下的故障注入实验,要提取前一小节所述的模型构建需要的启发式特征,然后根据在错误影响下的程序输出情况,将该次故障实验标记为SDC、Masked、Crash,即视为完成一次故障注入样本的收集。

4.3 数据增强驱动模型训练

为了更好地利用有限的故障注入样本提升模型的性能,这一步对收集的样本进行了特征优化和数据增强处理。由于其在特征分布复杂的场景下的优异的分类能力,本阶段采用决策树机器学习算法对增强后的数据进行模型训练,完成基于少量故障植入样本的GPGPU程序可靠性预测模型构建。

5 实验及结果分析

5.1 实验准备

为了验证本文提出的模型构建方法的有效性,本文选择了多种基准测试程序作为实验对象,覆盖了不同类型的计算模式和应用场景。所选的基准测试程序包括来自Rodinia基准测试程序集的LUD、Hotspot、NW和来自Polybench基准测试程序集的2Dconv、3 mm。本文方法依赖的启发式特征都不属于微体系结构级别,因此该方法不依赖于特定的GPU架构或者故障注入工具。故障注入工具可以使用NVIDIA公司开源的错误故障注入工具SASSIFI和NVBitFI,也可以使用开源GPU模拟器GPGPU-Sim。具体地,本文采用GPGPU-Sim进行故障注入来收集训练样本。由于本文的预测模型是基于少量故障注入样本构建的,因此,在实验评估中,所有用于模型训练的故障植入样本数量均为300。

5.2 模型性能评估

预测模型的构建对应了3个不同的故障注入样本处理策略,可以归纳为两个样本收集优化的策略和一个样本增强策略。两个样本收集优化策略对应两个引导性故障注入的引导规则,一是利用代表性线程收集样本(引导规则1),对应为S1;另一种是利用先验知识跳过浮点数据低位的故障注入(引导规则2),对应为S2。样本增强策略则对应的是利用数据增强技术扩充有限样本的多样性和覆盖范围,对应为S3。本文不加任何引导和优化的传统随机故障注入方法(S0),逐步集成引导规则和数据增强技术构建预测模型,用于展示每一步对模型性能的提升效果。

如图5所示,每一项策略都在一定程度上提高了模型在有限训练样本下的训练精度。具体来说,在不同的策略集成的加持下,模型的平均预测精度分别提高了6.12%、9.42%和3.50%。在集成所有的方法后,预测模型的平均精度达到91.56%,相比于G-SEPM(最先进的基于机器学习的GPGPU软错误预测模型),该方法在需要1000次故障注入实验的情况下达到了93.92%的精度,而本文方法仅需300次故障注入样本即可获得接近的精度。这充分说明方法构建的预测模型能在少量故障注入样本的场景下保持相对较高的精度。

5.3 SDC预测误差分析

图6比较了所有基准测试程序在本文构建的预测模型预测和进行1 000次随机故障注入的SDC分布。平均而言,本文构建的可靠性预测模型在预测程序SDC错误的百分比与随机故障注入的分析结果相比差异仅为0.24%。值得注意的是,某些基准测试程序(如“Hotspot”)的预测误差相对较大,这可能与训练数据有限性和实验中可能存在的噪声数据有关。具体来说,由于训练样本仅有300个,某些基准测试程序的故障模式可能未能充分被训练数据覆盖,尤其是对于“Hotspot”这样复杂的程序,它的故障模式更为多样,训练样本难以覆盖所有可能的错误模式。此外,实验中可能存在噪声数据或一些难以复现的异常故障模式,这些未能充分学习的故障模式可能导致该程序的预测误差较大。此外,本文提出的两个引导规则基于近似思想,即通过选择代表性故障注入点来减少冗余实验,尽管这一方法有效减少了实验开销,但在某些复杂程序中,某些细微的故障模式未能被充分覆盖,因此可能对模型的表现产生一定影响。然而,图6中的误差坐标轴最大值仅为1%,因此这些误差实际上非常小。上述实验结果表明,本文构建的可靠性预测模型在预测程序SDC概率方面与统计故障注入的实验方法高度一致,在实际应用中这样微小误差可以忽略不计。

6 结束语

本文针对GPGPU程序可靠性预测提出了一种基于少量故障注入样本的预测模型构建方法。利用GPGPU程序的线程相似性和浮点数据低位的Masked倾向性,提出了两条引导规则高效地进行故障注入,实现了在少量故障注入样本的前提下,构建了精度能够得到保障的可靠性预测模型。并且结合数据增强技术,进一步提升了少量样本情况下的可靠性预测模型精度。

参考文献

[1]

Li A, Song S L, Wijtvliet M, et al. Sfu-driven transparent approximation acceleration on gpus[C]//2016 International Conference on Supercomputing, Istanbul, Turkey, 2016: 1-14.

[2]

Buck I, Foley T, Horn D, et al. Brook for GPUs: stream computing on graphics hardware[J]. Acm Transactions on Graphics, 2004, 23(3): 777-786.

[3]

Zhang Bo-yuan, Tian Jian-nan, Di Sheng, et al. FZ-GPU: A Fast and high-ratio lossy compressor for scientific computing applications on GPUs[C]//32nd ACM International Symposium on High-Performance Parallel and Distributed Computing, New York, USA, 2023:129-142.

[4]

Andrew L, Scott G. Fast algorithms for convolutional neural networks[C]//2016 IEEE Conference on Computer Vision and Pattern Recognition, Las Vegas, NV, USA, 2016: 4013-4021.

[5]

Ghorbel A, Ben Amor N, Abid M. GPGPU-Based parallel computing of viola and jones eyes detection algorithm to drive an intelligent wheelchair[J]. Journal of Signal Processing Systems, 2022, 94(12): 1365-1379.

[6]

Aiquipa W A, Carpio J D, Garcia J, et al. Analysis of high resolution panchromatic satellite images, based on GPGPU programming[C]//2nd International Conference on Sensors, Signal and Image Processing, Prague, Czech Republic, 2019: 45-48.

[7]

余淇睿, 张战刚, 李斌, 等. 大气中子及α粒子对芯片软错误的贡献趋势[J]. 电子与封装, 2023, 23(8): 70-76.

[8]

Yu Qi-rui, Zhang Zhan-gang, Li Bin, et al. Trends in the contribution of atmospheric neutrons and α particles to the chip soft errors [J]. Electronics and Packaging, 2023, 23(8): 70-76.

[9]

Tan J, Goswami N, Li T, et al. Analyzing soft-error vulnerability on GPGPU microarchitecture[C]//2011 IEEE International Symposium on Workload Characterization, Austin, TX, USA, 2011:226-235.

[10]

Wei X, Jiang N, Yue H, et al. ApproxDup: developing an approximate instruction duplication mechanism for efficient SDC detection in GPGPUs[J]. IEEE Transactions on Computer-Aided Design of Integrated Circuits and Systems, 2024, 43(4): 1051-1064.

[11]

Yang L, Nie B, Jog A, et al. Enabling software resilience in GPGPU applications via partial thread protection[C]//43rd IEEE/ACM International Conference on Software Engineering, Madrid, Spain, 2021: 1248-1259.

[12]

Li G, Pattabirman K, Cher C Y, et al. Understanding error propagation in GPGPU applications[C]//2016 International Conference for High Performance Computing, Networking, Storage and Analysis, Salt Lake City, UT, USA, 2016: 240-251.

[13]

Fang B, Pattabiraman K, Ripeanu M, et al. GPU-Qin: A methodology for evaluating the error resilience of GPGPU applications[C]//2014 IEEE International Symposium on Performance Analysis of Systems and Software, Monterey, CA, USA, 2014: 221-230.

[14]

Hari S K S, Tsai T, Stephenson M, et al. SASSIFI: an architecture-level fault injection tool for GPU application resilience evaluation[C]//2017 IEEE International Symposium on Performance Analysis of Systems and Software, Santa Rosa, CA, USA, 2017: 249-258.

[15]

Tsai T, Hari S K S, Sullivan M, et al. NVBitFI: dynamic fault injection for GPUs[C]//51st Annual IEEE/IFIP International Conference on Dependable Systems and Networks, Taipei, China, 2021: 284-291.

[16]

岳恒山. 面向GPGPU体系结构的软错误弹性分析与容错策略研究[D]. 长春: 吉林大学计算机科学与技术学院, 2022.

[17]

Yue Heng-shan. Research on soft error resilience analysis and fault-tolerance strategy for GPGPU architecture[D]. Changchun: College of Computer Science and Technology, Jilin University, 2022.

[18]

Lindholm E, Nickolls J, Oberman S, et al. NVIDIA Tesla: a unified graphics and computing architecture[J]. IEEE Micro, 2008, 28(2): 39-55.

[19]

Sangchoolie B, Pattabiraman K, Karlsson J. One bit is (Not) enough: an empirical study of the impact of single and multiple bit-flip errors[C]//47th Annual IEEE/IFIP International Conference on Dependable Systems and Networks, Denver, CO, USA, 2017: 97-108.

[20]

Anwer A R, Li G, Pattabiraman K, et al. GPU-Trident: efficient modeling of error propagation in gpu programs[C]//International Conference for High Performance Computing, Networking, Storage and Analysis, Atlanta, Georgia, USA, 2020: 1-15.

[21]

马骏驰, 汪芸, 蔡震波, 等. 基于错误传播分析的SDC脆弱指令识别方法[J]. 计算机研究与发展, 2016, 53(9): 1943-1952.

[22]

Ma Jun-chi, Wang Yun, Cai Zhen-bo, et al. An Approach for Identifying SDC-causing instructions by fault propagation analysis[J]. Journal of Computer Research and Development, 2016, 53(9): 1943-1952.

[23]

CRAMÉR H. Mathematical methods of statistics[M]. New Jersey: Princeton University Press, 1946.

[24]

Bengio Y. Learning deep architectures for AI[J]. Foundations and Trends in Machine Learning, 2009, 2(1): 1-127

[25]

Breiman L, Friedman J H, Olshen R A, et al. Classification and Regression Trees[J]. Belmont: Wadsworth, 1984.

基金资助

国家重点研发计划项目(2023YFB4502304)

国家自然科学基金项目(62302190)

国家自然科学基金项目(62272190)

AI Summary AI Mindmap
PDF (2408KB)

0

访问

0

被引

详细

导航
相关文章

AI思维导图

/

〈 〉