JP5900061B2 - 試験方法、試験装置及びプログラム - Google Patents

試験方法、試験装置及びプログラム Download PDF

Info

Publication number
JP5900061B2
JP5900061B2 JP2012062023A JP2012062023A JP5900061B2 JP 5900061 B2 JP5900061 B2 JP 5900061B2 JP 2012062023 A JP2012062023 A JP 2012062023A JP 2012062023 A JP2012062023 A JP 2012062023A JP 5900061 B2 JP5900061 B2 JP 5900061B2
Authority
JP
Japan
Prior art keywords
processing
threads
thread
gpgpu
processing time
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.)
Active
Application number
JP2012062023A
Other languages
English (en)
Other versions
JP2013196300A (ja
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.)
Fujitsu Ltd
Original Assignee
Fujitsu 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 Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2012062023A priority Critical patent/JP5900061B2/ja
Priority to US13/716,298 priority patent/US9087028B2/en
Publication of JP2013196300A publication Critical patent/JP2013196300A/ja
Application granted granted Critical
Publication of JP5900061B2 publication Critical patent/JP5900061B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/22Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing
    • G06F11/2205Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing using arrangements specific to the hardware being tested
    • G06F11/2236Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing using arrangements specific to the hardware being tested to test CPU or processors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/22Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing
    • G06F11/26Functional testing
    • G06F11/263Generation of test inputs, e.g. test vectors, patterns or sequences ; with adaptation of the tested hardware for testability with external testers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Test And Diagnosis Of Digital Computers (AREA)

Description

