CN113672377A - 程序生成装置、并行运算设备以及计算机可读记录介质 - Google Patents

程序生成装置、并行运算设备以及计算机可读记录介质 Download PDF

Info

Publication number
CN113672377A
CN113672377A CN202110510303.8A CN202110510303A CN113672377A CN 113672377 A CN113672377 A CN 113672377A CN 202110510303 A CN202110510303 A CN 202110510303A CN 113672377 A CN113672377 A CN 113672377A
Authority
CN
China
Prior art keywords
cores
parallel
remaining
program
redundant
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202110510303.8A
Other languages
English (en)
Inventor
井辻宏章
上薗巧
新保健一
鸟羽忠信
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hitachi Ltd
Original Assignee
Hitachi Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hitachi Ltd filed Critical Hitachi Ltd
Publication of CN113672377A publication Critical patent/CN113672377A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/445Exploiting fine grain parallelism, i.e. parallelism at instruction level
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/0721Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment within a central processing unit [CPU]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0751Error or fault detection not based on redundancy
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0766Error or fault reporting or storing
    • G06F11/0775Content or structure details of the error report, e.g. specific table structure, specific error fields
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/1629Error detection by comparing the output of redundant processing systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/57Arithmetic logic units [ALU], i.e. arrangements or devices for performing two or more of the operations covered by groups G06F7/483 – G06F7/556 or for performing logical operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding

Abstract

本发明提供一种程序生成装置、并行运算设备以及计算机可读记录介质,不导致并行运算设备的硬件资源的冗余化且抑制吞吐量下降而检测控制系统的错误。输入用于使具有多个运算组的并行运算设备执行并行运算的程序。该程序具有分别规定了构成预定处理的应用运算、冗余运算(被分配给作为诊断对象的运算组中的剩余核的运算,是应用运算的冗余运算)、和诊断运算(被分配给诊断用的运算组中的剩余核的运算,是两个以上的诊断对象的运算组进行的相同的冗余运算的结果的比较)的信息。剩余核是未被分配应用运算的核。

Description