本発明は、試験方法、試験装置及びプログラムに関する。
SMP(Symmetric Multi-Processing)モードからAMP(Asymmetric Multiprocessing)モードに切り替え可能な複数のCPU(中央処理装置:Central Processing Unit)コアを搭載したマルチコアCPUの故障診断システムにおいて、マルチコアCPUの処理負荷を予測する負荷予測手段と、処理負荷が閾値未満の場合、いずれかのCPUコアをAMPモードに切り替えるモード切り替え手段と、AMPモードに切り替えられたCPUコアを故障診断する故障診断手段と、を有する故障診断システムが知られている(例えば、特許文献1参照)。
特開2010−218277号公報
汎用的なCPUの試験では、CPU内の全コアに異なる命令列を指定して試験実行させ、その演算結果を調べることにより、不良コアを特定することができる。
これに対し、GPGPU(General-Purpose computing on Graphics Processing Units)は、GPU(Graphics Processing Units)の演算資源を画像処理以外の目的に応用する処理装置である。GPUは、画像処理を専門とする処理装置である。
GPGPUでは、GPGPU内のコアを指定して各命令列を実行させることができない。不良コアがある場合には、その不良コアの代わりに他の正常コアが処理を行うため、不良コアがあるか否かの試験が困難である。
1つの側面では、本発明は、処理装置の不良有無を検出することができる試験方法、試験装置及びプログラムを提供することである。
試験方法は、処理装置の試験を行う試験方法であって、試験対象である処理装置の複数のスレッドを同時並列処理可能な仕様上の最大の処理ユニット数(以下、最大処理ユニット数という)を取得し、スレッド数を1つずつ増やして前記処理装置に並列処理させ処理時間を測定するという試験を繰り返し、測定した処理時間を前回測定値と比較しその差が所定の閾値を越えるときのスレッド数が、当該処理装置の最大処理ユニット数の整数倍+1であれば正常であることを示す情報を出力し、そうでなければ異常であることを示す情報を出力する。
処理装置の不良有無を検出することができる。
図1は、実施形態による試験対象のGPGPUの構成例を示す図である。 図2(A)は汎用CPUの試験方法を説明するための図であり、図2(B)はGPGPUの試験方法を説明するための図である。 図3(A)はすべてのコアが正常なGPGPUの処理例を示す図であり、図3(B)は不良コアが存在するGPGPUの処理例を示す図である。 図4は、本実施形態によるGPGPUの試験方法を説明するための図である。 図5は、コア単位でスレッドを処理する方式のGPGPUのスレッド数毎の処理時間を示す図である。 図6は、スレッドグループ単位でスレッドを処理する方式のGPGPUのスレッド数毎の処理時間を示す図である。 図7は、不良スレッドグループを有しないGPGPUのスレッド数毎の処理時間の具体例を示す図である。 図8は、不良スレッドグループを有するGPGPUのスレッド数毎の処理時間の具体例を示す図である。 図9は、本実施形態による試験システムの構成例を示す図である。 図10は、図9の試験システムの一部の詳細例を示す図である。 図11は、記憶装置内の動作定義ファイルの内容例を示す図である。 図12は、図9の試験装置の試験方法を示すフローチャートである。 図13は、図12のステップS1201の処理の詳細を示すフローチャートである。 図14は、図12のステップS1203の処理の詳細を示すフローチャートである。 図15は、図12のステップS1205の処理の詳細を示すフローチャートである。 図16は、図12のステップS1207の処理の詳細を示すフローチャートである。 図17は、図12のステップS1209の処理の詳細を示すフローチャートである。
図1は、実施形態による試験対象のGPGPUの構成例を示す図である。GPGPU101は、複数のストリーミングマルチプロセッサ(SM:Streaming Multiprocessor)111、メモリ112及び二次キャッシュメモリ113を有する。メモリ112は、例えばGDDR(Graphics Double Data Rate)メモリである。SM111は、メモリ112及び二次キャッシュメモリ113に対してアクセスすることができる。
SM111は、コア群124、命令キャッシュメモリ122及び一次キャッシュメモリ123を有する。命令キャッシュメモリ122は命令のキャッシュメモリであり、一次キャッシュメモリ123はデータのキャッシュメモリである。コア群124は、複数のコア121を有する。
命令列(スレッド)の処理単位として、コア121単位で処理する方式と、複数のコア121のグループを作ってグループ単位で処理する方式の2つの方式がある。まず、コア121単位で処理する方式について説明する。この方式では、コア121が命令列を同時並列処理可能な処理ユニットである。すべてのコア121が並列処理可能であるので、コア121の数の命令列を同時に並列処理可能である。例えば、GPGPU101が16個のSM111を有し、各SM111が32個のコア121を有する場合、コア121の総数は16×32=512個である。したがって、GPGPU101は、最大、512個の命令列を同時に並列処理可能である。すなわち、同時並列処理可能な最大の処理ユニット数は512である。
次に、グループ単位で処理する方式について説明する。この方式では、コア群124は、複数のスレッドグループ131を有し、スレッドグループ131が命令列を同時並列処理可能な処理ユニットである。各スレッドグループ131は、役割分担が異なる複数のコア(例えば4個のコア)121を有する。各スレッドグループ131単位で1個の命令列(スレッド)を処理する。すべてのスレッドグループ131が並列処理可能であるので、スレッドグループ131の数の命令列を同時に並列処理可能である。例えば、GPGPU101が16個のSM111を有し、各SM111が8個のスレッドグループ131を有する場合、スレッドグループ131の総数は16×8=128個である。したがって、GPGPU101は、最大、128個の命令列を同時に並列処理可能である。すなわち、同時並列処理可能な最大の処理ユニット数は128である。
図2(A)は、汎用CPU201の試験方法を説明するための図である。汎用CPU201では、異なる命令列A〜Hをそれぞれコア1〜8の番号を指定して処理させることができる。例えば、命令列Aをコア1に処理させ、命令列Bをコア2に処理させる等のように、どの命令列をどのコアに処理させるかを指定することができる。したがって、命令列A〜Hの演算結果を調べれば、各コア1〜8で正常な演算が行われたか否かを判断することができるので、各コア1〜8の良否を判定することができる。
図2(B)は、GPGPU101の試験方法を説明するための図である。GPGPU101では、異なる命令列A〜Hをそれぞれコア121の番号を指定して処理させることができない。GPGPU101に命令列A〜Hの処理を指示するだけであり、コア121の番号を指定することができず、どのコア121が命令列A〜Hを処理するのか分からない。命令列A〜Hを処理するコア121は任意に割り当てられる。したがって、命令列A〜Hの演算結果を調べても、各コア121の良否を判定することができない。
図3(A)は、すべてのコア121が正常なGPGPU101の処理例を示す図である。上記のように、コア121の単位で命令列を処理する方式では、GPGPU101は、同時並列処理可能な512個のコア121を有する。スレッド301は一又は複数の命令からなる処理単位命令であり、各命令は命令コード及び/又はデータを有する。例えば、命令はオペコード及びオペランドを有し、オペコードが命令コードであり、オペランドがデータである。なお、GPGPU101の演算性能を最大限に発揮させるために、スレッド301は、浮動小数点演算のスレッドであることが好ましい。512個の同一のスレッド301の並列処理をGPGPU101に指示した場合、GPGPU101内の512個のコア121が512個のスレッド301を同時に並列処理する。1個のスレッド301の処理を指示した場合には、GPGPU101内の1個のコア121が1個のスレッド301を処理する。2個の同一のスレッド301の並列処理を指示した場合には、GPGPU101内の2個のコア121が2個のスレッド301を同時に並列処理する。3個の同一のスレッド301の並列処理を指示した場合には、GPGPU101内の3個のコア121が3個のスレッド301を同時に並列処理する。同様に、512個の同一のスレッド301の並列処理を指示した場合には、GPGPU101内の512個のコア121が512個のスレッド301を同時に並列処理する。したがって、1個〜512個のスレッド301の並列処理をそれぞれ指示したときのGPGPU101の各処理時間はほぼ同じである。すなわち、1個のスレッド301の処理時間と512個のスレッド301の処理時間は、ほぼ同じである。
図3(B)は、不良コアが存在するGPGPU101の処理例を示す図である。上記のように、GPGPU101は、512個のコア121を有する。例えば、512個のコア121が2個の不良コア121及び510個の正常コア121を有する場合を例に説明する。512個の同一のスレッド301の並列処理をGPGPU101に指示した場合、GPGPU101内の510個の正常コア121が510個のスレッド301を同時に並列処理する。この際、512個のスレッド301の中で、510個のスレッド301の処理は行われるが、残りの2個のスレッド301の処理は待たされる。その後、510個の正常コア121の中でスレッド301の処理が完了した2個の正常コア121が残りの2個のスレッド301を同時に並列処理する。したがって、図3(B)の不良コアを有するGPGPU101の処理時間は、図3(A)の不良コアを有しないGPGPU101の処理時間に対して、約2倍になる。図3(B)の場合、1個〜510個のスレッド301の並列処理をそれぞれ指示したときのGPGPU101の各処理時間はほぼ同じである。これに対し、511個及び512個のスレッド301の処理時間は、1個〜510個のスレッド301の処理時間に対して、約2倍になる。また、512個のスレッド301は、510個の正常コア121により処理されるので、512個のスレッド301の演算結果は、すべて正常になる。したがって、512個のスレッド301の演算結果を調べても、2個の不良コア121の存在を発見することができない。
そこで、本実施形態では、図3(A)の不良コアを有しないGPGPU101の処理時間と、図3(B)の不良コアを有するGPGPU101の処理時間との違いに着目して、不良コアを有するか否かの試験を行う。
図4は、本実施形態によるGPGPU101の試験方法を説明するための図である。CPU911は、試験装置のCPUであり、GPGPU101の試験を行う。まず、ステップS411では、CPU911は、GPGPU101に対して、スレッドの並列処理を指示する。
次に、ステップS412では、CPU911は、GPGPU101に対して、1個の浮動小数点演算のスレッド301の処理の開始を指示し、1個のスレッド301の処理時間の計測を開始する。次に、ステップS413では、CPU911は、GPGPU101から処理完了通知を入力すると、処理時間の計測を終了し、1個のスレッド301の処理時間を取得する。
次に、ステップS414では、CPU911は、GPGPU101に対して、2個の同一の浮動小数点演算のスレッド301の並列処理の開始を指示し、2個のスレッド301の処理時間の計測を開始する。次に、ステップS415では、CPU911は、GPGPU101から処理完了通知を入力すると、処理時間の計測を終了し、2個のスレッド301の処理時間を取得する。
次に、ステップS416では、CPU911は、GPGPU101に対して、3個の同一の浮動小数点演算のスレッド301の並列処理の開始を指示し、3個のスレッド301の処理時間の計測を開始する。次に、ステップS417では、CPU911は、GPGPU101から処理完了通知を入力すると、処理時間の計測を終了し、3個のスレッド301の処理時間を取得する。
以下、同様にして、並列処理するスレッド301の数を順に増やし、スレッド301の数毎の処理時間を取得する。
最後に、ステップS418では、CPU911は、GPGPU101に対して、M個の同一の浮動小数点演算のスレッド301の並列処理の開始を指示し、M個のスレッド301の処理時間の計測を開始する。ここで、Mは、試験を行う最大並列処理スレッド数である。最大並列処理スレッド数Mは、例えば図11に示すように、100000又は200000である。次に、ステップS419では、CPU911は、GPGPU101から処理完了通知を入力すると、処理時間の計測を終了し、M個のスレッド301の処理時間を取得する。
図5は、コア121(図1)の単位でスレッドを処理する方式のGPGPU101のスレッド数毎の処理時間を示す図である。この方式の場合、GPGPU101は、上記のように、512個のコア121を有するので、最大512個のスレッド301を同時に並列処理可能である。したがって、1個〜512個のスレッド301の処理時間はほぼ同じであり、513個〜1024個のスレッド301の処理時間はほぼ同じであり、1025個〜1536個のスレッド301の処理時間はほぼ同じであり、1537個〜2048個のスレッド301の処理時間はほぼ同じである。
513個〜1024個のスレッド301の処理時間は、1個〜512個のスレッド301の処理時間の約2倍である。また、1537個〜2048個のスレッド301の増加処理時間T2は、1025個〜1536個のスレッド301の増加処理時間T1の約2倍である。ここで、1537個〜2048個のスレッド301の増加処理時間T2は、1537個〜2048個のスレッド301の処理時間から、513個〜1024個のスレッド301の処理時間Eを減算した時間である。また、1025個〜1536個のスレッド301の増加処理時間T1は、1025個〜1536個のスレッド301の処理時間から、513個〜1024個のスレッド301の処理時間Eを減算した時間である。
以上のように、スレッドの数が増加していくと、スレッド間隔wの周期で、処理時間が大きく変動する。図3(A)のように、不良コアを有しないGPGPU101の場合、スレッド間隔wは、全コア数である512になる。これに対し、図3(B)のように、2個の不良コアを有するGPGPU101の場合、スレッド間隔wは、正常コア数である510になる。したがって、処理時間がほぼ同じであるスレッド間隔wが全コア数と同じであれば、GPGPU101内に不良コアが存在しないので、試験対象のGPGPU101は合格であると判定することができる。これに対し、処理時間がほぼ同じであるスレッド間隔wが全コア数より少ない場合には、GPGPU101内に不良コアが存在するので、試験対象であるGPGPU101は不合格であると判定することができる。
図6は、スレッドグループ131(図1)の単位でスレッドを処理する方式のGPGPU101のスレッド数毎の処理時間を示す図である。この方式の場合、GPGPU101は、上記のように、128個のスレッドグループ131を有するので、最大128個のスレッド301を同時に並列処理可能である。したがって、1個〜128個のスレッド301の処理時間はほぼ同じであり、129個〜256個のスレッド301の処理時間はほぼ同じであり、257個〜384個のスレッド301の処理時間はほぼ同じであり、385個〜512個のスレッド301の処理時間はほぼ同じであり、513個〜640個のスレッド301の処理時間はほぼ同じである。
129個〜256個のスレッド301の処理時間は、1個〜128個のスレッド301の処理時間の約2倍である。また、385個〜512個のスレッド301の増加処理時間T4は、257個〜384個のスレッド301の増加処理時間T3の約2倍である。ここで、385個〜512個のスレッド301の増加処理時間T4は、385個〜512個のスレッド301の処理時間から、129個〜256個のスレッド301の処理時間Eを減算した時間である。また、257個〜384個のスレッド301の増加処理時間T3は、257個〜384個のスレッド301の処理時間から、129個〜256個のスレッド301の処理時間Eを減算した時間である。
以上のように、スレッド301の数が増加していくと、スレッド間隔wの周期で、処理時間が大きく変動する。不良スレッドグループ(不良コア)を有しないGPGPU101の場合、スレッド間隔wは、全スレッドグループ数である128になる。これに対し、2個の不良スレッドグループを有するGPGPU101の場合、スレッド間隔wは、正常スレッドグループ数である126になる。したがって、処理時間がほぼ同じであるスレッド間隔wが全スレッドグループ数と同じであれば、GPGPU101内に不良スレッドグループ(不良コア)が存在しないので、試験対象のGPGPU101は合格であると判定することができる。これに対し、処理時間がほぼ同じであるスレッド間隔wが全スレッドグループ数より少ない場合には、GPGPU101内に不良スレッドグループ(不良コア)が存在するので、試験対象であるGPGPU101は不合格であると判定することができる。
まず、試験装置は、試験対象であるGPGPU101が複数のスレッド301を同時並列処理可能な最大の処理ユニット数を取得する。図5のように、コア単位でスレッド301を処理する方式の場合、上記の同時並列処理可能な最大の処理ユニット数は、GPGPU101内の全コア121の数である。これに対し、図6のように、スレッドグループ単位でスレッド301を処理する方式の場合、上記の同時並列処理可能な最大の処理ユニット数は、GPGPU101内の全スレッドグループ131の数である。また、図5及び図6に示すように、試験装置は、スレッド301の数を順に変えて試験対象であるGPGPU101に並列処理を行わせ、スレッド301の数毎の処理時間を取得する。そして、試験装置は、上記のように、スレッド301の数を変えていったときに処理時間の変動が閾値P以上になるまでのスレッドの数の変化(スレッド間隔w)が同時並列処理可能な最大の処理ユニット数と一致するときには試験対象であるGPGPU101が正常であることを示す情報を出力し、一致しないときには試験対象であるGPGPU101が異常であることを示す情報を出力する。
ここで、閾値Pは、図11に示す最低演算性能係数Pであり、例えば1.2又は1.3である。図5(又は図6)において、増加処理時間T2(又はT4)及び増加処理時間T1(又はT3)を比較し、T2/T1(又はT4/T3)が閾値P以上である場合には、スレッド間隔wの終了を意味し、T2/T1(又はT4/T3)が閾値P未満である場合には、スレッド間隔wが未だ終了していないことを意味する。
また、試験装置は、処理時間の変動が閾値P以上になる毎に、スレッド301の数の変化(スレッド間隔w)が同時並列処理可能な最大の処理ユニット数と一致するか否かを判定し、すべてのスレッド間隔wが同時並列処理可能な最大の処理ユニット数と一致するときには試験対象であるGPGPU101が正常であることを示す情報を出力し、少なくとも1回でもスレッド間隔wが同時並列処理可能な最大の処理ユニット数と一致しないときには試験対象であるGPGPU101が異常であることを示す情報を出力する。複数のスレッド間隔wについて試験を行うことにより、1回のスレッド間隔wの試験に比べ、より厳しい条件での試験を行い、試験精度を高め、不良コアの検出率を向上させることができる。
図7は、図6に対応し、不良スレッドグループを有しないGPGPU101のスレッド数毎の処理時間の具体例を示す図である。まず、1個のスレッドの処理時間と2個のスレッドの処理時間とを比較し、2個のスレッドの処理時間を1個のスレッドの処理時間で割った値が最低演算性能係数P(図11では例えば1.3)未満であるので、処理時間の変化がほとんどなく、スレッド間隔wの範囲内であると判断することができる。次に、同様に、2個のスレッドの処理時間と3個のスレッドの処理時間とを比較し、3個のスレッドの処理時間を2個のスレッドの処理時間で割った値が最低演算性能係数P未満であるので、処理時間の変化がほとんどなく、スレッド間隔wの範囲内であると判断することができる。同様に、128個のスレッドの処理時間までは、処理時間の変化がほとんどなく、スレッド間隔wの範囲内であると判断することができる。
次に、128個のスレッドの処理時間と129個のスレッドの処理時間とを比較し、129個のスレッドの処理時間を128個のスレッドの処理時間で割った値が最低演算性能係数P以上であるので、処理時間が急激に増加し、スレッド間隔wの範囲外であると判断することができる。これは、スレッド間隔wの終了を意味するので、スレッド間隔wは、128であると判断することができる。そして、このスレッド間隔wは、GPGPU101内の全スレッドグループ131の数である128と同じであるので、GPGPU101は正常であると判断することができる。
次に、129個のスレッドの処理時間と130個のスレッドの処理時間とを比較し、130個のスレッドの処理時間から128個のスレッドの処理時間を減算した値を、129個のスレッドの処理時間から128個のスレッドの処理時間を減算した値で割った値が最低演算性能係数P未満であるので、処理時間の変化がほとんどなく、スレッド間隔wの範囲内であると判断することができる。
この際、上記の128個のスレッドの処理時間は、図6の処理時間Eに対応する。また、上記の130個のスレッドの処理時間から128個のスレッドの処理時間を減算した値は、図6の増加処理時間T4に対応する。129個のスレッドの処理時間から128個のスレッドの処理時間を減算した値は、図6の増加処理時間T3に対応する。そして、上記では、T4/T3が最低演算性能係数P未満であるか否かを判定していることを意味する。
次に、同様に、130個のスレッドの処理時間と131個のスレッドの処理時間とを比較する。256個のスレッドの処理時間までは、処理時間の変化がほとんどなく、スレッド間隔wの範囲内であると判断することができる。
次に、256個のスレッドの処理時間と257個のスレッドの処理時間とを比較し、257個のスレッドの処理時間から128個のスレッドの処理時間を減算した値を、256個のスレッドの処理時間から128個のスレッドの処理時間を減算した値で割った値が最低演算性能係数P以上であるので、処理時間が急激に増加し、スレッド間隔wの範囲外であると判断することができる。これは、スレッド間隔wの終了を意味するので、スレッド間隔wは、256−128=128であると判断することができる。そして、このスレッド間隔wは、GPGPU101内の全スレッドグループ131の数である128と同じであるので、GPGPU101は正常であると判断することができる。
次に、257個のスレッドの処理時間と258個のスレッドの処理時間とを比較し、258個のスレッドの処理時間から256個のスレッドの処理時間を減算した値を、257個のスレッドの処理時間から256個のスレッドの処理時間を減算した値で割った値が最低演算性能係数P未満であるので、処理時間の変化がほとんどなく、スレッド間隔wの範囲内であると判断することができる。以下、同様の処理を繰り返す。
図8は、図6に対応し、不良スレッドグループを有するGPGPU101のスレッド数毎の処理時間の具体例を示す図である。図7と同様の処理により、例えば、120個のスレッドの処理時間と121個のスレッドの処理時間との間で急激な処理時間の増加が検出され、240個のスレッドの処理時間と241個のスレッドの処理時間との間で急激な処理時間の増加が検出される。これにより、スレッド間隔wは、120−0=120(及び240−120=120)であると判断することができる。そして、このスレッド間隔wは、GPGPU101内の全スレッドグループ131の数である128より8少ないので、GPGPU101は8個の不良スレッドグループ131を有すると判断することができる。
図9は、本実施形態による試験システムの構成例を示す図である。試験装置901は、例えばサーバ又はパーソナルコンピュータ等のコンピュータであり、キーボード902及びディスプレイ装置903が接続されている。試験装置901は、CPU911、メインメモリ912、記憶装置913、入力装置インタフェース914、出力装置インタフェース915、入出力インタフェーススロット916及びバス917を有する。CPU911は、バス917を介して、記憶装置913、入力装置インタフェース914、出力装置インタフェース915及び入出力インタフェーススロット916に接続される。メインメモリ912は、CPU911に接続される。キーボード902は、入力装置インタフェース914に接続される。ディスプレイ装置903は、出力装置インタフェース915に接続される。記憶装置913は、例えばハードディスク駆動装置である。入出力インタフェーススロット916は、例えばPCI-Express(Peripheral Component Interconnect-Express)の入出力シリアルインタフェースである。CPU911は、種々の演算又は処理を行うプロセッサである。試験対象であるGPGPU101を入出力インタフェーススロット916に差し込むことにより、試験装置901は、GPGPU101の試験を行うことができる。GPGPU101は、図1と同様に、メモリ112を有する。CPU911は、メインメモリ912内のプログラムを実行することにより、GPGPU101の試験を行う。キーボード902は、試験を行うためのプログラムの起動等に使用される入力装置である。ディスプレイ装置903は、試験結果の表示等を行う出力装置である。
本実施形態は、コンピュータがプログラムを実行することによって実現することができる。また、本実施形態は、プログラムを記録したコンピュータ読み取り可能な記録媒体及びプログラム等のコンピュータプログラムプロダクトにも適用することができる。記録媒体は、例えば、フレキシブルディスク、ハードディスク、光ディスク、光磁気ディスク、CD−ROM(Compact Disc Read Only Memory)、磁気テープ、不揮発性のメモリカード、ROM(Read Only Memory)等である。
図10は、図9の試験システムの一部の詳細例を示す図である。メインメモリ912は、処理時間格納領域1005及び演算結果格納領域1006を有し、試験プログラム1001、GPGPU101の関連ライブラリ1002、オペレーティングシステム(OS:Operating System)1003及びデバイスドライバ1004を記憶する。メインメモリ912は、さらに、GPGPUモデル名T、GPGPU内全コア数C、GPGPU内SM数S、SM内スレッドグループ数G、最大並列処理スレッド数M及び最低演算性能係数Pを記憶する。試験装置901は、GPGPU101のベンダから提供されるアプリケーションプログラミングインターフェース(API:Application Programming Interface)を用いて、GPGPU101に対して、試験プログラム1001により入出力を行う。記憶装置913は、動作定義ファイル1011を記憶する。動作定義ファイル1011の詳細は、後に図11を参照しながら説明する。GPGPU101は、図1と同様に、複数のコア121及びメモリ112を有する。メモリ112は、演算結果格納領域1021を有する。コア121の演算結果は、演算結果格納領域1021に書き込まれる。
図11は、図10の記憶装置913内の動作定義ファイル1011の内容例を示す図である。動作定義ファイル1011は、GPGPUモデル名1011毎に、SM内スレッドグループ数G、最大並列処理スレッド数M及び最低演算性能係数Pを記憶する。GPGPUモデル名Tは、試験可能なGPGPU101のモデル名である。SM内スレッドグループ数Gは、各SM111(図1)内のスレッドグループ131の数であり、図1及び図6の場合には8であり、図1及び図5の場合にはスレッドグループ131がないので0である。最大並列処理スレッド数Mは、図4の最大並列処理スレッド数Mに対応し、スレッド数が0からMまでの処理時間が計測される。最低演算性能係数Pは、上記のように、スレッド数毎の処理時間を比較し、最低演算性能係数P以上の処理時間の変動があれば、スレッド間隔wの終了を意味する。
図12は、図9の試験装置901の試験方法を示すフローチャートである。試験装置901は、CPU911がメインメモリ912内の試験プログラム1001を実行することにより、図12の処理を行う。
まず、ステップS1201では、試験装置901は、GPGPU101からデバイス情報を取得する。デバイス情報は、図10のGPGPUモデル名T、GPGPU全コア数C及びGPGPU内SM数Sを含む。この処理の詳細は、後に図13を参照しながら説明する。
次に、ステップS1202では、試験装置901は、上記のステップS1201の処理が異常終了した場合には異常終了し、上記のステップS1201の処理が正常終了した場合には、ステップS1203に進む。
次に、ステップS1203では、試験装置901は、記憶装置913内の動作定義ファイル1011から動作定義情報を取得する。動作定義情報は、図10及び図11に示すように、SM内スレッドグループ数G、最大並列処理スレッド数M及び最低演算性能係数Pを含む。この処理の詳細は、後に図14を参照しながら説明する。
次に、ステップS1204では、試験装置901は、上記のステップS1203の処理が異常終了した場合には異常終了し、上記のステップS1203の処理が正常終了した場合には、ステップS1205に進む。
次に、ステップS1205では、試験装置901は、メインメモリ912内の処理時間格納領域1005及び演算結果格納領域1006を初期化する。この処理の詳細は、後に図15を参照しながら説明する。
次に、ステップS1206では、試験装置901は、上記のステップS1205の処理が異常終了した場合には異常終了し、上記のステップS1205の処理が正常終了した場合には、ステップS1207に進む。
次に、ステップS1207では、試験装置901は、スレッド301の数を変えてGPGPU101に並列処理の実行を指示し、スレッド301の数毎の処理時間を取得する。この処理の詳細は、後に図16を参照しながら説明する。
次に、ステップS1208では、試験装置901は、上記のステップS1207の処理が異常終了した場合には異常終了し、上記のステップS1207の処理が正常終了した場合には、ステップS1209に進む。
次に、ステップS1209では、試験装置901は、スレッド301の数毎の処理時間の変動を分析し、GPGPU101内の不良コアの有無を確認する。この処理の詳細は、後に図17を参照しながら説明する。その後、試験装置901は、図12の処理を正常終了する。
図13は、図12のステップS1201の処理の詳細を示すフローチャートである。まず、ステップS1301では、試験装置901は、メインメモリ912において、GPGPUモデル名T、GPGPU内全コア数C及びGPGPU内SM数Sを格納するための領域を確保する。
次に、ステップS1302では、試験装置901は、上記のステップS1301の処理で領域確保に失敗したか否かを判断する。領域確保に成功した場合にはステップS1303に進み、領域確保に失敗した場合にはステップS1309に進む。
次に、ステップS1303では、試験装置901は、試験対象であるGPGPU101に対してデバイス情報取得命令を発行し、GPGPU101からデバイス情報を取得する。このデバイス情報は、上記のGPGPUモデル名T、GPGPU内全コア数C及びGPGPU内SM数Sを含む。
次に、ステップS1304では、試験装置901は、GPGPU101から正常なデバイス情報を入力したときにはステップS1305に進み、GPGPU101からエラー情報を入力したときにはステップS1309に進む。
次に、ステップS1305では、試験装置901は、上記の入力したデバイス情報内のGPGPUモデル名Tが、記憶装置913内の動作定義ファイル1011(図11)に存在する場合には、試験可能なGPGPU101であると判断し、ステップS1306に進み、上記の入力したデバイス情報内のGPGPUモデル名Tが、記憶装置913内の動作定義ファイル1011(図11)に存在しない場合には、試験不可のGPGPU101であると判断し、ステップS1309に進む。
次に、ステップS1306では、試験装置901は、上記の入力したデバイス情報内のGPGPUモデル名Tをメインメモリ912に格納する。
次に、ステップS1307では、試験装置901は、上記の入力したデバイス情報内のGPGPU内全コア数Cをメインメモリ912に格納する。例えば、図1の場合、GPGPU101が16個のSM111を有し、各SM111が32個のコア121を有するので、GPGPU内全コア数Cは、16×32=512である。
次に、ステップS1308では、試験装置901は、上記の入力したデバイス情報内のGPGPU内SM数Sをメインメモリ912に格納する。例えば、図1の場合、GPGPU101が16個のSM111を有するので、GPGPU内SM数Sは16である。その後、試験装置901は、図13の処理を終了し、図12のステップS1202を介してステップS1203に進む。
ステップS1309では、試験装置901は、上記のステップS1302、S1304又はS1305の異常の内容をディスプレイ装置903に出力して表示させる。次に、ステップS1310では、試験装置901は、終了コードを異常値にする。その後、試験装置901は、図13の処理を終了し、図12のステップS1202を介して異常終了する。
図14は、図12のステップS1203の処理の詳細を示すフローチャートである。まず、ステップS1401では、試験装置901は、メインメモリ912において、SM内スレッドグループ数G、最大並列処理スレッド数M及び最低演算性能係数Pを格納するための領域を確保する。
次に、ステップS1402では、試験装置901は、上記のステップS1401の処理で領域確保に失敗したか否かを判断する。領域確保に成功した場合にはステップS1403に進み、領域確保に失敗した場合にはステップS1408に進む。
次に、ステップS1403では、試験装置901は、記憶装置913内の動作定義ファイル1011(図11)をオープンする。
次に、ステップS1404では、試験装置901は、上記のステップS1403の処理でファイルオープンに成功した場合にはステップS1405に進み、ファイルオープンに失敗した場合にはステップS1408に進む。
次に、ステップS1405では、試験装置901は、図11の動作定義ファイル1011を参照し、図13のステップS1306で取得したGPGPUモデル名Tに対応するSM内スレッドグループ数Gを読み出し、その読み出したSM内スレッドグループ数Gをメインメモリ912に格納する。
次に、ステップS1406では、試験装置901は、図11の動作定義ファイル1011を参照し、図13のステップS1306で取得したGPGPUモデル名Tに対応する最大並列処理スレッド数Mを読み出し、その読み出した最大並列処理スレッド数Mをメインメモリ912に格納する。
次に、ステップS1407では、試験装置901は、図11の動作定義ファイル1011を参照し、図13のステップS1306で取得したGPGPUモデル名Tに対応する最低演算性能係数Pを読み出し、その読み出した最低演算性能係数Pをメインメモリ912に格納する。その後、試験装置901は、図14の処理を終了し、図12のステップS1204を介してステップS1205に進む。
ステップS1408では、試験装置901は、上記のステップS1402又はS1404の異常の内容をディスプレイ装置903に出力して表示させる。次に、ステップS1409では、試験装置901は、終了コードを異常値にする。その後、試験装置901は、図14の処理を終了し、図12のステップS1204を介して異常終了する。
図15は、図12のステップS1205の処理の詳細を示すフローチャートである。まず、ステップS1501では、試験装置901は、メインメモリ912において、スレッド数毎の処理時間を格納するための処理時間格納領域1005を確保する。
次に、ステップS1502では、試験装置901は、上記のステップS1501の処理で領域確保に失敗したか否かを判断する。領域確保に成功した場合にはステップS1503に進み、領域確保に失敗した場合にはステップS1507に進む。
次に、ステップS1503では、試験装置901は、メインメモリ912において、スレッド数毎のGPGPU101の演算結果を格納するための演算結果格納領域1006を確保する。
次に、ステップS1504では、試験装置901は、上記のステップS1503の処理で領域確保に失敗したか否かを判断する。領域確保に成功した場合にはステップS1505に進み、領域確保に失敗した場合にはステップS1507に進む。
次に、ステップS1505では、試験装置901は、試験対象のGPGPU101に対して、GPGPU101のメモリ112内の演算結果格納領域1021のためのメモリ領域確保命令を発行し、図14のステップS1406で取得した最大並列処理スレッド数M分の演算結果を格納するための演算結果格納領域1021を確保させる。
次に、ステップS1506では、試験装置901は、上記のステップS1505の処理が失敗したことを示す情報をGPGPU101から入力した場合には、ステップS1507に進み、上記のステップS1505の処理が成功したことを示す情報をGPGPU101から入力した場合には、図15の処理を終了し、図12のステップS1206を介してステップS1207に進む。
ステップS1507では、試験装置901は、上記のステップS1502、S1504又はS1506の異常の内容をディスプレイ装置903に出力して表示させる。次に、ステップS1508では、試験装置901は、終了コードを異常値にする。その後、試験装置901は、図15の処理を終了し、図12のステップS1206を介して異常終了する。
図16は、図12のステップS1207の処理の詳細を示すフローチャートである。まず、ステップS1601では、試験装置901は、変数であるスレッド数Nを1に設定する。
次に、ステップS1602では、試験装置901は、CPU911により、GPGPU101の処理時間の計測を開始する。
次に、ステップS1603では、試験装置901は、試験対象であるGPGPU101に対して、スレッド数Nのスレッド実行命令を発行し、スレッド数Nのスレッドの並列処理を開始させる。GPGPU101は、スレッド数Nのスレッドの並列処理を開始し、処理が終了すると、スレッドの演算結果をメモリ112内の演算結果格納領域1021に書き込む。
次に、ステップS1604では、試験装置901は、試験対象であるGPGPU101に対して、スレッド状況確認命令を発行し、GPGPU101の並列処理情報を取得する。この並列処理情報は、スレッドの処理が終了したか否かの情報を含む。
次に、ステップS1605では、試験装置901は、上記のステップS1604の並列処理情報を基に、スレッド数Nのすべてのスレッドの処理が終了したか否かを判断する。終了している場合には、ステップS1606に進み、終了していない場合には、ステップS1604に戻り、上記の処理を繰り返す。
ステップS1606では、試験装置(処理時間取得部)901は、CPU911により、GPGPU101の処理時間の計測を終了し、ステップS1602の計測開始からステップS1606の計測終了までの時間を、GPGPU101のスレッド数Nの処理時間として、処理時間A[N−1]に設定する。処理時間A[N−1]は、図10のメインメモリ912内の処理時間格納領域1005内の配列変数である。例えば、処理時間A[0]は、1個のスレッドの処理時間を示し、処理時間A[1]は、2個のスレッドの処理時間を示す。
次に、ステップS1607では、試験装置901は、試験対象であるGPGPU101に対して、GPGPU101のメモリ112内の演算結果格納領域1021に格納されているGPGPU101の演算結果を、試験装置901のメインメモリ912内の演算結果格納領域1006にコピーするためのメモリ領域コピー命令を発行し、スレッド数Nのすべてのスレッドの演算結果をGPGPU101の演算結果格納領域1021から試験装置901の演算結果格納領域1006にコピーする。
次に、ステップS1608では、試験装置901は、演算結果格納領域1006内のすべてのスレッドの演算結果が期待値と一致しているか否かを判断する。すべてのスレッドの演算結果が期待値と一致している場合には、演算結果が正しいことを意味するので、ステップS1609に進み、少なくとも一部のスレッドの演算結果が期待値と一致していない場合には、演算結果が誤りであることを意味するので、ステップS1611に進む。
次に、ステップS1609では、試験装置901は、スレッド数Nが最大並列処理スレッド数Mと一致するか否かを判断する。スレッド数Nは、上記のステップS1601で1に初期設定されている。最大並列処理スレッド数Mは、上記の図14のステップS1406で設定された最大並列処理スレッド数M(図11)である。両者が一致しない場合には、未だすべてのスレッド数の処理が終了していないので、ステップS1610に進み、両者が一致している場合には、すべてのスレッド数の処理が終了していることを意味するので、図16の処理を終了し、図12のステップS1208を介してステップS1209に進む。
ステップS1610では、試験装置901は、スレッド数Nを1増加し、上記のステップS1602に戻り、増加したスレッド数Nの処理を繰り返す。最大並列処理スレッド数Mまでの処理が終了すると、処理を終了する。
ステップS1611では、試験装置901は、上記のステップS1608の異常の内容をディスプレイ装置903に出力して表示させる。次に、ステップS1612では、試験装置901は、終了コードを異常値にする。その後、試験装置901は、図16の処理を終了し、図12のステップS1208を介して異常終了する。
図17は、図12のステップS1209の処理の詳細を示すフローチャートである。まず、ステップS1701では、試験装置901は、変数であるベース処理時間E、スレッド数x及び処理時間変動回数zを0で初期化する。ベース処理時間Eは、図5及び図6の処理時間Eに対応する。スレッド数xは、図16のスレッド数N−1に対応し、スレッド数x=0はスレッド数N=1を意味する。処理時間変動回数zは、処理時間が急激に増加する回数であり、図5又は図6のスレッド間隔wの数を意味する。
次に、ステップS1702では、試験装置901は、SM内スレッドグループ数Gが0か否かを判断する。SM内スレッドグループ数Gは、上記の図14のステップS1405で設定されたSM内スレッドグループ数G(図11)である。SM内スレッドグループ数Gが0である場合には、図5に示すようにコア単位でスレッドを処理する方式を意味するので、ステップS1703に進み、SM内スレッドグループ数Gが1以上である場合には、図6に示すようにスレッドグループ単位でスレッドを処理する方式を意味するので、ステップS1704に進む。
ステップS1703では、試験装置(処理ユニット数取得部)901は、図5に示すスレッド間隔wとして、GPGPU内全コア数Cを設定する。スレッド間隔wは、複数のスレッドを同時並列処理可能な最大の処理ユニット数に対応する。GPGPU内全コア数Cは、上記の図13のステップS1307で設定された数値である。例えば図1及び図5の場合、GPGPU101が16個のSM111を有し、各SM111が32個のコア121を有するので、GPGPU内全コア数Cは16×32=512である。その結果、スレッド間隔wは、512になる。その後、ステップS1705に進む。
ステップS1704では、試験装置(処理ユニット数取得部)901は、図6に示すスレッド間隔wとして、SM内スレッドグループ数G及びGPGPU内SM数Sの積を設定する。スレッド間隔wは、複数のスレッドを同時並列処理可能な最大の処理ユニット数に対応する。
SM内スレッドグループ数Gは、上記の図14のステップS1405で設定されたSM内スレッドグループ数G(図11)である。例えば図1及び図6の場合、各SM111が8個のスレッドグループ131を有するので、SM内スレッドグループ数Gは8である。
また、GPGPU内SM数Sは、上記の図13のステップS1308で設定された数値である。例えば図1及び図6の場合、GPGPU101が16個のSM111を有するので、GPGPU内SM数Sは16である。
その結果、スレッド間隔wは、G×S=8×16=128である。その後、ステップS1705に進む。ステップS1705以降の処理は、図5のコア単位でスレッドを処理する方式と図6のスレッドグループ単位でスレッドを処理する方式との共通の処理であり、両方の方式に対応可能である。
ステップS1705では、試験装置901は、処理時間変動回数期待値yとして、最大並列処理スレッド数Mをスレッド間隔wで除算した商を設定する。最大並列処理スレッド数Mは、上記の図14のステップS1406で設定された最大並列処理スレッド数M(図11)である。スレッド間隔wは、上記のステップS1703又はS1704で設定された値である。処理時間変動回数期待値yは、スレッド数を最大並列処理スレッド数Mまで変化させたときに処理時間が急激に増加する回数の期待値であり、図5又は図6のスレッド間隔wの数を意味する。
次に、ステップS1706では、試験装置901は、スレッド数xが最大並列処理スレッド数Mと一致するか否かを判断する。スレッド数xが最大並列処理スレッド数Mより小さい場合には、すべてのスレッド数xについての処理が終了していないので、ステップS1709に進み、スレッド数xが最大並列処理スレッド数Mと一致している場合には、すべてのスレッド数xについての処理が終了しているので、ステップS1707に進む。
ステップS1709では、試験装置901は、演算時間A[x+1]からベース処理時間Eを減算した値(A[x+1]−E)を演算し、演算時間A[x]からベース処理時間Eを減算した値(A[x]−E)を演算し、値(A[x+1]−E)を値(A[x]−E)で除算した商(A[x+1]−E)/(A[x]−E)を演算する。
ここで、ベース処理時間Eは、上記のステップS1701で初期値が0に設定されている。処理時間A[x+1]及びA[x]は、上記の図16のステップS1606で計測された処理時間である。処理時間A[x]はスレッド数xの処理時間であり、処理時間A[x+1]はスレッド数(x+1)の処理時間である。
そして、試験装置901は、商(A[x+1]−E)/(A[x]−E)が最低演算性能係数P以上であるか否かを判断する。最低演算性能係数P未満であればステップS1713に進み、最低演算性能係数P以上であればステップS1710に進む。
例えば、最初、スレッドxが0であり、例えば図5及び図6の場合、1個のスレッドの処理時間A[0]と2個のスレッドの処理時間A[1]はほぼ同じであるので、上記の商(A[x+1]−E)/(A[x]−E)は、ほぼ「1」になり、最低演算性能係数P未満になる。その場合、ステップS1709からステップS1713に進む。
ステップS1713では、試験装置901は、スレッド数xを1増加させる。例えば、スレッド数xは0から1に増加する。その後、ステップS1706の処理に戻り、同様な処理を繰り返す。すなわち、ステップS1706からステップS1709に進む。スレッド数xが1の時、例えば図5及び図6の場合、2個のスレッドの処理時間A[1]と3個のスレッドの処理時間A[2]もほぼ同じであるので、上記の商(A[x+1]−E)/(A[x]−E)は、ほぼ「1」になり、最低演算性能係数P未満になり、ステップS1709からステップS1713に進む。同様にして、図5の場合にはスレッド数x=510までは商(A[x+1]−E)/(A[x]−E)が最低演算性能係数P未満になり、図6の場合にはスレッド数x=126までは商(A[x+1]−E)/(A[x]−E)が最低演算性能係数P未満になり、同様の処理を繰り返す。
図5の場合、スレッド数x=511になると、513個のスレッドの処理時間A[512]が512個のスレッドの処理時間A[511]の約2倍になるので、上記の商(A[x+1]−E)/(A[x]−E)は、約「2」になり、最低演算性能係数P以上になる。その結果、ステップS1709からステップS1710に進む。
これに対し、図6の場合、スレッド数x=127になると、129個のスレッドの処理時間A[128]が128個のスレッドの処理時間A[127]の約2倍になるので、上記の商(A[x+1]−E)/(A[x]−E)は、約「2」になり、最低演算性能係数P以上になる。その結果、ステップS1709からステップS1710に進む。
ステップS1710では、試験装置901は、ベース処理時間Eとして処理時間A[x]を設定する。例えば、上記のように、図5の場合、スレッド数x=511であるので、512個のスレッドの処理時間A[511]がベース処理時間Eとして設定される。これに対して、図6の場合、スレッド数x=127であるので、128個のスレッドの処理時間A[127]がベース処理時間Eとして設定される。この設定された新たなベース処理時間Eが、次回のステップS1709の演算で用いられる。
次に、ステップS1711では、試験装置901は、スレッド数(x+1)がスレッド間隔wで割り切れるか否かを判断し、割り切れる場合にはステップS1712に進み、割り切れない場合にはステップS1714に進む。すなわち、試験装置901は、スレッド数(x+1)がスレッド間隔wの整数倍の値である場合には、ステップS1712に進み、整数倍の値でない場合には、ステップS1714に進む。
図5において、GPGPU101内に不良コアが存在しない場合、上記のように、スレッド数x=511であるので、スレッド数(x+1)は512であり、ステップS1703で設定されたように、スレッド間隔w=512である。この場合、スレッド数(x+1)=512はスレッド間隔w=512で割り切れるので、不良コアが検出されず、ステップS1711からステップS1712に進む。
これに対し、GPGPU101内に不良コアが存在する場合、スレッド数xは511より小さくなる。例えば、GPGPU101が1個の不良コアを有する場合には、スレッド数xは510になり、GPGPU101が2個の不良コアを有する場合には、スレッド数xは509になる。その場合、スレッド数(x+1)は、スレッド間隔w(=512)で割り切れないので、試験対象のGPGPU101が不良コアを有することが判明し、ステップS1714へ進む。
また、図6において、GPGPU101内に不良コアが存在しない場合、上記のように、スレッド数x=127であるので、スレッド数(x+1)は128であり、ステップS1704で設定されたように、スレッド間隔w=128である。この場合、スレッド数(x+1)=128はスレッド間隔w=128で割り切れるので、不良コアが検出されず、ステップS1711からステップS1712に進む。
これに対し、GPGPU101内に不良スレッドグループ(不良コア)が存在する場合、スレッド数xは127より小さくなる。例えば、GPGPU101が1個の不良スレッドグループを有する場合には、スレッド数xは126になり、GPGPU101が2個の不良スレッドグループを有する場合には、スレッド数xは125になる。その場合、スレッド数(x+1)は、スレッド間隔w(=128)で割り切れないので、試験対象のGPGPU101が不良スレッドグループ(不良コア)を有することが判明し、ステップS1714へ進む。
ステップS1712では、試験装置901は、処理時間変動回数zを1増加させる。例えば、処理時間変動回数zは0から1に増加する。処理時間変動回数zは、スレッド数を最大並列処理スレッド数Mまで変化させたときに処理時間が急激に増加する回数がカウントされており、図5又は図6のスレッド間隔wの回数に相当する。その後、ステップS1713の処理に戻り、同様な処理を繰り返す。その後、ステップS1709では、図5の場合、スレッド数xが512であるので、処理時間A[x]が513個のスレッドの処理時間A[512]であり、処理時間A[x+1]が514個のスレッドの処理時間A[513]であり、ベース処理時間Eが512個のスレッドの処理時間A[511]である。以下、同様の処理を繰り返す。
ステップS1706において、スレッド数xが最大並列処理スレッド数Mと一致する場合には、すべてのスレッド数の処理が終了していることを意味するので、ステップS1707に進む。
ステップS1707では、試験装置901は、処理時間変動回数zが処理時間変動回数期待値yと一致するか否かを判断する。処理時間変動回数期待値yは、上記のステップS1705で設定された値である。両者が一致する場合には、不良コアが存在しないことが判明するので、ステップS1708に進み、両者が一致しない場合には、不良コアが存在するので、ステップS1714に進む。
ステップS1708では、試験装置(出力部)901は、GPGPU101内のすべてのコアが正常であることを示す情報を、ディスプレイ装置903に出力することにより表示し、記憶装置913に出力することにより記録する。その後、図17の処理及び図12の処理を終了する。
ステップS1714では、試験装置(出力部)901は、GPGPU101内に不良コアが存在することを示す情報を、ディスプレイ装置903に出力することにより表示し、記憶装置913に出力することにより記録する。その後、図17の処理及び図12の処理を終了する。
以上により、GPGPU101の試験の結果がディスプレイ装置903及び記憶装置913に出力される。本実施形態では、図16のステップS1608で、GPGPU101がスレッドを処理した演算結果とその演算結果の期待値とを比較し、両者が一致しないときには、図16のステップS1611で、試験対象であるGPGPU101が異常であることを示す情報を出力する。これに対し、上記の両者が一致し、かつ、図17のステップS1711で、スレッドの数の変化が同時並列処理可能な最大の処理ユニット数と一致するときには、図17のステップS1708で、試験対象であるGPGPU101が正常であることを示す情報を出力する。演算結果の試験と処理時間の試験との両方を行うことにより、より厳しい条件での試験を行い、不良コアの検出率を向上させることができる。
浮動小数点演算の効率を最大限に高め、GPGPU101の最大性能を引き出し、FLOPS(Floating-point number Operations Per Second)計測を行い、所定範囲内であるか否かを判定する試験が考えられる。しかし、この試験は、試験プログラムの仕組みが複雑になり、試験プログラムの実行時間が、例えば数分〜数十分と長くなってしまう。また、製品評価段階で使用する試験プログラムは、GPGPU101のモデル毎の特性(プロセッサ毎の命令列最適化仕様)の差によって、FLOPS計測のための浮動小数点演算命令列のチューニングが必要となり、メンテナンスコストが必要である。
これに対して、本実施形態によれば、最大並列処理スレッド数Mが100000の場合には、数秒の短時間でGPGPU101を適切に試験することができる。また、本実施形態は、GPGPU101のモデル毎の特性を考慮する必要は無く、量産及び/又は保守向け試験プログラムに適用した場合、GPGPU101のモデル毎のメンテナンスコストを抑制することができる。
なお、本実施形態では、試験対象は、GPGPU101の場合を例に説明したが、GPGPUに限定されず、GPGPU以外の種々の処理装置に適用することができる。
上記実施形態は、何れも本発明を実施するにあたっての具体化の例を示したものに過ぎず、これらによって本発明の技術的範囲が限定的に解釈されてはならないものである。すなわち、本発明はその技術思想、又はその主要な特徴から逸脱することなく、様々な形で実施することができる。
以上の実施形態に関し、さらに以下の付記を開示する。
(付記1)
メモリに格納されたプログラムをプロセッサが実行することにより処理装置の試験を行う試験方法であって、
試験対象である処理装置が複数のスレッドを同時並列処理可能な最大の処理ユニット数を取得し、
スレッドの数を指定して試験対象である処理装置に並列処理を行わせ、前記スレッドの数に対応する処理時間を取得し、
前記処理時間が閾値以上になる前記スレッドの数が前記同時並列処理可能な最大の処理ユニット数と一致するときには前記試験対象である処理装置が正常であることを示す情報を出力し、一致しないときには前記試験対象である処理装置が異常であることを示す情報を出力する
ことを特徴とする試験方法。
(付記2)
前記処理時間が前記閾値以上になるときに、前記スレッドの数が前記同時並列処理可能な最大の処理ユニット数と一致するか否かを判定し、前記スレッドの数が前記同時並列処理可能な最大の処理ユニット数と一致するときには前記試験対象である処理装置が正常であることを示す情報を出力し、少なくとも1回一致しないときには前記試験対象である処理装置が異常であることを示す情報を出力することを特徴とする付記1記載の試験方法。
(付記3)
前記同時並列処理可能な最大の処理ユニット数は、前記処理装置内の全コア数であることを特徴とする付記1又は2記載の試験方法。
(付記4)
前記同時並列処理可能な最大の処理ユニット数は、前記処理装置内の全スレッドグループ数であり、
各スレッドグループは、複数のコアを有し、
各スレッドグループ単位で1個のスレッドを処理することを特徴とする付記1又は2記載の試験方法。
(付記5)
前記処理装置が前記スレッドを処理した演算結果と前記演算結果の期待値とを比較し、前記スレッドを処理した演算結果と前記演算結果の期待値が一致しないときには前記試験対象である処理装置が異常であることを示す情報を出力し、前記スレッドを処理した演算結果と前記演算結果の期待値が一致し、かつ、前記スレッドの数が前記同時並列処理可能な最大の処理ユニット数と一致するときには前記試験対象である処理装置が正常であることを示す情報を出力することを特徴とする付記1〜4のいずれか1項に記載の試験方法。
(付記6)
前記スレッドの数を順に変えて前記処理装置に並列処理を行わせ、前記スレッドの数毎の処理時間を取得することを特徴とする付記1〜5のいずれか1項に記載の試験方法。
(付記7)
処理装置の試験を行う試験装置であって、
試験対象である処理装置が複数のスレッドを同時並列処理可能な最大の処理ユニット数を取得する処理ユニット数取得部と、
スレッドの数を指定して試験対象である処理装置に並列処理を行わせ、前記スレッドの数に対応する処理時間を取得する処理時間取得部と、
前記処理時間が閾値以上になる前記スレッドの数が前記同時並列処理可能な最大の処理ユニット数と一致するときには前記試験対象である処理装置が正常であることを示す情報を出力し、一致しないときには前記試験対象である処理装置が異常であることを示す情報を出力する出力部と
を有することを特徴とする試験装置。
(付記8)
前記処理時間が前記閾値以上になるときに、前記スレッドの数が前記同時並列処理可能な最大の処理ユニット数と一致するか否かを判定する判定部を更に有し、
前記出力部は、前記スレッドの数が前記同時並列処理可能な最大の処理ユニット数と一致するときには前記試験対象である処理装置が正常であることを示す情報を出力し、少なくとも1回一致しないときには前記試験対象である処理装置が異常であることを示す情報を出力することを特徴とする付記7記載の試験装置。
(付記9)
前記同時並列処理可能な最大の処理ユニット数は、前記処理装置内の全コア数であることを特徴とする付記7又は8記載の試験装置。
(付記10)
前記同時並列処理可能な最大の処理ユニット数は、前記処理装置内の全スレッドグループ数であり、
各スレッドグループは、複数のコアを有し、
各スレッドグループ単位で1個のスレッドを処理することを特徴とする付記7又は8記載の試験装置。
(付記11)
前記処理装置が前記スレッドを処理した演算結果と前記演算結果の期待値とを比較する比較部を更に有し、
前記出力部は、前記スレッドを処理した演算結果と前記演算結果の期待値が一致しないときには前記試験対象である処理装置が異常であることを示す情報を出力し、前記スレッドを処理した演算結果と前記演算結果の期待値が一致し、かつ、前記スレッドの数が前記同時並列処理可能な最大の処理ユニット数と一致するときには前記試験対象である処理装置が正常であることを示す情報を出力することを特徴とする付記7〜10のいずれか1項に記載の試験装置。
(付記12)
前記処理時間取得部は、前記スレッドの数を順に変えて前記処理装置に並列処理を行わせ、前記スレッドの数毎の処理時間を取得することを特徴とする付記7〜11のいずれか1項に記載の試験装置。
(付記13)
試験対象である処理装置が複数のスレッドを同時並列処理可能な最大の処理ユニット数を取得し、
スレッドの数を指定して試験対象である処理装置に並列処理を行わせ、前記スレッドの数に対応する処理時間を取得し、
前記処理時間が閾値以上になる前記スレッドの数が前記同時並列処理可能な最大の処理ユニット数と一致するときには前記試験対象である処理装置が正常であることを示す情報を出力し、一致しないときには前記試験対象である処理装置が異常であることを示す情報を出力する、
処理をコンピュータに実行させるプログラム。
(付記14)
前記処理時間が前記閾値以上になるときに、前記スレッドの数が前記同時並列処理可能な最大の処理ユニット数と一致するか否かを判定し、前記スレッドの数が前記同時並列処理可能な最大の処理ユニット数と一致するときには前記試験対象である処理装置が正常であることを示す情報を出力し、少なくとも1回一致しないときには前記試験対象である処理装置が異常であることを示す情報を出力する処理をコンピュータに実行させる付記13記載のプログラム。
(付記15)
前記同時並列処理可能な最大の処理ユニット数は、前記処理装置内の全コア数であることを特徴とする付記13又は14記載のプログラム。
(付記16)
前記同時並列処理可能な最大の処理ユニット数は、前記処理装置内の全スレッドグループ数であり、
各スレッドグループは、複数のコアを有し、
各スレッドグループ単位で1個のスレッドを処理することを特徴とする付記13又は14記載のプログラム。
(付記17)
前記処理装置が前記スレッドを処理した演算結果と前記演算結果の期待値とを比較し、前記スレッドを処理した演算結果と前記演算結果の期待値が一致しないときには前記試験対象である処理装置が異常であることを示す情報を出力し、前記スレッドを処理した演算結果と前記演算結果の期待値が一致し、かつ、前記スレッドの数が前記同時並列処理可能な最大の処理ユニット数と一致するときには前記試験対象である処理装置が正常であることを示す情報を出力する処理をコンピュータに実行させる付記13〜16のいずれか1項に記載のプログラム。
(付記18)
前記スレッドの数を順に変えて前記処理装置に並列処理を行わせ、前記スレッドの数毎の処理時間を取得することを特徴とする付記13〜17のいずれか1項に記載のプログラム。
101 GPGPU
111 ストリーミングマルチプロセッサ(SM)
112 メモリ
113 二次キャッシュメモリ
121 コア
122 命令キャッシュメモリ
123 一次キャッシュメモリ
124 コア群
131 スレッドグループ
901 試験装置
902 キーボード
903 ディスプレイ装置
911 CPU
912 メインメモリ
913 記憶装置
914 入力装置インタフェース
915 出力装置インタフェース
916 入出力インタフェーススロット
917 バス

Claims (10)

  1. 処理装置の試験を行う試験方法であって、
    試験対象である処理装置の複数のスレッドを同時並列処理可能な仕様上の最大の処理ユニット数(以下、最大処理ユニット数という)を取得し、
    スレッド数を1つずつ増やして前記処理装置に並列処理させ処理時間を測定するという試験を繰り返し、測定した処理時間を前回測定値と比較しその差が所定の閾値を越えるときのスレッド数が、当該処理装置の最大処理ユニット数の整数倍+1であれば正常であることを示す情報を出力し、そうでなければ異常であることを示す情報を出力する
    ことを特徴とする試験方法。
  2. 前記その差が所定の閾値を越えるときの複数のスレッド数のすべてが、前記処理装置の最大処理ユニット数の整数倍+1であれば正常であることを示す情報を出力し、そうでなければ異常であることを示す情報を出力することを特徴とする請求項1記載の試験方法。
  3. 前記最大処理ユニット数は、前記処理装置内の全コア数であることを特徴とする請求項1又は2記載の試験方法。
  4. 前記最大処理ユニット数は、前記処理装置内の全スレッドグループ数であり、
    各スレッドグループは、複数のコアを有し、
    各スレッドグループ単位で1個のスレッドを処理することを特徴とする請求項1又は2記載の試験方法。
  5. 処理装置の試験を行う試験装置であって、
    試験対象である処理装置の複数のスレッドを同時並列処理可能な仕様上の最大の処理ユニット数(以下、最大処理ユニット数という)を取得する処理ユニット数取得部と、
    スレッド数を1つずつ増やして前記処理装置に並列処理させ処理時間を測定するという試験を繰り返し、測定した処理時間を前回測定値と比較しその差が所定の閾値を越えるときのスレッド数が、当該処理装置の最大処理ユニット数の整数倍+1であれば正常であることを示す情報を出力し、そうでなければ異常であることを示す情報を出力する出力部と
    を有することを特徴とする試験装置。
  6. 前記出力部は、前記その差が所定の閾値を越えるときの複数のスレッド数のすべてが、前記処理装置の最大処理ユニット数の整数倍+1であれば正常であることを示す情報を出力し、そうでなければ異常であることを示す情報を出力することを特徴とする請求項5記載の試験装置。
  7. 前記最大処理ユニット数は、前記処理装置内の全コア数であることを特徴とする請求項5又は6記載の試験装置。
  8. 前記最大処理ユニット数は、前記処理装置内の全スレッドグループ数であり、
    各スレッドグループは、複数のコアを有し、
    各スレッドグループ単位で1個のスレッドを処理することを特徴とする請求項5又は6記載の試験装置。
  9. 試験対象である処理装置の複数のスレッドを同時並列処理可能な仕様上の最大の処理ユニット数(以下、最大処理ユニット数という)を取得し、
    スレッド数を1つずつ増やして前記処理装置に並列処理させ処理時間を測定するという試験を繰り返し、測定した処理時間を前回測定値と比較しその差が所定の閾値を越えるときのスレッド数が、当該処理装置の最大処理ユニット数の整数倍+1であれば正常であることを示す情報を出力し、そうでなければ異常であることを示す情報を出力する、
    処理をコンピュータに実行させるプログラム。
  10. 前記その差が所定の閾値を越えるときの複数のスレッド数のすべてが、前記処理装置の最大処理ユニット数の整数倍+1であれば正常であることを示す情報を出力し、そうでなければ異常であることを示す情報を出力する処理をコンピュータに実行させる請求項9記載のプログラム。