程序生成装置、并行运算设备以及计算机可读记录介质
技术领域
本发明大体上涉及并行运算设备中的错误的检测。
背景技术
近年来,代替云端侧的机器而在边缘侧的机器(例如汽车、工业机器)中组装有AI功能,或除了云端侧的机器外,还在边缘侧的机器中组装有AI功能。
一般情况下,AI(Artificial Intelligence:人工智能)功能通过作为并行运算设备(能够并行运算的设备)的一例的GPU(Graphics Processing Unit:图形处理单元)来实现。基于AI功能的推论的准确性除了依赖于推论的模型的准确性外,还依赖于进行该推论的GPU的准确性。GPU内的要素能够大致分为数据系统和控制系统。
作为检测数据系统的错误的方法,能够采用使用了冗余码(例如,ECC(ErrorCorrecting Code:纠错码)或CRC(Cyclic Redundancy Code:循环冗余码))的错误检测。
另一方面,作为检测控制系统的错误的方法,能够采用包含控制系统的硬件资源的冗余化(例如,双重化)。但是,在该方法中,需要较多的硬件资源。
为了避免包含控制系统的硬件资源的冗余化,考虑利用专利文献1所公开的方法,即在CPU(Central Processing Unit:中央处理单元)执行程序前将对表示运算履历的签名进行运算的代码嵌入到该程序中的方法。以下,为了方便,将在嵌入签名运算的代码之前的程序(即,原始的程序)中记述的代码表示的运算称为“应用运算”。
现有技术文献
专利文献1:日本特开平6-83663号公报
发明内容
发明要解决的课题
根据专利文献1所公开的方法,通过定期地将签名的值与期待值进行比较,能够期待对控制系统有无错误进行检查。
但是,在将专利文献1所公开的方法应用于GPU时,吞吐量可能降低。这是因为GPU具有多个运算组(一般情况下,称为SM(Streaming Multiprocessor:流式多处理器)),各运算组具有多个核和对多个核分配命令的控制系统(典型的是调度器),但将专利文献1所公开的方法应用于这样的结构的GPU时,对多个运算组的所有核分配签名运算。
这种问题也能够存在于GPU以外的并行运算设备中。
用于解决课题的手段
输入用于使具有多个运算组的并行运算设备执行预定处理的并行运算的程序。该程序具有分别规定了构成预定处理的多个运算即应用运算、冗余运算(被分配给第一运算组中的剩余核的运算,是应用运算的冗余运算)、和诊断运算(被分配给第二运算组中的剩余核的运算,是两个以上的第一运算组分别具有的两个以上的剩余核进行的相同的冗余运算的冗余运算结果的比较)的信息。剩余核是未被分配应用运算的核。根据一实施方式,构建生成这样的程序的程序生成装置。
发明效果
根据本发明,能够生成一种程序,不导致并行运算设备的硬件资源的冗余化且抑制吞吐量降低而检测控制系统的错误。
附图说明
图1表示第一实施方式的程序生成装置的结构例。
图2表示按照第二并行运算程序的并行运算的概要的一例。
图3表示第一实施方式的程序生成装置进行的处理的流程的例子。
图4表示第二实施方式的程序生成装置的结构例。
图5表示第二实施方式的程序生成装置进行的处理的流程的例子。
图6表示第三实施方式的并行运算设备的结构例。
图7表示第三实施方式的并行运算设备进行的处理的流程的例子。
图8表示第四实施方式的并行运算设备的结构例。
图9表示第四实施方式的并行运算设备进行的处理的流程的例子。
图10表示第四实施方式的并行运算设备进行的处理的一例。
图11表示第二并行运算程序的结构例。
附图标记说明
100:程序生成装置。
具体实施方式
在以下的说明中,“接口装置”可以是一个以上的接口设备。该一个以上的接口设备可以是下述中的至少一个。
·一个以上的I/O(Input/Output)接口设备。I/O(Input/Output)接口设备是针对I/O设备和远程的显示用计算机中的至少一个的接口设备。针对显示用计算机的I/O接口设备可以是通信接口设备。至少一个I/O设备可以是用户接口设备,例如键盘以及定点设备(pointing device)那样的输入设备、和显示设备那样的输出设备中的任意一个。
·一个以上的通信接口设备。一个以上的通信接口设备可以是一个以上的相同种类的通信接口设备(例如一个以上的NIC(Network Interface Card:网络接口卡)),也可以是两个以上的不同种类的通信接口设备(例如NIC和HBA(Host Bus Adapter:主机总线适配器))。
另外,在以下的说明中,“存储器”是一个以上的存储设备的一例即一个以上的存储器设备,典型的可以是主存储设备。存储器中的至少一个存储器设备可以是易失性存储器设备,也可以是非易失性存储器设备。
另外,在以下的说明中,“永久存储装置”可以是一个以上的存储设备的一例即一个以上的永久存储设备。永久存储设备典型的可以是非易失性的存储设备(例如辅助存储设备),具体而言,例如可以是HDD(Hard Disk Drive)、SSD(Solid State Drive)、MVNE(Non-Volatile Memory Express)驱动器、或者SCM(Storage Class Memory)。
另外,在以下的说明中,“存储装置”可以是存储器和永久存储装置中的至少存储器。
另外,在以下的说明中,“处理器”可以是一个以上的处理器设备。至少一个处理器设备典型的可以是CPU(Central Processing Unit:中央处理单元”)那样的微处理器设备。至少一个处理器设备可以是单核,也可以是多核。
另外,在以下的说明中,有时通过“yyy部”的表现来说明功能,但功能可以通过由处理器执行一个以上的计算机程序来实现,也可以通过一个以上的硬件电路(例如FPGA或者ASIC)来实现,也可以通过它们的组合来实现。在通过由处理器执行程序来实现功能的情况下,适当地使用存储装置和/或接口装置等进行确定出的处理,因此,功能也可以被设为处理器的至少一部分。以功能为主语进行了说明的处理也可以作为处理器或具有该处理器的装置进行的处理。程序可以从程序源中进行安装。程序源例如可以是程序分发计算机或计算机可读取的记录介质(例如非临时性的记录介质)。各功能的说明是一个例子,也可以将多个功能汇总为一个功能,或将一个功能分割为多个功能。
另外,在以下的说明中,作为各要素的“识别信息”,采用了ID,但也可以代替ID而采用其他种类的信息(例如名称)或者除了采用ID外,还采用其他种类的信息(例如名称)。
另外,在以下的说明中,有时在不区分相同种类的要素进行说明的情况下,使用参照符号中的共同符号,在区分相同种类的要素的情况下,使用参照符号。
以下,对几个实施方式进行说明。
[第一实施方式]
图1表示第一实施方式的程序生成装置的结构例。
程序生成装置100是生成使并行运算设备160并行运算预定处理的计算机程序即并行运算程序的装置。并行运算设备160具有多个运算组161。各运算组161具有多个核10、与对该多个核10分配相同的运算命令的控制系统20。此外,在本实施方式中,“相同的运算命令”相当于相同的计算式的命令。另外,在本实施方式中,即使计算式相同如果使用的变量值不同,则运算不同。即,使用相同的计算式与不同的多个变量值进行的多个运算是不同的运算。
程序生成装置100可以是物理计算机组(一个以上的物理计算机),也可以是在物理计算机组(例如云平台)上实现的逻辑的装置。在物理计算机组中,作为物理或逻辑的计算资源,具有:接口装置101、存储装置102以及与它们连接的处理器103。程序生成装置100具有剩余核确定部111和程序生成部112。
第一并行运算程序140和设备种类信息141经由接口装置101输入到程序生成装置100。第一并行运算程序140是规定构成预定处理的应用运算并使并行运算设备160(例如GPU)执行该预定处理的并行运算的计算机程序。设备种类信息141包含表示并行运算设备160的种类(例如,设备名和/或型号)的信息。
经由接口装置101,从程序生成装置100输出第二并行运算程序150。第二并行运算程序150是基于第一并行运算程序140而由程序生成装置100生成的计算机程序。具体而言,第二并行运算程序150是使并行运算设备160执行第一并行运算程序140表示的预定处理和执行对并行运算设备160的控制系统20(典型的是调度器)有无错误进行检测的计算机程序。
存储装置102存储由处理器103执行的计算机程序组(一个以上的计算机程序)、和由处理器103参照或更新的信息。作为信息,例如存在并行运算设备DB(数据库)116。并行运算设备DB116按并行运算设备的设备种类,包含表示并行运算设备的结构的设备结构信息。按并行运算设备的设备种类,结构信息包含下述(a)~(d)中的至少(a)。
(a)并行运算设备的总核数。
(b)运算组161的数量。
(c)作为每个运算组161的结构信息的组结构信息。关于各运算组161,组结构信息是该运算组161的ID和该运算组161中的各核10的ID中的至少一个。
(d)并行运算设备的存储区域的地址范围。
处理器103通过执行存储装置102内的计算机程序组来实现剩余核确定部111以及程序生成部112。剩余核确定部111基于第一并行运算程序140来确定该并行运算中的剩余核数。程序生成部112基于第一并行运算程序140来生成第二并行运算程序150。
剩余核确定部111具有剩余核数计算部121。剩余核数计算部121以输入的设备种类信息为关键字,从并行运算设备DB116中取得设备结构信息,确定设备结构信息表示的总核数。另外,剩余核数计算部121基于第一并行运算程序140(具体而言,例如第一并行运算程序140的源代码),计算使用核10c的总数即使用核数。所谓“使用核”是被分配了应用运算的核。剩余核数计算部121通过从总核数减去使用核数来计算剩余核数。剩余核数是剩余核10r的总数。所谓“剩余核”是未被分配应用运算的核(例如,成为空闲状态的核)。
程序生成部112具有冗余运算核指定部131和诊断运算核指定部132。
冗余运算核指定部131基于计算出的剩余核数、第一并行运算程序140和取得的设备结构信息,例如进行下述处理。
即,冗余运算核指定部131基于设备结构信息,从多个运算组161中决定两个以上的第一运算组161A和一个以上的第二运算组161B。第一运算组161A是作为包含控制系统20有无错误的诊断的对象的运算组。第二运算组161B是针对各第一运算组161A进行该第一运算组161A的控制系统20A是否有错误的诊断的运算组。
另外,冗余运算核指定部131基于设备结构信息,针对各第一运算组161A决定剩余核10r。即,各第一运算组161A具有至少一个剩余核10r。此外,关于第二运算组161B,所有核10是剩余核10r。
另外,冗余运算核指定部131基于第一并行运算程序140,生成规定了冗余运算的信息。“冗余运算”是第一并行运算程序140规定的应用运算的冗余运算。冗余运算的具体例在后面进行说明。
另外,冗余运算核指定部131进行将冗余运算分配给第一运算组161A的剩余核10r、和决定该冗余运算的结果的存储目的地(并行运算设备160具有的存储区域中的存储目的地)的处理。
另外,冗余运算核指定部131设定规定了冗余运算的信息。“编辑中程序”可以是第一并行运算程序140所具有且记述规定了应用运算的信息的程序,相当于到达第二并行运算程序150的中途的程序。“规定了冗余运算的信息”可以包含表示冗余运算的结果的存储目的地(例如,存储器地址)的信息。另外,“规定了冗余运算的信息”也可以包含冗余运算的分配目的地的核的ID。另外,冗余运算核指定部131可以将表示哪个运算组161是第一运算组161A、哪个运算组161是第二运算组161B中的至少一个的信息设定于编辑中程序,也可以将表示第一运算组161A的数量和第二运算组161B的数量中的至少一个的信息设定于编辑中程序。另外,冗余运算核指定部131也可以将表示剩余核数和使用核数中的至少一个的信息设定于编辑中程序。
诊断运算核指定部132基于从冗余运算核指定部131输出的信息,生成规定了诊断运算的信息,将该信息设定于编辑中程序。这里,“从冗余运算核指定部131输出的信息”包含编辑中程序或编辑中程序具有的信息。另外,“诊断运算”是由两个以上的第一运算组分别具有的两个以上的剩余核进行的相同的冗余运算的执行结果的比较,是分配给第二运算组中的剩余核的运算。“规定了诊断运算的信息”也可以包含表示该诊断运算的结果的存储目的地的信息。另外,“规定了诊断运算的信息”也可以包含该诊断运算的分配目的地的核的ID。
规定了冗余运算以及诊断运算的编辑中程序相当于生成的第二并行运算程序150。第二并行运算程序150经由接口装置101输出。
根据以上的说明,第二并行运算程序150除了规定了第一并行运算程序140所规定的应用运算的信息以外,还具有规定了冗余运算的信息和规定了诊断运算的信息。这里,关于应用运算、冗余运算以及诊断运算的每一个,运算相同或不同例如可以是在运算中使用的函数本身相同或不同,也可以是函数本身相同而变量值相同或不同。例如,函数相同而变量值范围不同的应用运算可以是不同的应用运算。
另外,第二并行运算程序150可以包含表示下述(A)至(E)中的至少一个的信息。由此,能够在第二并行运算程序150的执行中进行针对并行运算设备160的详细的指定。
(A)哪个运算组是第一运算组和第一运算组的数量中的至少一个。
(B)哪个运算组是第二运算组和第二运算组的数量中的至少一个。
(C)关于冗余运算,是下述(c1)和(c2)中的至少一个。
(c1)被分配该冗余运算的剩余核。
(c2)所述并行运算设备中的、冗余运算的结果的存储目的地。
(D)关于诊断运算,是下述(d1)和(d2)中的至少一个。
(d1)被分配该诊断运算的剩余核。
(d2)所述并行运算设备中的、诊断运算的结果的存储目的地。
(E)剩余核数和使用核数中的至少一个。
由并行运算设备160执行第二并行运算程序150,由此,实现图1例示的下述内容。另外,在下述中,关于哪个运算组161是第一运算组161A哪个运算组161是第二运算组161B,可以在第二并行运算程序150中指定,也可以由并行运算设备160决定。另外,关于哪个核10是使用核10c哪个核是剩余核10r,可以在第二并行运算程序150中指定,也可以由并行运算设备160决定。
·多个运算组161中的两个以上的运算组161分别是第一运算组161A,一个运算组161是第二运算组161B。
·关于两个以上的第一运算组161Aa、161Ab的每一个,一个(或多个)核10是剩余核10r,该剩余核10r以外的核10是使用核10c。
·在第二运算组161B中,所有核10是剩余核10r。
第二运算组161B的数量依赖于第一运算组161A的数量。典型地,第二运算组161B比第一运算组161A少。
图2表示按照第二并行运算程序150的并行运算的概要的一例。
按照第二并行运算程序150,对两个以上的第一运算组161Aa、161Ab、…分配命令A,在两个以上的第一运算组161Aa、161Ab、…的每一个中,对命令A进行高速缓存。命令A是应用运算和其冗余运算的命令。在各第一运算组161A中,控制系统20A将被高速缓存的命令A分配给该第一运算组161A中的多个核,具体而言,将按照命令A的应用运算分配给使用核10c,将按照命令A的冗余运算分配给剩余核10r。
按照第二并行运算程序150,对第二运算组161B分配命令B,在第二运算组161B中,对命令B进行缓存。命令B是诊断运算的命令。在第二运算组161B中,控制系统20B将被缓存的命令B分配给该第二运算组161B中的所有剩余核10rB。
通过将命令A分配给各第一运算组161A,将命令B分配给第二运算组161B,例如每隔一定时间T,在并行运算设备160中并行地执行应用运算、冗余运算以及诊断运算。
具体而言,例如,在时刻间t1-t2,两个以上的第一运算组161Aa、161Ab、…分别进行应用运算和其冗余运算,将应用运算结果和冗余运算结果D1a、D1b、…存储在例如第二并行运算程序150中分别规定的存储区域中。然后,第二运算组161B从该存储区域中读出冗余运算结果D1a、D1b、…,执行读出的冗余运算结果D1a、D1b、…的比较即诊断运算(例如,剩余核10rB1将D1a与D1b进行比较)。如果冗余运算结果D1a、D1b、…全部相同,则诊断运算结果是在任意的控制系统20A中均无错误这样的结果。在至少一个剩余核10rB检测到冗余运算结果的不一致的情况下,输出存在错误的结果。根据该结果,能够推断出包含输出了该不一致的冗余运算结果的剩余核10r的运算组161A内的控制系统20A中存在错误。如果在某一个控制系统20A中存在错误,则在从该控制系统20A分配的命令A中存在错误,作为结果,按照来自该控制系统20A的命令A的冗余运算的结果与按照来自正常的控制系统20A的命令A的冗余运算的结果不一致。关于从哪个两个以上的第一运算组161A输出的冗余运算结果不一致,例如能够由并行运算设备160的外部系统(例如上位系统)从检测到冗余运算结果的不一致的剩余核10rB输出的信息(例如,包含输出了冗余运算结果的第一运算组161的ID的信息)中确定。
以后,进行同样的处理。即,在时刻间tn-t(n+1)(n为自然数),并行地执行下述(X)和(Y)。规定了运算的信息的至少一部分作为内核(kernel)而在并行运算设备160中实现,在并行运算设备160中执行该信息表示的运算。
(X)各第一运算组161A执行应用运算和冗余运算,将应用运算结果和冗余运算结果Dna、Dnb、…存储在存储区域中。
(Y)第二运算组161B读出该存储的冗余运算结果Dna、Dnb、…,进行它们的比较即诊断运算,将诊断运算结果存储在存储区域中。
在本实施方式中,不论时刻间tn-t(n+1)的n的值如何,运算组161及其作用(是否是诊断对象是否进行诊断)都固定,但也可以使运算组161及其作用根据n的值而改变。例如,可以存在定期或不定期地从第一运算组161A切换为第二运算组161B的运算组161和从第二运算组161B切换为第一运算组161A的运算组161。表示运算组161的作用的变化和其定时的信息记述在第二并行运算程序150中,基于该信息,在并行运算设备160中,也可以改变运算组161的作用。此外,即使改变作用,也可以维持第一运算组161A的数量和第二运算组161B的数量。
图3表示程序生成装置100进行的处理的流程的例子。
第一并行运算程序140从第一输入源输入到剩余核确定部111以及程序生成部112(S301)。第一输入源可以是外部存储装置或用户终端等。
设备种类信息141从第一输入源或第二输入源输入到剩余核确定部111(S302)。第二输入源例如可以是指令或GUI(Graphical User Interface)。
剩余核确定部111中的剩余核数计算部121计算剩余核数(S303)。具体而言,剩余核数计算部121以在S302中输入的设备种类信息141为关键字,从并行运算设备DB116中取得设备结构信息。也可以代替设备种类信息141的输入和并行运算设备DB116的存在,例如从第一输入源或第二输入源输入设备结构信息本身。剩余核数计算部121确定取得的设备结构信息表示的总核数。另外,剩余核数计算部121基于在S301中输入的第一并行运算程序140来确定使用核数。剩余核数计算部121通过从总核数减去使用核数来计算剩余核数。具体而言,例如,剩余核数计算部121基于第一并行运算程序140,确定线程(thread)的数量(例如,1线程对应于1核)和块(线程的块)的数量,基于线程数和块数来确定使用核数。例如,在块数是1,构成1块的线程的数量是700,块数是1的情况下,使用核数是700(=1×700)。另外,例如,在构成1块的线程的数量是200,块数是5的情况下,使用核数是1000(=5×200)。剩余核数计算部121通过从总核数减去这样的使用核数而计算剩余核数。
程序生成部112中的冗余运算核指定部131基于在S301中输入的第一并行运算程序140、在S303中计算出的剩余核数、在S302中取得的设备结构信息,决定冗余运算、冗余运算的分配目的地的核(冗余运算用的剩余核)、冗余运算结果的存储目的地,将表示决定出的这些内容的信息设定于编辑中程序(S304)。
程序生成部112中的诊断运算核指定部132基于S304中的决定的内容和在S302中取得的设备结构信息,决定诊断运算、诊断运算的分配目的地的核(诊断运算用的剩余核)和诊断运算结果的存储目的地,将表示决定出的这些内容的信息设定于编辑中程序(S305)。由此,编辑中程序成为第二并行运算程序150,换言之,生成第二并行运算程序150。
诊断运算核指定部132输出生成的第二并行运算程序150(S306)。
以上,根据第一实施方式,确定未被分配第一并行运算程序140所规定的应用运算的多个剩余核10r,对第一运算组161A(诊断对象的运算组)中的剩余核10r分配应用运算的冗余运算,对第二运算组161B(诊断用的运算组)中的剩余核10r分配诊断运算。各第一运算组161A的剩余核10r进行冗余运算,第二运算组161B的剩余核10r进行冗余运算结果的比较即诊断运算。如果存在不一致的冗余运算结果,则能够检测出包含输出了该冗余运算结果的剩余核10r的第一运算组161A内的控制系统20A中存在错误。这样,能够自动生成不导致并行运算设备160的硬件资源的冗余化且抑制吞吐量降低而检测控制系统20A的错误的程序。
另外,根据第一实施方式,确定并行运算设备160的总核数,基于第一并行运算程序140来确定使用核数,将它们的差量计算为剩余核数。由此,能够准确地确定执行第一并联运算程序140的并行运算设备160所产生的剩余核的数量。
第二并行运算程序150的结构可以是图11所例示的结构。即,可以采用下述所叙述的结构。
第二并行运算程序150具有:应用运算规定信息1101、冗余运算规定信息1102以及诊断运算规定信息1103。
应用运算规定信息1101是规定了应用运算的信息。例如,应用运算规定信息1101包含:表示应用运算的命令的应用运算命令信息1111(例如,包含应用运算的计算式和变量值范围的信息)、表示输入应用运算所使用的信息(例如,计算式的变量值)的位置(例如,存储区域的地址)的应用运算输入位置信息1112、以及表示应用运算的结果的输出目的地(存储目的地)的应用运算输出位置信息1113。例如,被分配了应用运算的使用核10c从信息1112表示的位置读出值,将该值作为输入而进行按照信息1111的应用运算,将该应用运算的结果输出到信息1113表示的输出目的地。
冗余运算规定信息1102是规定了冗余运算的信息。例如,冗余运算规定信息1102包含:表示冗余运算的命令的冗余运算命令信息1121(例如,包含冗余运算的计算式和变量值范围的信息)、表示输入冗余运算所使用的信息(例如,计算式的变量值)的位置的冗余运算输入位置信息1122、以及表示冗余运算的结果的输出目的地的冗余运算输出位置信息1123。例如,被分配了冗余运算的剩余核10r从信息1122表示的位置读出值,将该值作为输入进行按照信息1121的冗余运算,将该冗余运算的结果输出到信息1123表示的输出目的地。
诊断运算规定信息1103是规定了诊断运算的信息。例如,诊断运算规定信息1103包含:表示诊断运算的命令的诊断运算命令信息1131(例如,包含诊断运算的计算式和变量值范围的信息)、表示输入诊断运算所使用的信息(冗余运算结果)的位置的诊断运算输入位置信息1132、以及表示诊断运算的结果的输出目的地的诊断运算输出位置信息1133。例如,被分配了诊断运算的剩余核10rB从信息1132表示的位置读出值,将该值作为输入进行按照信息1131的诊断运算,将该诊断运算的结果输出到信息1133表示的输出目的地。
信息1101可以称为应用运算代码,信息1102可以称为冗余运算代码,信息1103可以称为诊断运算代码。应用运算代码、冗余运算代码以及诊断运算代码中的至少一个也可以存在多个。
图11例示的结构可以是概念性的结构,实际上也可以一部分重复。
例如,应用运算命令信息1111的至少一部分(例如,表示计算式的信息)与冗余运算命令信息1121的至少一部分可以重复。具体而言,例如,在第一并行运算程序140具有的单一的应用运算代码中,记述了y=a×x+b的计算式、第一运算组160Aa负责0≤x≤31、第一运算组160Ab负责32≤x≤63。程序生成部112通过将各第一运算组160A的x范围(变量值范围)调整为x范围的一部分与其他第一运算组160A的x范围的一部分重复,来规定冗余运算。例如,程序生成部112通过将第一运算组160Ab的x范围变更为30≤x≤61,来规定x=30、31与第一运算组160Aa的x范围(0≤x≤31)重复的冗余运算(计算式与应用运算相同y=a×x+b)。这样,应用运算代码的一部分变化为进行应用运算和冗余运算(x范围为30≤x≤31)的代码。即,应用运算代码的至少一部分可能与冗余运算代码的至少一部分不可区分。因此,也可以存在组合了应用运算代码和冗余运算代码的代码。这样的代码是规定了应用运算和冗余运算的代码的一例。
另外,例如,在诊断运算中,从冗余运算结果的输出目的地读出冗余运算结果,因此,信息1123以及1132可以是相同的信息。
[第二实施方式]
对第二实施方式进行说明。此时,主要对与第一实施方式的不同点进行说明,对于与第一实施方式的共同点省略或简化说明。
图4表示第二实施方式的程序生成装置的结构例。
在程序生成装置400中,剩余核确定部411除了剩余核数计算部121之外,还包含剩余核确保部401。剩余核确保部401在计算出的剩余核数是表示剩余核的不足的数的情况下(换言之,在计算出的剩余核数未满足所需的剩余核数的情况下),确保所需的剩余核数量(或者比其多)的剩余核。
图5表示程序生成装置100进行的处理的流程的例子。
在S301~S303(参照图3)之后,剩余核确保部401基于第一并行运算程序140来确定所需的剩余核数(例如,根据第一并行运算程序140所记述的、规定了应用运算的信息,基于推定为所需的冗余运算的数量,来确定所需的剩余核数),进行在S303中计算出的剩余核数是否小于确定出的所需的剩余核数的判断即不足判断(S501)。在不足判断的结果为假的情况下(S501:否),基于计算出的剩余核数,进行S304~S306(参照图3)。
在不足判断的结果为真的情况下(例如,在计算出的剩余核数为0的情况下)(S501:是),剩余核确保部401通过将基于第一并行运算程序140确定出的使用核数量的多个使用核的一部分的使用核作为剩余核,从而确保所需的剩余核数量的剩余核(S502)。基于所确保的剩余核的数量,换言之所需的剩余核数,来进行S304~S306(参照图3)。
根据第二实施方式,即使在剩余核不足的情况下,也能够与应用运算并行地通过所需的剩余核数量的剩余核来执行冗余运算以及诊断运算。
[第三实施方式]
对第三实施方式进行说明。第三实施方式涉及执行由第一实施方式的程序生成装置100或第二实施方式的程序生成装置400生成的第二并行运算程序150的并行运算设备160。
图6表示第三实施方式的并行运算设备160的结构例。
并行运算设备160除了多个运算组161之外,还具有命令分配部601和存储区域602(例如,存储器)。
命令分配部601基于输入到并行运算设备160的第二并行运算程序150所记述的信息(例如,规定了应用运算、冗余运算以及诊断运算这样的运算的信息),将命令分配给多个运算组161。
存储区域602包含:作为存储应用运算结果的区域的应用运算结果区域621、作为存储冗余运算结果的区域的冗余运算结果区域622、作为存储诊断运算结果的区域的诊断运算结果区域623。区域621、622以及623都是被第二并行运算程序150规定的信息所表示的区域。具体而言,例如,应用运算结果区域621是图11所示的信息1113所表示的区域,冗余运算结果区域622是图11所示的信息1123所表示的区域,诊断运算结果区域623是图11所示的信息1133所表示的区域。
存储在应用运算结果区域621中的应用运算结果输出到执行基于应用运算结果的处理的上位系统(例如,由上位系统读出)。另外,存储在诊断运算结果区域623中的诊断运算结果输出到上位系统(例如,由上位系统读出)。上位系统例如通常基于输入的(例如读出的)应用运算结果,进行在没有来自用户的数据输入的情况下运行处理的自动处理。上位系统例如继续自动处理直到检测到控制系统20的错误为止。上位系统例如在确定了从接收到的(例如读出的)诊断运算结果中检测到控制系统20的错误的情况下,代替自动处理,而运行适当地需要来自用户的数据输入的手动处理。这样,上位系统能够与是否从诊断运算结果中检测到控制系统20的错误相应地,决定变更还是继续预定处理(例如,处理模式)。此外,上位系统可以是并行运算设备160的一个以上的外部系统的至少一个的例子。另外,应用运算结果的输出目的地的外部系统和诊断运算结果的输出目的地的外部系统可以相同也可以不同。
并行运算设备160具有外部接口630,该外部接口630是针对上位系统那样的外部系统的接口,包含对向外部系统输出的数据进行加工的功能。例如,外部接口630也可以对存储在诊断运算结果区域623中的数据进行解析,将解析结果作为诊断运算结果输出到上位系统。另外,作为外部接口630的功能,可以如图6所示的例子那样,在运算组161之外实现,也可以取而代之或者除了在运算组161之外实现外,通过各第一运算组161A的使用核10c来实现应用运算结果的输出用的外部接口,也可以通过第二运算组161B的剩余核10r来实现诊断运算结果的输出用的外部接口。
图7表示并行运算设备160进行的处理的流程的例子。
第二并行运算程序150被输入到命令分配部601(S701)。
命令分配部601根据第二并行运算程序150,对各运算组161的控制系统20分配命令(S702)。具体而言,命令分配部601对第一运算组161A分配命令A,对第二运算组161B分配命令B。命令A及命令B如上所述。即,命令A是应用运算和其冗余运算的命令(例如,一个以上的应用运算代码和针对该一个以上的应用运算代码的每一个的冗余运算代码表示的运算的命令)。命令B是诊断运算的命令(例如,一个以上的诊断运算代码表示的运算的命令)。在第一运算组161A中,控制系统20A按照命令A,将应用运算代码分配给使用核10c,将冗余运算代码分配给剩余核10r。在第二运算组161B中,控制系统20B按照命令B将诊断运算代码分配给剩余核10r。
并行地执行应用运算以及冗余运算,将各自的执行结果存储在存储区域602中(S703)。具体而言,例如,在第二并行运算程序150中,针对应用运算以及冗余运算分别记述了表示存储目的地(这里为存储区域602的地址)的信息。各第一运算组161A中的使用核10c执行所分配的应用运算,在指定为应用运算的结果的存储目的地的应用运算结果区域621中存储应用运算结果。各第一运算组161A中的剩余核10r执行所分配的冗余运算,在指定为冗余运算的结果的存储目的地的冗余运算结果区域622中存储冗余运算结果。反复进行这样的S703,直到按照命令A的所有应用运算以及冗余运算结束为止。
与S703并行地执行诊断运算,诊断运算结果存储在存储区域602中(S704)。具体而言,例如,在第二并行运算程序150中,针对诊断运算,记述了表示存储目的地的信息。第二运算组161B中的剩余核10r按照所分配的命令B,从指定为冗余运算的结果的存储目的地的冗余运算结果区域622中读出冗余运算结果,执行将读出的冗余运算结果进行比较的诊断运算,将诊断运算结果存储在指定为诊断运算的结果的存储目的地的诊断运算结果区域623中。反复进行这样的S704,直到所有冗余运算结果的比较结束为止。
应用运算结果区域621内的应用运算结果例如通过外部接口630输出到上位系统(S705)。S705既可以在按照命令A的所有应用运算结束后进行,也可以定期地(例如每隔一定时间T(例如每次进行应用运算时))进行。
例如,外部接口630判断诊断运算结果区域623内的诊断运算结果是否是意味着得到不一致的冗余运算结果的结果(S706)。在S706的判断结果为真的情况下(S706:是),外部接口630将意味着控制系统20存在错误的信息即控制系统错误信息作为诊断运算结果输出到上位系统(S707)。S706和S707可以在按照命令B的所有诊断运算结束后进行,也可以定期(例如每隔一定时间T(例如每次进行诊断运算时))进行。
根据第三实施方式,能够使用在第一或第二实施方式中生成的第二并行运算程序150,抑制硬件资源的增大和吞吐量降低而检测并行运算设备160的控制系统20的错误。
此外,第二并行运算程序150也可以预先组装于并行运算设备160中。另外,在第三实施方式中,第二并行运算程序150也可以是通过程序生成装置100或400以外(例如由用户)生成的程序。
[第四实施方式]
对第四实施方式进行说明。此时,主要对与第三实施方式的不同点进行说明,对于与第三实施方式的共同点省略或简化说明。
图8表示第四实施方式的并行运算设备的结构例。
并行运算设备860还具有信息管理部801和特征判定部804。
信息管理部801对与从诊断运算结果区域623中确定的错误结果(表示有错误的诊断运算结果)相关的信息即控制系统错误DB803(错误管理信息的一例)进行管理。控制系统错误DB803是存储在并行运算设备860的存储区域802中的数据库。存储区域802例如是存储器中的区域,是与存储区域602相同或不同的区域。通过这样的信息管理部801,能够进行并行运算设备860的后述的设备特征的判定。例如,如后述那样,控制系统错误DB803包含表示得到了错误结果的每个命令的错误次数(得到了错误结果的次数)的信息和表示每个错误结果的产生时刻的信息。
特征判定部804基于控制系统错误DB803,判定包含并行运算设备860的特性和状况中的至少一个的设备特征。例如,外部接口630将表示判定出的设备特征的信息输出到上位系统。由此,上位系统能够执行与设备特征相应的处理。在本实施方式中,作为设备特征的至少一部分,采用脆弱命令和出错种类中的至少一个。关于脆弱命令和出错种类分别在后面进行叙述。
此外,成为表示设备特征的信息的输出目的地的外部系统,既可以与应用运算结果的输出目的地相同,也可以不同,可以与诊断运算结果的输出目的地相同也可以不同。
图9表示并行运算设备860进行的处理的流程的例子。
除了图7的S701~S707外,在S706:是的情况下,还进行S908以及S909。即,信息管理部801更新控制系统错误DB803(S908)。特征判定部804基于控制系统错误DB803,判定并行运算设备860的设备特征,例如外部接口630将表示判定出的设备特征的信息输出到上位系统(S909)。
图10表示并行运算设备860进行的处理的一例。
在并行运算设备860的内部或外部具有时刻源1011。时刻源1011例如可以是GPS(Global Positioning System:全球定位系统)传感器或计时器,输出表示时刻的信息。时刻源1011例如定期地输出表示时刻的信息。
控制系统错误DB803包含第一表格1001、第二表格1002和第三表格1003。第一表格1001和第二表格1002是用于判定脆弱命令的信息的一例,第三表格1003是用于判定出错种类的信息的一例。也可以不存在第一表格1001以及第二表格1002而存在第三表格1003,也可以不存在第三表格1003而存在第一表格1001以及第二表格1002。
第一表格1001是表示时刻与命令A的对应关系的表格。信息管理部801既可以从命令分配部601中取得命令A,也可以从第一运算组161A中取得命令A。另外,也可以代替命令A本身而取得命令A的ID并登记在第一表格1001中。
第二表格1002是表示命令A与错误次数的对应关系的表格。所谓“错误次数”是产生了错误结果的次数。
第三表格1003是相当于错误产生时刻的列表的表格。所谓“错误产生时刻”是产生了错误结果的时刻。
关于各时刻间tn-t(n+1),在对某一个第一运算组161A分配了命令A的情况下,在并行运算设备860中,例如在该时刻间tn-t(n+1)内进行以下那样的处理。
·信息管理部801取得该分配的命令A(例如命令A3)、和时刻源11输出的信息表示的时刻tn(例如,时刻t11),将取得的时刻与命令A的组追加到第一表格1001中。
·针对该命令A,在该时刻间tn-t(n+1)进行冗余运算以及诊断运算。
·在诊断运算结果区域623中存储有错误结果的情况下,信息管理部801以时刻tn(例如,时刻t11)为关键字,从第一表格1001中确定命令A(例如命令A3),将与确定出的命令A对应的错误次数(登记在第二表格1002中的错误次数)递增1。这样,该命令A(例如命令A3)的错误次数得以更新。
·在诊断运算结果区域623中存储有错误结果的情况下,信息管理部801将时刻tn作为错误产生时刻登记在第三表格1003中。
特征判定部804例如定期或不定期地参照控制系统错误DB803中的第二表格1002,将错误次数最多的命令A判定为脆弱命令。“错误次数最多的命令A”是第二表格1002表示的错误次数相对多的命令A的一例。也可以代替“错误次数最多的命令A”,而将错误次数为上位X%的命令A判定为脆弱命令。另外,也可以取而代之,将错误次数为预定的阈值以上的命令A,即错误次数绝对多的命令A判定为脆弱命令。“脆弱命令”是判定为容易产生错误结果的命令A。通过能够进行脆弱命令的判定,而期待对提高控制系统20A的耐错误性的第二并行运算程序150的生成做出贡献。例如,在对某个命令A容易产生错误结果的情况下,能够记述得到与该命令A相同的应用运算结果的其他命令A的运算代码。
特征判定部804例如定期或不定期地参照控制系统错误DB803中的第三表格1003,从错误发生时刻的间隔的趋势中判定出错种类。例如,如果出错产生时刻间(出错产生时刻与下一个出错产生时刻的间隔)的长度为预定的阈值以下,则特征判定部804将作为错误结果的原因的出错的种类判定为临时出错。另一方面,如果出错产生时刻间的长度超过预定的阈值,则特征判定部804将作为错误结果的原因的出错的种类判定为永久出错。这样,能够期待不经由上位系统而高效地确定并行运算设备860中的出错的种类。
以上,对几个实施方式进行了说明,但这些是说明本发明用的例示,并不是将本发明的范围仅限定于这些实施方式的意思。本发明也能够以其他各种方式来执行。例如,在上述的实施方式中,为了简化说明,在同一时刻间进行针对同一命令A的应用运算、冗余运算以及诊断运算,但也可以针对同一命令A预先估算开始冗余运算到能够开始诊断运算为止的时间、诊断运算所需的时间等,基于估算出的各种时间,对与命令A关联起来的时刻、作为出错产生时刻的时刻进行校正,将校正后的时刻登记在控制系统错误DB803中。