JP2012062023A 2012-03-19 2012-03-19 試験方法、試験装置及びプログラム Active JP5900061B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2012062023A JP5900061B2 (ja) 2012-03-19 2012-03-19 試験方法、試験装置及びプログラム
US13/716,298 US9087028B2 (en) 2012-03-19 2012-12-17 Test method, test apparatus, and recording medium

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2012062023A JP5900061B2 (ja) 2012-03-19 2012-03-19 試験方法、試験装置及びプログラム

Publications (2)

Publication Number Publication Date
JP2013196300A JP2013196300A (ja) 2013-09-30
JP5900061B2 true JP5900061B2 (ja) 2016-04-06

Family

ID=49158848

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012062023A Active JP5900061B2 (ja) 2012-03-19 2012-03-19 試験方法、試験装置及びプログラム

Country Status (2)

Country Link
US (1) US9087028B2 (ja)
JP (1) JP5900061B2 (ja)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105320555B (zh) * 2014-06-17 2019-05-24 腾讯科技(深圳)有限公司 在终端上执行任务的方法及装置
JP6435980B2 (ja) * 2015-04-27 2018-12-12 富士通株式会社 並列計算機、スレッド再割当判定方法及びスレッド再割当判定プログラム
US9893940B1 (en) * 2015-05-26 2018-02-13 Amazon Technologies, Inc. Topologically aware network device configuration
DE102015215068A1 (de) * 2015-08-06 2016-12-08 Continental Automotive Gmbh Verfahren zum Betreiben einer Steuervorrichtung und Diagnosesystem
DE102016203965A1 (de) * 2016-03-10 2017-09-14 Robert Bosch Gmbh Überwachung eines Rechensystems
EP3811328A4 (en) * 2018-06-14 2021-09-29 Shanghai United Imaging Healthcare Co., Ltd. IMAGE PROCESSING METHODS AND SYSTEMS
CN111221685A (zh) * 2018-11-26 2020-06-02 中兴通讯股份有限公司 一种物理内存检测方法、装置、设备及可读存储介质
CN111176797B (zh) * 2019-12-18 2023-10-27 北京百度网讯科技有限公司 数据并发的处理方法、装置、电子设备及可读存储介质

Family Cites Families (33)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5732209A (en) * 1995-11-29 1998-03-24 Exponential Technology, Inc. Self-testing multi-processor die with internal compare points
US5946487A (en) * 1996-06-10 1999-08-31 Lsi Logic Corporation Object-oriented multi-media architecture
US6058465A (en) * 1996-08-19 2000-05-02 Nguyen; Le Trong Single-instruction-multiple-data processing in a multimedia signal processor
DE19861088A1 (de) * 1997-12-22 2000-02-10 Pact Inf Tech Gmbh Verfahren zur Reparatur von integrierten Schaltkreisen
JP3688217B2 (ja) * 2001-04-12 2005-08-24 三菱電機株式会社 マルチプロセッサ初期化/並行診断方法
US20030005380A1 (en) * 2001-06-29 2003-01-02 Nguyen Hang T. Method and apparatus for testing multi-core processors
US6928378B2 (en) * 2002-07-23 2005-08-09 Sun Microsystems, Inc. Stress testing at low cost through parallel execution of unit tests
US7363369B2 (en) * 2003-10-16 2008-04-22 International Business Machines Corporation Monitoring thread usage to dynamically control a thread pool
US7310722B2 (en) * 2003-12-18 2007-12-18 Nvidia Corporation Across-thread out of order instruction dispatch in a multithreaded graphics processor
US7685487B1 (en) * 2005-03-22 2010-03-23 Advanced Micro Devices, Inc. Simultaneous core testing in multi-core integrated circuits
US7610537B2 (en) * 2006-04-04 2009-10-27 International Business Machines Corporation Method and apparatus for testing multi-core microprocessors
US20080033900A1 (en) * 2006-08-03 2008-02-07 Yan Zhang System and method for autonomic tuning the number of threads in application server at runtime
US8046745B2 (en) * 2006-11-30 2011-10-25 International Business Machines Corporation Method to examine the execution and performance of parallel threads in parallel programming
DE102006059156B4 (de) * 2006-12-14 2008-11-06 Advanced Micro Devices, Inc., Sunnyvale Verfahren zum Testen eines integrierten Schaltkreischips mit zumindest zwei Schaltungskernen sowie integrierter Schaltkreischip und Testsystem
DE102006059158B4 (de) * 2006-12-14 2009-06-10 Advanced Micro Devices, Inc., Sunnyvale Integrierter Schaltkreischip mit zumindest zwei Schaltungskernen und zugehöriges Verfahren zum Testen
US7797658B2 (en) * 2007-10-22 2010-09-14 Oracle America, Inc. Multithreaded static timing analysis
US8312254B2 (en) * 2008-03-24 2012-11-13 Nvidia Corporation Indirect function call instructions in a synchronous parallel thread processor
US20100192012A1 (en) * 2009-01-26 2010-07-29 Sun Microsystems, Inc. Testing multi-core processors in a system
JP5316128B2 (ja) 2009-03-17 2013-10-16 トヨタ自動車株式会社 故障診断システム、電子制御ユニット、故障診断方法
JP5102823B2 (ja) * 2009-12-21 2012-12-19 インターナショナル・ビジネス・マシーンズ・コーポレーション 総テスト時間を最小にするようにテストシナリオを最適化するテスト支援装置、テスト装置、テスト支援方法及びコンピュータプログラム
US20130061098A1 (en) * 2010-05-10 2013-03-07 Toyoya Jidosha Kabushiki Kaisha Failure check apparatus and failure check method
US9336105B2 (en) * 2010-09-30 2016-05-10 International Business Machines Corporation Evaluation of multiple input signature register results
US8769360B2 (en) * 2010-10-14 2014-07-01 International Business Machines Corporation Dynamic detection and identification of the functional state of multi-processor cores
US8639982B2 (en) * 2011-06-20 2014-01-28 International Business Machines Corporation Dynamic computer process probe
US8856602B2 (en) * 2011-12-20 2014-10-07 International Business Machines Corporation Multi-core processor with internal voting-based built in self test (BIST)
JP5785888B2 (ja) * 2012-03-01 2015-09-30 株式会社アドバンテスト 試験装置および試験モジュール
US9262292B2 (en) * 2012-06-11 2016-02-16 New York University Test access system, method and computer-accessible medium for chips with spare identical cores
US9092270B2 (en) * 2012-09-25 2015-07-28 Oracle International Corporation Method of SOA performance tuning
US9063906B2 (en) * 2012-09-27 2015-06-23 International Business Machines Corporation Thread sparing between cores in a multi-threaded processor
US9032256B2 (en) * 2013-01-11 2015-05-12 International Business Machines Corporation Multi-core processor comparison encoding
KR101457557B1 (ko) * 2013-01-18 2014-11-04 연세대학교 산학협력단 멀티코어 장치, 테스트 장치 및 고장 진단 방법
WO2014149269A1 (en) * 2013-03-15 2014-09-25 Gentex Corporation Switchable rearview mirror element with anti-reflection mechanisms for use with a display
US9575120B2 (en) * 2013-03-29 2017-02-21 International Business Machines Corporation Scan chain processing in a partially functional chip

Also Published As

Publication number Publication date
JP2013196300A (ja) 2013-09-30
US20130246852A1 (en) 2013-09-19
US9087028B2 (en) 2015-07-21

Similar Documents

Publication Publication Date Title
JP5900061B2 (ja) 試験方法、試験装置及びプログラム
US9569347B2 (en) Testing optimized binary modules
Botezatu et al. Predicting disk replacement towards reliable data centers
US9026998B2 (en) Selecting relevant tests to quickly assess code stability
EP2960799A1 (en) Defect localization in software integration tests
US8978009B2 (en) Discovering whether new code is covered by tests
US11327742B2 (en) Affinity recommendation in software lifecycle management
CN104919384A (zh) 用于设备维护和/或风险减缓的电力***设备的评估
JP6260130B2 (ja) ジョブ遅延検知方法、情報処理装置、およびプログラム
ES2923100T3 (es) Clasificación de partes de código de software
US9619356B2 (en) Detection of hardware errors using periodically synchronized redundant transactions and comparing results from cores of a multi-core processor
JP6728874B2 (ja) 未知のバイナリプログラムに対する有効な入力の決定
CN106598637A (zh) 节点内的部件的选择性加载以加速维护动作
JP2018169696A (ja) 情報処理装置,試験プログラムおよび試験方法
JP2017167984A (ja) 情報処理装置、情報処理プログラムおよび検査システム
CN112052161B (zh) 一种接口测试方法、装置、电子设备及介质
Ramanathan et al. PHALANX: a graph-theoretic framework for test case prioritization
US20140143745A1 (en) Techniques for segmenting of hardware trace and verification of individual trace segments
JP6310206B2 (ja) 並列コンピューティング環境でソフトウェアを開発するための方法
US20220019522A1 (en) Automated sequencing of software tests using dependency information
JP2018116365A (ja) 試験装置、試験プログラム生成方法及び試験方法
US11500639B2 (en) Arithmetic processing apparatus and control method using ordering property
von Koch et al. Variability of data dependences and control flow
JP2020153804A (ja) 試験装置、試験方法及びコンピュータプログラム
JP2014203125A (ja) パターン化装置及び方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20141204

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20151014

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20151110

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20151215

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20160209

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20160222

R150 Certificate of patent or registration of utility model

Ref document number: 5900061

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150