Claims (10)

1.一种程序生成装置,其特征在于,具有:
剩余核确定部,其基于表示并行运算设备的结构的设备结构信息和规定构成预定处理的应用运算并使所述并行运算设备执行所述预定处理的并行运算的第一并行运算程序,来确定该并行运算中的剩余核数,所述并行运算设备是具有多个运算组并能够进行并行运算的设备,其中,所述多个运算组的每一个具有多个核和对该多个核分配相同的运算命令的控制系统,剩余核是未被分配应用运算的核;以及
程序生成部,其基于所述第一并行运算程序来生成第二并行运算程序,所述第二并行运算程序除了规定应用运算之外还规定冗余运算和诊断运算,使所述并行运算设备执行所述预定处理的并行运算,其中,冗余运算是应用运算的冗余运算,是分配给第一运算组中的剩余核的运算,诊断运算是由两个以上的第一运算组分别具有的两个以上的剩余核进行的相同的冗余运算的执行结果的比较,是分配给第二运算组中的剩余核的运算。
2.根据权利要求1所述的程序生成装置,其特征在于,
所述剩余核确定部基于所述第一并行运算程序来确定所述并行运算设备的使用核数,
所述剩余核确定部通过从所述设备结构信息表示的总核数减去该确定出的使用核数,来计算剩余核数,
使用核是被分配了应用运算的核,
该计算出的剩余核数是所述确定出的剩余核数。
3.根据权利要求2所述的程序生成装置,其特征在于,
所述剩余核确定部基于所述第一并行运算程序来确定所需的剩余核数,
所述剩余核确定部进行所述计算出的剩余核数是否小于所述确定出的所需的剩余核数的判断即不足判断,
在该不足判断的结果为真的情况下,将所述计算出的使用核数量的多个使用核的一部分的使用核作为剩余核,从而确保所述确定出的所需的剩余核数,
该确保的所需的剩余核数是所述确定出的剩余核数。
4.根据权利要求1所述的程序生成装置,其特征在于,
所述第二并行运算程序包含表示下述(A)至(E)中的至少一个的信息,
(A)哪个运算组是第一运算组和第一运算组的数量中的至少一个,
(B)哪个运算组是第二运算组和第二运算组的数量中的至少一个,
(C)关于冗余运算,是下述(c1)和(c2)中的至少一个,
(c1)被分配了该冗余运算的剩余核,
(c2)所述并行运算设备中的、冗余运算的结果的存储目的地,
(D)关于诊断运算,是下述(d1)及(d2)中的至少一个,
(d1)被分配了该冗余运算的剩余核,
(d2)所述并行运算设备中的、诊断运算的结果的存储目的地,
(E)剩余核数和使用核数中的至少一个。
5.一种并行运算设备,其是执行由权利要求1所述的程序生成装置生成的所述第二并行运算程序的能够进行并行运算的设备,其特征在于,
所述并行运算设备具有:
多个运算组;
命令分配部,其按照所述第二并行运算程序,将作为应用运算和其冗余运算的命令的第一命令分配给所述多个运算组中的两个以上的第一运算组,且将作为诊断运算的命令的第二命令分配给所述多个运算组中的一个以上的第二运算组;以及
存储区域,
所述多个运算组的每一个具有多个核和对该多个核分配相同的运算命令的控制系统,
剩余核是未被分配应用运算的核,
在所述两个以上的第一运算组的每一个中,使用核按照来自控制系统的第一命令来执行应用运算,将应用运算结果存储在所述第二并行运算程序中规定的第一存储区域中,
在所述两个以上的第一运算组的每一个中,剩余核按照来自控制系统的第一命令与应用运算并行地执行冗余运算,将冗余运算结果存储在所述第二并行运算程序中规定的第二存储区域中,
在所述一个以上的第二运算组的每一个中,剩余核按照来自控制系统的第二命令执行将所述第二存储区域内的两个以上的冗余运算结果进行比较的诊断运算,将包含有无错误的诊断运算结果存储在所述第二并行运算程序中规定的第三存储区域中,
存储在所述第一存储区域中的应用运算结果被提供给所述并行运算设备的一个以上的外部系统中的至少一个,
存储在所述第三存储区域中的诊断运算结果被提供给所述并行运算设备的一个以上的外部系统中的至少一个。
6.根据权利要求5所述的并行运算设备,其特征在于,
所述并行运算设备还具有:信息管理部,其对错误管理信息进行管理,所述错误管理信息是与意味着有错误的诊断运算结果即错误结果相关的信息。
7.根据权利要求6所述的并行运算设备,其特征在于,
所述并行运算设备还具有:特征判定部,其基于所述错误管理信息来判定包含所述并行运算设备的特性和状况中的至少一个的设备特征,
表示所述判定出的设备特征的信息被提供给所述一个以上的外部系统中的至少一个。
8.根据权利要求7所述的并行运算设备,其特征在于,
所述错误管理信息包含表示错误次数的信息,所述错误次数是针对得到错误结果的每个第一命令而得到错误结果的次数,
所述设备特征包含作为错误次数绝对或相对多的第一命令的脆弱命令。
9.根据权利要求7所述的并行运算设备,其特征在于,
所述错误管理信息包含按错误结果表示错误结果的产生时刻即错误发生时刻的信息,
所述设备特征包含按照错误产生时刻与下一错误产生时刻之间的长度的出错种类。
10.一种存储有计算机程序的计算机可读记录介质,所述计算机程序用于使具有多个运算组的并行运算设备执行预定处理的并行运算,其特征在于,
所述计算机程序具有:
规定了构成所述预定处理的运算即应用运算的信息;
规定了分配给所述多个运算组中的第一运算组的剩余核的运算即应用运算的冗余运算的信息;以及
规定了作为分配给所述多个运算组中的第二运算组中的剩余核的运算的诊断运算的信息,所述诊断运算是由两个以上的第一运算组分别具有的两个以上的剩余核进行的相同的冗余运算的冗余运算结果的比较,
所述多个运算组的每一个具有多个核和对该多个核分配多个运算命令的控制系统,
所述剩余核是未被分配应用运算的核。
CN202110510303.8A 2020-05-13 2021-05-11 程序生成装置、并行运算设备以及计算机可读记录介质 Pending CN113672377A (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2020084388A JP7419157B2 (ja) 2020-05-13 2020-05-13 プログラム生成装置、並列演算デバイス、及び、並列演算デバイスに並列演算を実行させるためのコンピュータプログラム
JP2020-084388 2020-05-13

Publications (1)

Publication Number Publication Date
CN113672377A true CN113672377A (zh) 2021-11-19

Family

ID=78280747

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110510303.8A Pending CN113672377A (zh) 2020-05-13 2021-05-11 程序生成装置、并行运算设备以及计算机可读记录介质

Country Status (4)

Country Link
US (1) US20210357285A1 (zh)
JP (1) JP7419157B2 (zh)
CN (1) CN113672377A (zh)
DE (1) DE102021204690A1 (zh)

Citations (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101582773A (zh) * 2008-05-13 2009-11-18 株式会社日立国际电气 冗余切换系统、冗余管理装置以及应用程序处理装置
CN102375409A (zh) * 2010-08-19 2012-03-14 株式会社东芝 冗余化控制系统及其运算数据的传送方法
CN103294169A (zh) * 2013-05-31 2013-09-11 上海交通大学 一种功耗优化的众核系统的冗余保护系统及方法
CN103678013A (zh) * 2013-12-18 2014-03-26 哈尔滨工业大学 多核处理器操作系统级进程的冗余检测系统
US20140189305A1 (en) * 2012-12-31 2014-07-03 Brian J. Hickmann Redundant execution for reliability in a super fma alu
CN104391763A (zh) * 2014-12-17 2015-03-04 中国人民解放军国防科学技术大学 基于设备视图冗余的众核处理器容错方法
US20150067278A1 (en) * 2013-08-29 2015-03-05 Advanced Micro Devices, Inc. Using Redundant Transactions to Verify the Correctness of Program Code Execution
CN105279049A (zh) * 2015-06-16 2016-01-27 康宇星科技(北京)有限公司 一种故障自主恢复三模冗余容错计算机ip核的设计方法
CN108227603A (zh) * 2016-12-14 2018-06-29 欧姆龙株式会社 控制系统、控制方法及计算机可读存储介质
CN108351815A (zh) * 2015-11-12 2018-07-31 西门子股份公司 用于运行多核处理器的方法
JP2018142077A (ja) * 2017-02-27 2018-09-13 三菱重工業株式会社 冗長化システム及び冗長化方法
US20190102242A1 (en) * 2017-10-03 2019-04-04 Nvidia Corp. System and methods for hardware-software cooperative pipeline error detection
US20200110676A1 (en) * 2018-10-08 2020-04-09 Hewlett Packard Enterprise Development Lp Programming model and framework for providing resilient parallel tasks

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4886826B2 (ja) 2009-08-24 2012-02-29 インターナショナル・ビジネス・マシーンズ・コーポレーション フォールト・トレラント・コンピュータ・システム、方法及びプログラム
US8914706B2 (en) * 2011-12-30 2014-12-16 Streamscale, Inc. Using parity data for concurrent data authentication, correction, compression, and encryption
US10423421B2 (en) 2012-12-28 2019-09-24 Intel Corporation Opportunistic utilization of redundant ALU
US10776121B2 (en) * 2017-05-10 2020-09-15 Atlantic Technical Organization System and method of execution map generation for schedule optimization of machine learning flows
US10621020B2 (en) * 2017-11-15 2020-04-14 Accenture Global Solutions Limited Predictive self-healing error remediation architecture
US10725788B1 (en) * 2019-03-25 2020-07-28 Intel Corporation Advanced error detection for integer single instruction, multiple data (SIMD) arithmetic operations
US20210149763A1 (en) * 2019-11-15 2021-05-20 Intel Corporation Systems and methods for error detection and control for embedded memory and compute elements

Patent Citations (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101582773A (zh) * 2008-05-13 2009-11-18 株式会社日立国际电气 冗余切换系统、冗余管理装置以及应用程序处理装置
CN102375409A (zh) * 2010-08-19 2012-03-14 株式会社东芝 冗余化控制系统及其运算数据的传送方法
US20140189305A1 (en) * 2012-12-31 2014-07-03 Brian J. Hickmann Redundant execution for reliability in a super fma alu
CN103294169A (zh) * 2013-05-31 2013-09-11 上海交通大学 一种功耗优化的众核系统的冗余保护系统及方法
US20150067278A1 (en) * 2013-08-29 2015-03-05 Advanced Micro Devices, Inc. Using Redundant Transactions to Verify the Correctness of Program Code Execution
CN103678013A (zh) * 2013-12-18 2014-03-26 哈尔滨工业大学 多核处理器操作系统级进程的冗余检测系统
CN104391763A (zh) * 2014-12-17 2015-03-04 中国人民解放军国防科学技术大学 基于设备视图冗余的众核处理器容错方法
CN105279049A (zh) * 2015-06-16 2016-01-27 康宇星科技(北京)有限公司 一种故障自主恢复三模冗余容错计算机ip核的设计方法
CN108351815A (zh) * 2015-11-12 2018-07-31 西门子股份公司 用于运行多核处理器的方法
CN108227603A (zh) * 2016-12-14 2018-06-29 欧姆龙株式会社 控制系统、控制方法及计算机可读存储介质
JP2018142077A (ja) * 2017-02-27 2018-09-13 三菱重工業株式会社 冗長化システム及び冗長化方法
US20190102242A1 (en) * 2017-10-03 2019-04-04 Nvidia Corp. System and methods for hardware-software cooperative pipeline error detection
US20200110676A1 (en) * 2018-10-08 2020-04-09 Hewlett Packard Enterprise Development Lp Programming model and framework for providing resilient parallel tasks

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
HUAI TING LI ET AL.: "《Variation-Aware reliable many-core system design by exploiting inherent core redundancy》", 《IEEE TRANSACTIONS ON VERY LARGE SCALE INTEGRATION SYSTEMS》 *
吴子旭: "《带冗余核的NoC众核系统容错技术研究》", 《规定了分配给所述多个运算组中的第一运算组的剩余核的运算即应用运算的冗余运算的信息;以及 规定了作为分配给所述多个运算组中的第二运算组中的剩余核的运算的诊断运算的信息》 *
唐国斐: "《基于COTS多核DSP图像处理并行与容错技术研究》", 《中国优秀硕士学位论文全文数据库 (信息科技辑)》 *

Also Published As

Publication number Publication date
US20210357285A1 (en) 2021-11-18
JP2021179774A (ja) 2021-11-18
JP7419157B2 (ja) 2024-01-22
DE102021204690A1 (de) 2021-11-18

Similar Documents

Publication Publication Date Title
US11003556B2 (en) Method, device and computer program product for managing storage system
JP6312779B2 (ja) バーチャルマシーンバッチライブマイグレーション
EP3663920B1 (en) Buffer checker
EP3663921A1 (en) Workload repetition redundancy
US11036587B2 (en) Method, apparatus, and computer program product for managing storage system using partial drive failure prediction
CN107451006B (zh) 限制存储设备中的性能变化的技术
CN111124254B (zh) 调度存储空间回收请求的方法、电子设备和程序产品
US10705936B2 (en) Detecting and handling errors in a bus structure
US20190220363A1 (en) Method, apparatus and computer program product for improving inline pattern detection
US7162665B2 (en) Information processing system, method for outputting log data, and computer-readable medium storing a computer software program for the same
JP4668556B2 (ja) タスク管理システム
JP2009238068A (ja) 通信制御装置、通信制御方法
CN113672377A (zh) 程序生成装置、并行运算设备以及计算机可读记录介质
US20150082278A1 (en) Clone detection method and clone function commonalizing method
KR20050061358A (ko) 네트워크 진단 방법, 네트워크 진단을 수행하는 코드를포함하는 컴퓨터 판독 가능 매체 및 시스템
CN112835511B (zh) 分布式存储集群的数据写入方法、装置、设备和介质
US11429537B2 (en) Method, device, and computer program product for managing storage system
CN114697213A (zh) 一种升级方法及装置
CN110908599B (zh) 数据的写入方法与写入系统
US11544171B2 (en) Method for monitoring the free space of a memory stack
CN110214315B (zh) 信息处理系统、信息处理设备、外围设备、数据传输方法
WO2023119774A1 (ja) アクセラレータ装置を利用した情報処理装置及び情報処理方法
CN117809849B (zh) 一种认知功能障碍老人行走姿态的分析方法及系统
US10812415B1 (en) Active intelligent message filtering for increased digital communication throughput and error resiliency
CN114510712B (zh) 拟态数量调整方法、装置、宿主机及存储介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination