(57)【特許請求の範囲】
【請求項１】
処理装置の試験を行う試験方法であって、
試験対象である処理装置の複数のスレッドを同時並列処理可能な仕様上の最大の処理ユニット数（以下、最大処理ユニット数という）を取得し、
スレッド数を１つずつ増やして前記処理装置に並列処理させ処理時間を測定するという試験を繰り返し、測定した処理時間を前回測定値と比較しその差が所定の閾値を越えるときのスレッド数が、当該処理装置の最大処理ユニット数の整数倍＋１であれば正常であることを示す情報を出力し、そうでなければ異常であることを示す情報を出力する
ことを特徴とする試験方法。
【請求項２】
前記その差が所定の閾値を越えるときの複数のスレッド数のすべてが、前記処理装置の最大処理ユニット数の整数倍＋１であれば正常であることを示す情報を出力し、そうでなければ異常であることを示す情報を出力することを特徴とする請求項１記載の試験方法。
【請求項３】
前記最大処理ユニット数は、前記処理装置内の全コア数であることを特徴とする請求項１又は２記載の試験方法。
【請求項４】
前記最大処理ユニット数は、前記処理装置内の全スレッドグループ数であり、
各スレッドグループは、複数のコアを有し、
各スレッドグループ単位で１個のスレッドを処理することを特徴とする請求項１又は２記載の試験方法。
【請求項５】
処理装置の試験を行う試験装置であって、
試験対象である処理装置の複数のスレッドを同時並列処理可能な仕様上の最大の処理ユニット数（以下、最大処理ユニット数という）を取得する処理ユニット数取得部と、
スレッド数を１つずつ増やして前記処理装置に並列処理させ処理時間を測定するという試験を繰り返し、測定した処理時間を前回測定値と比較しその差が所定の閾値を越えるときのスレッド数が、当該処理装置の最大処理ユニット数の整数倍＋１であれば正常であることを示す情報を出力し、そうでなければ異常であることを示す情報を出力する出力部と
を有することを特徴とする試験装置。
【請求項６】
前記出力部は、前記その差が所定の閾値を越えるときの複数のスレッド数のすべてが、前記処理装置の最大処理ユニット数の整数倍＋１であれば正常であることを示す情報を出力し、そうでなければ異常であることを示す情報を出力することを特徴とする請求項５記載の試験装置。
【請求項７】
前記最大処理ユニット数は、前記処理装置内の全コア数であることを特徴とする請求項５又は６記載の試験装置。
【請求項８】
前記最大処理ユニット数は、前記処理装置内の全スレッドグループ数であり、
各スレッドグループは、複数のコアを有し、
各スレッドグループ単位で１個のスレッドを処理することを特徴とする請求項５又は６記載の試験装置。
【請求項９】
試験対象である処理装置の複数のスレッドを同時並列処理可能な仕様上の最大の処理ユニット数（以下、最大処理ユニット数という）を取得し、
スレッド数を１つずつ増やして前記処理装置に並列処理させ処理時間を測定するという試験を繰り返し、測定した処理時間を前回測定値と比較しその差が所定の閾値を越えるときのスレッド数が、当該処理装置の最大処理ユニット数の整数倍＋１であれば正常であることを示す情報を出力し、そうでなければ異常であることを示す情報を出力する、
処理をコンピュータに実行させるプログラム。
【請求項１０】
前記その差が所定の閾値を越えるときの複数のスレッド数のすべてが、前記処理装置の最大処理ユニット数の整数倍＋１であれば正常であることを示す情報を出力し、そうでなければ異常であることを示す情報を出力する処理をコンピュータに実行させる請求項９記載のプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、試験方法、試験装置及びプログラムに関する。
【背景技術】
【０００２】
ＳＭＰ（Symmetric Multi-Processing）モードからＡＭＰ（Asymmetric Multiprocessing）モードに切り替え可能な複数のＣＰＵ（中央処理装置：Central Processing Unit）コアを搭載したマルチコアＣＰＵの故障診断システムにおいて、マルチコアＣＰＵの処理負荷を予測する負荷予測手段と、処理負荷が閾値未満の場合、いずれかのＣＰＵコアをＡＭＰモードに切り替えるモード切り替え手段と、ＡＭＰモードに切り替えられたＣＰＵコアを故障診断する故障診断手段と、を有する故障診断システムが知られている（例えば、特許文献１参照）。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１０−２１８２７７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
汎用的なＣＰＵの試験では、ＣＰＵ内の全コアに異なる命令列を指定して試験実行させ、その演算結果を調べることにより、不良コアを特定することができる。
【０００５】
これに対し、ＧＰＧＰＵ（General-Purpose computing on Graphics Processing Units）は、ＧＰＵ（Graphics Processing Units）の演算資源を画像処理以外の目的に応用する処理装置である。ＧＰＵは、画像処理を専門とする処理装置である。
【０００６】
ＧＰＧＰＵでは、ＧＰＧＰＵ内のコアを指定して各命令列を実行させることができない。不良コアがある場合には、その不良コアの代わりに他の正常コアが処理を行うため、不良コアがあるか否かの試験が困難である。
【０００７】
１つの側面では、本発明は、処理装置の不良有無を検出することができる試験方法、試験装置及びプログラムを提供することである。
【課題を解決するための手段】
【０００８】
試験方法は、処理装置の試験を行う試験方法であって、試験対象である処理装置の複数のスレッドを同時並列処理可能な仕様上の最大の処理ユニット数（以下、最大処理ユニット数という）を取得し、スレッド数を１つずつ増やして前記処理装置に並列処理させ処理時間を測定するという試験を繰り返し、測定した処理時間を前回測定値と比較しその差が所定の閾値を越えるときのスレッド数が、当該処理装置の最大処理ユニット数の整数倍＋１であれば正常であることを示す情報を出力し、そうでなければ異常であることを示す情報を出力する。
【発明の効果】
【０００９】
処理装置の不良有無を検出することができる。
【図面の簡単な説明】
【００１０】
【図１】図１は、実施形態による試験対象のＧＰＧＰＵの構成例を示す図である。
【図２】図２（Ａ）は汎用ＣＰＵの試験方法を説明するための図であり、図２（Ｂ）はＧＰＧＰＵの試験方法を説明するための図である。
【図３】図３（Ａ）はすべてのコアが正常なＧＰＧＰＵの処理例を示す図であり、図３（Ｂ）は不良コアが存在するＧＰＧＰＵの処理例を示す図である。
【図４】図４は、本実施形態によるＧＰＧＰＵの試験方法を説明するための図である。
【図５】図５は、コア単位でスレッドを処理する方式のＧＰＧＰＵのスレッド数毎の処理時間を示す図である。
【図６】図６は、スレッドグループ単位でスレッドを処理する方式のＧＰＧＰＵのスレッド数毎の処理時間を示す図である。
【図７】図７は、不良スレッドグループを有しないＧＰＧＰＵのスレッド数毎の処理時間の具体例を示す図である。
【図８】図８は、不良スレッドグループを有するＧＰＧＰＵのスレッド数毎の処理時間の具体例を示す図である。
【図９】図９は、本実施形態による試験システムの構成例を示す図である。
【図１０】図１０は、図９の試験システムの一部の詳細例を示す図である。
【図１１】図１１は、記憶装置内の動作定義ファイルの内容例を示す図である。
【図１２】図１２は、図９の試験装置の試験方法を示すフローチャートである。
【図１３】図１３は、図１２のステップＳ１２０１の処理の詳細を示すフローチャートである。
【図１４】図１４は、図１２のステップＳ１２０３の処理の詳細を示すフローチャートである。
【図１５】図１５は、図１２のステップＳ１２０５の処理の詳細を示すフローチャートである。
【図１６】図１６は、図１２のステップＳ１２０７の処理の詳細を示すフローチャートである。
【図１７】図１７は、図１２のステップＳ１２０９の処理の詳細を示すフローチャートである。
【発明を実施するための形態】
【００１１】
図１は、実施形態による試験対象のＧＰＧＰＵの構成例を示す図である。ＧＰＧＰＵ１０１は、複数のストリーミングマルチプロセッサ（ＳＭ：Streaming Multiprocessor）１１１、メモリ１１２及び二次キャッシュメモリ１１３を有する。メモリ１１２は、例えばＧＤＤＲ（Graphics Double Data Rate）メモリである。ＳＭ１１１は、メモリ１１２及び二次キャッシュメモリ１１３に対してアクセスすることができる。
【００１２】
ＳＭ１１１は、コア群１２４、命令キャッシュメモリ１２２及び一次キャッシュメモリ１２３を有する。命令キャッシュメモリ１２２は命令のキャッシュメモリであり、一次キャッシュメモリ１２３はデータのキャッシュメモリである。コア群１２４は、複数のコア１２１を有する。
【００１３】
命令列（スレッド）の処理単位として、コア１２１単位で処理する方式と、複数のコア１２１のグループを作ってグループ単位で処理する方式の２つの方式がある。まず、コア１２１単位で処理する方式について説明する。この方式では、コア１２１が命令列を同時並列処理可能な処理ユニットである。すべてのコア１２１が並列処理可能であるので、コア１２１の数の命令列を同時に並列処理可能である。例えば、ＧＰＧＰＵ１０１が１６個のＳＭ１１１を有し、各ＳＭ１１１が３２個のコア１２１を有する場合、コア１２１の総数は１６×３２＝５１２個である。したがって、ＧＰＧＰＵ１０１は、最大、５１２個の命令列を同時に並列処理可能である。すなわち、同時並列処理可能な最大の処理ユニット数は５１２である。
【００１４】
次に、グループ単位で処理する方式について説明する。この方式では、コア群１２４は、複数のスレッドグループ１３１を有し、スレッドグループ１３１が命令列を同時並列処理可能な処理ユニットである。各スレッドグループ１３１は、役割分担が異なる複数のコア（例えば４個のコア）１２１を有する。各スレッドグループ１３１単位で１個の命令列（スレッド）を処理する。すべてのスレッドグループ１３１が並列処理可能であるので、スレッドグループ１３１の数の命令列を同時に並列処理可能である。例えば、ＧＰＧＰＵ１０１が１６個のＳＭ１１１を有し、各ＳＭ１１１が８個のスレッドグループ１３１を有する場合、スレッドグループ１３１の総数は１６×８＝１２８個である。したがって、ＧＰＧＰＵ１０１は、最大、１２８個の命令列を同時に並列処理可能である。すなわち、同時並列処理可能な最大の処理ユニット数は１２８である。
【００１５】
図２（Ａ）は、汎用ＣＰＵ２０１の試験方法を説明するための図である。汎用ＣＰＵ２０１では、異なる命令列Ａ〜Ｈをそれぞれコア１〜８の番号を指定して処理させることができる。例えば、命令列Ａをコア１に処理させ、命令列Ｂをコア２に処理させる等のように、どの命令列をどのコアに処理させるかを指定することができる。したがって、命令列Ａ〜Ｈの演算結果を調べれば、各コア１〜８で正常な演算が行われたか否かを判断することができるので、各コア１〜８の良否を判定することができる。
【００１６】
図２（Ｂ）は、ＧＰＧＰＵ１０１の試験方法を説明するための図である。ＧＰＧＰＵ１０１では、異なる命令列Ａ〜Ｈをそれぞれコア１２１の番号を指定して処理させることができない。ＧＰＧＰＵ１０１に命令列Ａ〜Ｈの処理を指示するだけであり、コア１２１の番号を指定することができず、どのコア１２１が命令列Ａ〜Ｈを処理するのか分からない。命令列Ａ〜Ｈを処理するコア１２１は任意に割り当てられる。したがって、命令列Ａ〜Ｈの演算結果を調べても、各コア１２１の良否を判定することができない。
【００１７】
図３（Ａ）は、すべてのコア１２１が正常なＧＰＧＰＵ１０１の処理例を示す図である。上記のように、コア１２１の単位で命令列を処理する方式では、ＧＰＧＰＵ１０１は、同時並列処理可能な５１２個のコア１２１を有する。スレッド３０１は一又は複数の命令からなる処理単位命令であり、各命令は命令コード及び／又はデータを有する。例えば、命令はオペコード及びオペランドを有し、オペコードが命令コードであり、オペランドがデータである。なお、ＧＰＧＰＵ１０１の演算性能を最大限に発揮させるために、スレッド３０１は、浮動小数点演算のスレッドであることが好ましい。５１２個の同一のスレッド３０１の並列処理をＧＰＧＰＵ１０１に指示した場合、ＧＰＧＰＵ１０１内の５１２個のコア１２１が５１２個のスレッド３０１を同時に並列処理する。１個のスレッド３０１の処理を指示した場合には、ＧＰＧＰＵ１０１内の１個のコア１２１が１個のスレッド３０１を処理する。２個の同一のスレッド３０１の並列処理を指示した場合には、ＧＰＧＰＵ１０１内の２個のコア１２１が２個のスレッド３０１を同時に並列処理する。３個の同一のスレッド３０１の並列処理を指示した場合には、ＧＰＧＰＵ１０１内の３個のコア１２１が３個のスレッド３０１を同時に並列処理する。同様に、５１２個の同一のスレッド３０１の並列処理を指示した場合には、ＧＰＧＰＵ１０１内の５１２個のコア１２１が５１２個のスレッド３０１を同時に並列処理する。したがって、１個〜５１２個のスレッド３０１の並列処理をそれぞれ指示したときのＧＰＧＰＵ１０１の各処理時間はほぼ同じである。すなわち、１個のスレッド３０１の処理時間と５１２個のスレッド３０１の処理時間は、ほぼ同じである。
【００１８】
図３（Ｂ）は、不良コアが存在するＧＰＧＰＵ１０１の処理例を示す図である。上記のように、ＧＰＧＰＵ１０１は、５１２個のコア１２１を有する。例えば、５１２個のコア１２１が２個の不良コア１２１及び５１０個の正常コア１２１を有する場合を例に説明する。５１２個の同一のスレッド３０１の並列処理をＧＰＧＰＵ１０１に指示した場合、ＧＰＧＰＵ１０１内の５１０個の正常コア１２１が５１０個のスレッド３０１を同時に並列処理する。この際、５１２個のスレッド３０１の中で、５１０個のスレッド３０１の処理は行われるが、残りの２個のスレッド３０１の処理は待たされる。その後、５１０個の正常コア１２１の中でスレッド３０１の処理が完了した２個の正常コア１２１が残りの２個のスレッド３０１を同時に並列処理する。したがって、図３（Ｂ）の不良コアを有するＧＰＧＰＵ１０１の処理時間は、図３（Ａ）の不良コアを有しないＧＰＧＰＵ１０１の処理時間に対して、約２倍になる。図３（Ｂ）の場合、１個〜５１０個のスレッド３０１の並列処理をそれぞれ指示したときのＧＰＧＰＵ１０１の各処理時間はほぼ同じである。これに対し、５１１個及び５１２個のスレッド３０１の処理時間は、１個〜５１０個のスレッド３０１の処理時間に対して、約２倍になる。また、５１２個のスレッド３０１は、５１０個の正常コア１２１により処理されるので、５１２個のスレッド３０１の演算結果は、すべて正常になる。したがって、５１２個のスレッド３０１の演算結果を調べても、２個の不良コア１２１の存在を発見することができない。
【００１９】
そこで、本実施形態では、図３（Ａ）の不良コアを有しないＧＰＧＰＵ１０１の処理時間と、図３（Ｂ）の不良コアを有するＧＰＧＰＵ１０１の処理時間との違いに着目して、不良コアを有するか否かの試験を行う。
【００２０】
図４は、本実施形態によるＧＰＧＰＵ１０１の試験方法を説明するための図である。ＣＰＵ９１１は、試験装置のＣＰＵであり、ＧＰＧＰＵ１０１の試験を行う。まず、ステップＳ４１１では、ＣＰＵ９１１は、ＧＰＧＰＵ１０１に対して、スレッドの並列処理を指示する。
【００２１】
次に、ステップＳ４１２では、ＣＰＵ９１１は、ＧＰＧＰＵ１０１に対して、１個の浮動小数点演算のスレッド３０１の処理の開始を指示し、１個のスレッド３０１の処理時間の計測を開始する。次に、ステップＳ４１３では、ＣＰＵ９１１は、ＧＰＧＰＵ１０１から処理完了通知を入力すると、処理時間の計測を終了し、１個のスレッド３０１の処理時間を取得する。
【００２２】
次に、ステップＳ４１４では、ＣＰＵ９１１は、ＧＰＧＰＵ１０１に対して、２個の同一の浮動小数点演算のスレッド３０１の並列処理の開始を指示し、２個のスレッド３０１の処理時間の計測を開始する。次に、ステップＳ４１５では、ＣＰＵ９１１は、ＧＰＧＰＵ１０１から処理完了通知を入力すると、処理時間の計測を終了し、２個のスレッド３０１の処理時間を取得する。
【００２３】
次に、ステップＳ４１６では、ＣＰＵ９１１は、ＧＰＧＰＵ１０１に対して、３個の同一の浮動小数点演算のスレッド３０１の並列処理の開始を指示し、３個のスレッド３０１の処理時間の計測を開始する。次に、ステップＳ４１７では、ＣＰＵ９１１は、ＧＰＧＰＵ１０１から処理完了通知を入力すると、処理時間の計測を終了し、３個のスレッド３０１の処理時間を取得する。
【００２４】
以下、同様にして、並列処理するスレッド３０１の数を順に増やし、スレッド３０１の数毎の処理時間を取得する。
【００２５】
最後に、ステップＳ４１８では、ＣＰＵ９１１は、ＧＰＧＰＵ１０１に対して、Ｍ個の同一の浮動小数点演算のスレッド３０１の並列処理の開始を指示し、Ｍ個のスレッド３０１の処理時間の計測を開始する。ここで、Ｍは、試験を行う最大並列処理スレッド数である。最大並列処理スレッド数Ｍは、例えば図１１に示すように、１０００００又は２０００００である。次に、ステップＳ４１９では、ＣＰＵ９１１は、ＧＰＧＰＵ１０１から処理完了通知を入力すると、処理時間の計測を終了し、Ｍ個のスレッド３０１の処理時間を取得する。
【００２６】
図５は、コア１２１（図１）の単位でスレッドを処理する方式のＧＰＧＰＵ１０１のスレッド数毎の処理時間を示す図である。この方式の場合、ＧＰＧＰＵ１０１は、上記のように、５１２個のコア１２１を有するので、最大５１２個のスレッド３０１を同時に並列処理可能である。したがって、１個〜５１２個のスレッド３０１の処理時間はほぼ同じであり、５１３個〜１０２４個のスレッド３０１の処理時間はほぼ同じであり、１０２５個〜１５３６個のスレッド３０１の処理時間はほぼ同じであり、１５３７個〜２０４８個のスレッド３０１の処理時間はほぼ同じである。
【００２７】
５１３個〜１０２４個のスレッド３０１の処理時間は、１個〜５１２個のスレッド３０１の処理時間の約２倍である。また、１５３７個〜２０４８個のスレッド３０１の増加処理時間Ｔ２は、１０２５個〜１５３６個のスレッド３０１の増加処理時間Ｔ１の約２倍である。ここで、１５３７個〜２０４８個のスレッド３０１の増加処理時間Ｔ２は、１５３７個〜２０４８個のスレッド３０１の処理時間から、５１３個〜１０２４個のスレッド３０１の処理時間Ｅを減算した時間である。また、１０２５個〜１５３６個のスレッド３０１の増加処理時間Ｔ１は、１０２５個〜１５３６個のスレッド３０１の処理時間から、５１３個〜１０２４個のスレッド３０１の処理時間Ｅを減算した時間である。
【００２８】
以上のように、スレッドの数が増加していくと、スレッド間隔ｗの周期で、処理時間が大きく変動する。図３（Ａ）のように、不良コアを有しないＧＰＧＰＵ１０１の場合、スレッド間隔ｗは、全コア数である５１２になる。これに対し、図３（Ｂ）のように、２個の不良コアを有するＧＰＧＰＵ１０１の場合、スレッド間隔ｗは、正常コア数である５１０になる。したがって、処理時間がほぼ同じであるスレッド間隔ｗが全コア数と同じであれば、ＧＰＧＰＵ１０１内に不良コアが存在しないので、試験対象のＧＰＧＰＵ１０１は合格であると判定することができる。これに対し、処理時間がほぼ同じであるスレッド間隔ｗが全コア数より少ない場合には、ＧＰＧＰＵ１０１内に不良コアが存在するので、試験対象であるＧＰＧＰＵ１０１は不合格であると判定することができる。
【００２９】
図６は、スレッドグループ１３１（図１）の単位でスレッドを処理する方式のＧＰＧＰＵ１０１のスレッド数毎の処理時間を示す図である。この方式の場合、ＧＰＧＰＵ１０１は、上記のように、１２８個のスレッドグループ１３１を有するので、最大１２８個のスレッド３０１を同時に並列処理可能である。したがって、１個〜１２８個のスレッド３０１の処理時間はほぼ同じであり、１２９個〜２５６個のスレッド３０１の処理時間はほぼ同じであり、２５７個〜３８４個のスレッド３０１の処理時間はほぼ同じであり、３８５個〜５１２個のスレッド３０１の処理時間はほぼ同じであり、５１３個〜６４０個のスレッド３０１の処理時間はほぼ同じである。
【００３０】
１２９個〜２５６個のスレッド３０１の処理時間は、１個〜１２８個のスレッド３０１の処理時間の約２倍である。また、３８５個〜５１２個のスレッド３０１の増加処理時間Ｔ４は、２５７個〜３８４個のスレッド３０１の増加処理時間Ｔ３の約２倍である。ここで、３８５個〜５１２個のスレッド３０１の増加処理時間Ｔ４は、３８５個〜５１２個のスレッド３０１の処理時間から、１２９個〜２５６個のスレッド３０１の処理時間Ｅを減算した時間である。また、２５７個〜３８４個のスレッド３０１の増加処理時間Ｔ３は、２５７個〜３８４個のスレッド３０１の処理時間から、１２９個〜２５６個のスレッド３０１の処理時間Ｅを減算した時間である。
【００３１】
以上のように、スレッド３０１の数が増加していくと、スレッド間隔ｗの周期で、処理時間が大きく変動する。不良スレッドグループ（不良コア）を有しないＧＰＧＰＵ１０１の場合、スレッド間隔ｗは、全スレッドグループ数である１２８になる。これに対し、２個の不良スレッドグループを有するＧＰＧＰＵ１０１の場合、スレッド間隔ｗは、正常スレッドグループ数である１２６になる。したがって、処理時間がほぼ同じであるスレッド間隔ｗが全スレッドグループ数と同じであれば、ＧＰＧＰＵ１０１内に不良スレッドグループ（不良コア）が存在しないので、試験対象のＧＰＧＰＵ１０１は合格であると判定することができる。これに対し、処理時間がほぼ同じであるスレッド間隔ｗが全スレッドグループ数より少ない場合には、ＧＰＧＰＵ１０１内に不良スレッドグループ（不良コア）が存在するので、試験対象であるＧＰＧＰＵ１０１は不合格であると判定することができる。
【００３２】
まず、試験装置は、試験対象であるＧＰＧＰＵ１０１が複数のスレッド３０１を同時並列処理可能な最大の処理ユニット数を取得する。図５のように、コア単位でスレッド３０１を処理する方式の場合、上記の同時並列処理可能な最大の処理ユニット数は、ＧＰＧＰＵ１０１内の全コア１２１の数である。これに対し、図６のように、スレッドグループ単位でスレッド３０１を処理する方式の場合、上記の同時並列処理可能な最大の処理ユニット数は、ＧＰＧＰＵ１０１内の全スレッドグループ１３１の数である。また、図５及び図６に示すように、試験装置は、スレッド３０１の数を順に変えて試験対象であるＧＰＧＰＵ１０１に並列処理を行わせ、スレッド３０１の数毎の処理時間を取得する。そして、試験装置は、上記のように、スレッド３０１の数を変えていったときに処理時間の変動が閾値Ｐ以上になるまでのスレッドの数の変化（スレッド間隔ｗ）が同時並列処理可能な最大の処理ユニット数と一致するときには試験対象であるＧＰＧＰＵ１０１が正常であることを示す情報を出力し、一致しないときには試験対象であるＧＰＧＰＵ１０１が異常であることを示す情報を出力する。
【００３３】
ここで、閾値Ｐは、図１１に示す最低演算性能係数Ｐであり、例えば１．２又は１．３である。図５（又は図６）において、増加処理時間Ｔ２（又はＴ４）及び増加処理時間Ｔ１（又はＴ３）を比較し、Ｔ２／Ｔ１（又はＴ４／Ｔ３）が閾値Ｐ以上である場合には、スレッド間隔ｗの終了を意味し、Ｔ２／Ｔ１（又はＴ４／Ｔ３）が閾値Ｐ未満である場合には、スレッド間隔ｗが未だ終了していないことを意味する。
【００３４】
また、試験装置は、処理時間の変動が閾値Ｐ以上になる毎に、スレッド３０１の数の変化（スレッド間隔ｗ）が同時並列処理可能な最大の処理ユニット数と一致するか否かを判定し、すべてのスレッド間隔ｗが同時並列処理可能な最大の処理ユニット数と一致するときには試験対象であるＧＰＧＰＵ１０１が正常であることを示す情報を出力し、少なくとも１回でもスレッド間隔ｗが同時並列処理可能な最大の処理ユニット数と一致しないときには試験対象であるＧＰＧＰＵ１０１が異常であることを示す情報を出力する。複数のスレッド間隔ｗについて試験を行うことにより、１回のスレッド間隔ｗの試験に比べ、より厳しい条件での試験を行い、試験精度を高め、不良コアの検出率を向上させることができる。
【００３５】
図７は、図６に対応し、不良スレッドグループを有しないＧＰＧＰＵ１０１のスレッド数毎の処理時間の具体例を示す図である。まず、１個のスレッドの処理時間と２個のスレッドの処理時間とを比較し、２個のスレッドの処理時間を１個のスレッドの処理時間で割った値が最低演算性能係数Ｐ（図１１では例えば１．３）未満であるので、処理時間の変化がほとんどなく、スレッド間隔ｗの範囲内であると判断することができる。次に、同様に、２個のスレッドの処理時間と３個のスレッドの処理時間とを比較し、３個のスレッドの処理時間を２個のスレッドの処理時間で割った値が最低演算性能係数Ｐ未満であるので、処理時間の変化がほとんどなく、スレッド間隔ｗの範囲内であると判断することができる。同様に、１２８個のスレッドの処理時間までは、処理時間の変化がほとんどなく、スレッド間隔ｗの範囲内であると判断することができる。
【００３６】
次に、１２８個のスレッドの処理時間と１２９個のスレッドの処理時間とを比較し、１２９個のスレッドの処理時間を１２８個のスレッドの処理時間で割った値が最低演算性能係数Ｐ以上であるので、処理時間が急激に増加し、スレッド間隔ｗの範囲外であると判断することができる。これは、スレッド間隔ｗの終了を意味するので、スレッド間隔ｗは、１２８であると判断することができる。そして、このスレッド間隔ｗは、ＧＰＧＰＵ１０１内の全スレッドグループ１３１の数である１２８と同じであるので、ＧＰＧＰＵ１０１は正常であると判断することができる。
【００３７】
次に、１２９個のスレッドの処理時間と１３０個のスレッドの処理時間とを比較し、１３０個のスレッドの処理時間から１２８個のスレッドの処理時間を減算した値を、１２９個のスレッドの処理時間から１２８個のスレッドの処理時間を減算した値で割った値が最低演算性能係数Ｐ未満であるので、処理時間の変化がほとんどなく、スレッド間隔ｗの範囲内であると判断することができる。
【００３８】
この際、上記の１２８個のスレッドの処理時間は、図６の処理時間Ｅに対応する。また、上記の１３０個のスレッドの処理時間から１２８個のスレッドの処理時間を減算した値は、図６の増加処理時間Ｔ４に対応する。１２９個のスレッドの処理時間から１２８個のスレッドの処理時間を減算した値は、図６の増加処理時間Ｔ３に対応する。そして、上記では、Ｔ４／Ｔ３が最低演算性能係数Ｐ未満であるか否かを判定していることを意味する。
【００３９】
次に、同様に、１３０個のスレッドの処理時間と１３１個のスレッドの処理時間とを比較する。２５６個のスレッドの処理時間までは、処理時間の変化がほとんどなく、スレッド間隔ｗの範囲内であると判断することができる。
【００４０】
次に、２５６個のスレッドの処理時間と２５７個のスレッドの処理時間とを比較し、２５７個のスレッドの処理時間から１２８個のスレッドの処理時間を減算した値を、２５６個のスレッドの処理時間から１２８個のスレッドの処理時間を減算した値で割った値が最低演算性能係数Ｐ以上であるので、処理時間が急激に増加し、スレッド間隔ｗの範囲外であると判断することができる。これは、スレッド間隔ｗの終了を意味するので、スレッド間隔ｗは、２５６−１２８＝１２８であると判断することができる。そして、このスレッド間隔ｗは、ＧＰＧＰＵ１０１内の全スレッドグループ１３１の数である１２８と同じであるので、ＧＰＧＰＵ１０１は正常であると判断することができる。
【００４１】
次に、２５７個のスレッドの処理時間と２５８個のスレッドの処理時間とを比較し、２５８個のスレッドの処理時間から２５６個のスレッドの処理時間を減算した値を、２５７個のスレッドの処理時間から２５６個のスレッドの処理時間を減算した値で割った値が最低演算性能係数Ｐ未満であるので、処理時間の変化がほとんどなく、スレッド間隔ｗの範囲内であると判断することができる。以下、同様の処理を繰り返す。
【００４２】
図８は、図６に対応し、不良スレッドグループを有するＧＰＧＰＵ１０１のスレッド数毎の処理時間の具体例を示す図である。図７と同様の処理により、例えば、１２０個のスレッドの処理時間と１２１個のスレッドの処理時間との間で急激な処理時間の増加が検出され、２４０個のスレッドの処理時間と２４１個のスレッドの処理時間との間で急激な処理時間の増加が検出される。これにより、スレッド間隔ｗは、１２０−０＝１２０（及び２４０−１２０＝１２０）であると判断することができる。そして、このスレッド間隔ｗは、ＧＰＧＰＵ１０１内の全スレッドグループ１３１の数である１２８より８少ないので、ＧＰＧＰＵ１０１は８個の不良スレッドグループ１３１を有すると判断することができる。
【００４３】
図９は、本実施形態による試験システムの構成例を示す図である。試験装置９０１は、例えばサーバ又はパーソナルコンピュータ等のコンピュータであり、キーボード９０２及びディスプレイ装置９０３が接続されている。試験装置９０１は、ＣＰＵ９１１、メインメモリ９１２、記憶装置９１３、入力装置インタフェース９１４、出力装置インタフェース９１５、入出力インタフェーススロット９１６及びバス９１７を有する。ＣＰＵ９１１は、バス９１７を介して、記憶装置９１３、入力装置インタフェース９１４、出力装置インタフェース９１５及び入出力インタフェーススロット９１６に接続される。メインメモリ９１２は、ＣＰＵ９１１に接続される。キーボード９０２は、入力装置インタフェース９１４に接続される。ディスプレイ装置９０３は、出力装置インタフェース９１５に接続される。記憶装置９１３は、例えばハードディスク駆動装置である。入出力インタフェーススロット９１６は、例えばPCI-Express（Peripheral Component Interconnect-Express）の入出力シリアルインタフェースである。ＣＰＵ９１１は、種々の演算又は処理を行うプロセッサである。試験対象であるＧＰＧＰＵ１０１を入出力インタフェーススロット９１６に差し込むことにより、試験装置９０１は、ＧＰＧＰＵ１０１の試験を行うことができる。ＧＰＧＰＵ１０１は、図１と同様に、メモリ１１２を有する。ＣＰＵ９１１は、メインメモリ９１２内のプログラムを実行することにより、ＧＰＧＰＵ１０１の試験を行う。キーボード９０２は、試験を行うためのプログラムの起動等に使用される入力装置である。ディスプレイ装置９０３は、試験結果の表示等を行う出力装置である。
【００４４】
本実施形態は、コンピュータがプログラムを実行することによって実現することができる。また、本実施形態は、プログラムを記録したコンピュータ読み取り可能な記録媒体及びプログラム等のコンピュータプログラムプロダクトにも適用することができる。記録媒体は、例えば、フレキシブルディスク、ハードディスク、光ディスク、光磁気ディスク、ＣＤ−ＲＯＭ（Compact Disc Read Only Memory）、磁気テープ、不揮発性のメモリカード、ＲＯＭ（Read Only Memory）等である。
【００４５】
図１０は、図９の試験システムの一部の詳細例を示す図である。メインメモリ９１２は、処理時間格納領域１００５及び演算結果格納領域１００６を有し、試験プログラム１００１、ＧＰＧＰＵ１０１の関連ライブラリ１００２、オペレーティングシステム（ＯＳ：Operating System）１００３及びデバイスドライバ１００４を記憶する。メインメモリ９１２は、さらに、ＧＰＧＰＵモデル名Ｔ、ＧＰＧＰＵ内全コア数Ｃ、ＧＰＧＰＵ内ＳＭ数Ｓ、ＳＭ内スレッドグループ数Ｇ、最大並列処理スレッド数Ｍ及び最低演算性能係数Ｐを記憶する。試験装置９０１は、ＧＰＧＰＵ１０１のベンダから提供されるアプリケーションプログラミングインターフェース（ＡＰＩ：Application Programming Interface）を用いて、ＧＰＧＰＵ１０１に対して、試験プログラム１００１により入出力を行う。記憶装置９１３は、動作定義ファイル１０１１を記憶する。動作定義ファイル１０１１の詳細は、後に図１１を参照しながら説明する。ＧＰＧＰＵ１０１は、図１と同様に、複数のコア１２１及びメモリ１１２を有する。メモリ１１２は、演算結果格納領域１０２１を有する。コア１２１の演算結果は、演算結果格納領域１０２１に書き込まれる。
【００４６】
図１１は、図１０の記憶装置９１３内の動作定義ファイル１０１１の内容例を示す図である。動作定義ファイル１０１１は、ＧＰＧＰＵモデル名１０１１毎に、ＳＭ内スレッドグループ数Ｇ、最大並列処理スレッド数Ｍ及び最低演算性能係数Ｐを記憶する。ＧＰＧＰＵモデル名Ｔは、試験可能なＧＰＧＰＵ１０１のモデル名である。ＳＭ内スレッドグループ数Ｇは、各ＳＭ１１１（図１）内のスレッドグループ１３１の数であり、図１及び図６の場合には８であり、図１及び図５の場合にはスレッドグループ１３１がないので０である。最大並列処理スレッド数Ｍは、図４の最大並列処理スレッド数Ｍに対応し、スレッド数が０からＭまでの処理時間が計測される。最低演算性能係数Ｐは、上記のように、スレッド数毎の処理時間を比較し、最低演算性能係数Ｐ以上の処理時間の変動があれば、スレッド間隔ｗの終了を意味する。
【００４７】
図１２は、図９の試験装置９０１の試験方法を示すフローチャートである。試験装置９０１は、ＣＰＵ９１１がメインメモリ９１２内の試験プログラム１００１を実行することにより、図１２の処理を行う。
【００４８】
まず、ステップＳ１２０１では、試験装置９０１は、ＧＰＧＰＵ１０１からデバイス情報を取得する。デバイス情報は、図１０のＧＰＧＰＵモデル名Ｔ、ＧＰＧＰＵ全コア数Ｃ及びＧＰＧＰＵ内ＳＭ数Ｓを含む。この処理の詳細は、後に図１３を参照しながら説明する。
【００４９】
次に、ステップＳ１２０２では、試験装置９０１は、上記のステップＳ１２０１の処理が異常終了した場合には異常終了し、上記のステップＳ１２０１の処理が正常終了した場合には、ステップＳ１２０３に進む。
【００５０】
次に、ステップＳ１２０３では、試験装置９０１は、記憶装置９１３内の動作定義ファイル１０１１から動作定義情報を取得する。動作定義情報は、図１０及び図１１に示すように、ＳＭ内スレッドグループ数Ｇ、最大並列処理スレッド数Ｍ及び最低演算性能係数Ｐを含む。この処理の詳細は、後に図１４を参照しながら説明する。
【００５１】
次に、ステップＳ１２０４では、試験装置９０１は、上記のステップＳ１２０３の処理が異常終了した場合には異常終了し、上記のステップＳ１２０３の処理が正常終了した場合には、ステップＳ１２０５に進む。
【００５２】
次に、ステップＳ１２０５では、試験装置９０１は、メインメモリ９１２内の処理時間格納領域１００５及び演算結果格納領域１００６を初期化する。この処理の詳細は、後に図１５を参照しながら説明する。
【００５３】
次に、ステップＳ１２０６では、試験装置９０１は、上記のステップＳ１２０５の処理が異常終了した場合には異常終了し、上記のステップＳ１２０５の処理が正常終了した場合には、ステップＳ１２０７に進む。
【００５４】
次に、ステップＳ１２０７では、試験装置９０１は、スレッド３０１の数を変えてＧＰＧＰＵ１０１に並列処理の実行を指示し、スレッド３０１の数毎の処理時間を取得する。この処理の詳細は、後に図１６を参照しながら説明する。
【００５５】
次に、ステップＳ１２０８では、試験装置９０１は、上記のステップＳ１２０７の処理が異常終了した場合には異常終了し、上記のステップＳ１２０７の処理が正常終了した場合には、ステップＳ１２０９に進む。
【００５６】
次に、ステップＳ１２０９では、試験装置９０１は、スレッド３０１の数毎の処理時間の変動を分析し、ＧＰＧＰＵ１０１内の不良コアの有無を確認する。この処理の詳細は、後に図１７を参照しながら説明する。その後、試験装置９０１は、図１２の処理を正常終了する。
【００５７】
図１３は、図１２のステップＳ１２０１の処理の詳細を示すフローチャートである。まず、ステップＳ１３０１では、試験装置９０１は、メインメモリ９１２において、ＧＰＧＰＵモデル名Ｔ、ＧＰＧＰＵ内全コア数Ｃ及びＧＰＧＰＵ内ＳＭ数Ｓを格納するための領域を確保する。
【００５８】
次に、ステップＳ１３０２では、試験装置９０１は、上記のステップＳ１３０１の処理で領域確保に失敗したか否かを判断する。領域確保に成功した場合にはステップＳ１３０３に進み、領域確保に失敗した場合にはステップＳ１３０９に進む。
【００５９】
次に、ステップＳ１３０３では、試験装置９０１は、試験対象であるＧＰＧＰＵ１０１に対してデバイス情報取得命令を発行し、ＧＰＧＰＵ１０１からデバイス情報を取得する。このデバイス情報は、上記のＧＰＧＰＵモデル名Ｔ、ＧＰＧＰＵ内全コア数Ｃ及びＧＰＧＰＵ内ＳＭ数Ｓを含む。
【００６０】
次に、ステップＳ１３０４では、試験装置９０１は、ＧＰＧＰＵ１０１から正常なデバイス情報を入力したときにはステップＳ１３０５に進み、ＧＰＧＰＵ１０１からエラー情報を入力したときにはステップＳ１３０９に進む。
【００６１】
次に、ステップＳ１３０５では、試験装置９０１は、上記の入力したデバイス情報内のＧＰＧＰＵモデル名Ｔが、記憶装置９１３内の動作定義ファイル１０１１（図１１）に存在する場合には、試験可能なＧＰＧＰＵ１０１であると判断し、ステップＳ１３０６に進み、上記の入力したデバイス情報内のＧＰＧＰＵモデル名Ｔが、記憶装置９１３内の動作定義ファイル１０１１（図１１）に存在しない場合には、試験不可のＧＰＧＰＵ１０１であると判断し、ステップＳ１３０９に進む。
【００６２】
次に、ステップＳ１３０６では、試験装置９０１は、上記の入力したデバイス情報内のＧＰＧＰＵモデル名Ｔをメインメモリ９１２に格納する。
【００６３】
次に、ステップＳ１３０７では、試験装置９０１は、上記の入力したデバイス情報内のＧＰＧＰＵ内全コア数Ｃをメインメモリ９１２に格納する。例えば、図１の場合、ＧＰＧＰＵ１０１が１６個のＳＭ１１１を有し、各ＳＭ１１１が３２個のコア１２１を有するので、ＧＰＧＰＵ内全コア数Ｃは、１６×３２＝５１２である。
【００６４】
次に、ステップＳ１３０８では、試験装置９０１は、上記の入力したデバイス情報内のＧＰＧＰＵ内ＳＭ数Ｓをメインメモリ９１２に格納する。例えば、図１の場合、ＧＰＧＰＵ１０１が１６個のＳＭ１１１を有するので、ＧＰＧＰＵ内ＳＭ数Ｓは１６である。その後、試験装置９０１は、図１３の処理を終了し、図１２のステップＳ１２０２を介してステップＳ１２０３に進む。
【００６５】
ステップＳ１３０９では、試験装置９０１は、上記のステップＳ１３０２、Ｓ１３０４又はＳ１３０５の異常の内容をディスプレイ装置９０３に出力して表示させる。次に、ステップＳ１３１０では、試験装置９０１は、終了コードを異常値にする。その後、試験装置９０１は、図１３の処理を終了し、図１２のステップＳ１２０２を介して異常終了する。
【００６６】
図１４は、図１２のステップＳ１２０３の処理の詳細を示すフローチャートである。まず、ステップＳ１４０１では、試験装置９０１は、メインメモリ９１２において、ＳＭ内スレッドグループ数Ｇ、最大並列処理スレッド数Ｍ及び最低演算性能係数Ｐを格納するための領域を確保する。
【００６７】
次に、ステップＳ１４０２では、試験装置９０１は、上記のステップＳ１４０１の処理で領域確保に失敗したか否かを判断する。領域確保に成功した場合にはステップＳ１４０３に進み、領域確保に失敗した場合にはステップＳ１４０８に進む。
【００６８】
次に、ステップＳ１４０３では、試験装置９０１は、記憶装置９１３内の動作定義ファイル１０１１（図１１）をオープンする。
【００６９】
次に、ステップＳ１４０４では、試験装置９０１は、上記のステップＳ１４０３の処理でファイルオープンに成功した場合にはステップＳ１４０５に進み、ファイルオープンに失敗した場合にはステップＳ１４０８に進む。
【００７０】
次に、ステップＳ１４０５では、試験装置９０１は、図１１の動作定義ファイル１０１１を参照し、図１３のステップＳ１３０６で取得したＧＰＧＰＵモデル名Ｔに対応するＳＭ内スレッドグループ数Ｇを読み出し、その読み出したＳＭ内スレッドグループ数Ｇをメインメモリ９１２に格納する。
【００７１】
次に、ステップＳ１４０６では、試験装置９０１は、図１１の動作定義ファイル１０１１を参照し、図１３のステップＳ１３０６で取得したＧＰＧＰＵモデル名Ｔに対応する最大並列処理スレッド数Ｍを読み出し、その読み出した最大並列処理スレッド数Ｍをメインメモリ９１２に格納する。
【００７２】
次に、ステップＳ１４０７では、試験装置９０１は、図１１の動作定義ファイル１０１１を参照し、図１３のステップＳ１３０６で取得したＧＰＧＰＵモデル名Ｔに対応する最低演算性能係数Ｐを読み出し、その読み出した最低演算性能係数Ｐをメインメモリ９１２に格納する。その後、試験装置９０１は、図１４の処理を終了し、図１２のステップＳ１２０４を介してステップＳ１２０５に進む。
【００７３】
ステップＳ１４０８では、試験装置９０１は、上記のステップＳ１４０２又はＳ１４０４の異常の内容をディスプレイ装置９０３に出力して表示させる。次に、ステップＳ１４０９では、試験装置９０１は、終了コードを異常値にする。その後、試験装置９０１は、図１４の処理を終了し、図１２のステップＳ１２０４を介して異常終了する。
【００７４】
図１５は、図１２のステップＳ１２０５の処理の詳細を示すフローチャートである。まず、ステップＳ１５０１では、試験装置９０１は、メインメモリ９１２において、スレッド数毎の処理時間を格納するための処理時間格納領域１００５を確保する。
【００７５】
次に、ステップＳ１５０２では、試験装置９０１は、上記のステップＳ１５０１の処理で領域確保に失敗したか否かを判断する。領域確保に成功した場合にはステップＳ１５０３に進み、領域確保に失敗した場合にはステップＳ１５０７に進む。
【００７６】
次に、ステップＳ１５０３では、試験装置９０１は、メインメモリ９１２において、スレッド数毎のＧＰＧＰＵ１０１の演算結果を格納するための演算結果格納領域１００６を確保する。
【００７７】
次に、ステップＳ１５０４では、試験装置９０１は、上記のステップＳ１５０３の処理で領域確保に失敗したか否かを判断する。領域確保に成功した場合にはステップＳ１５０５に進み、領域確保に失敗した場合にはステップＳ１５０７に進む。
【００７８】
次に、ステップＳ１５０５では、試験装置９０１は、試験対象のＧＰＧＰＵ１０１に対して、ＧＰＧＰＵ１０１のメモリ１１２内の演算結果格納領域１０２１のためのメモリ領域確保命令を発行し、図１４のステップＳ１４０６で取得した最大並列処理スレッド数Ｍ分の演算結果を格納するための演算結果格納領域１０２１を確保させる。
【００７９】
次に、ステップＳ１５０６では、試験装置９０１は、上記のステップＳ１５０５の処理が失敗したことを示す情報をＧＰＧＰＵ１０１から入力した場合には、ステップＳ１５０７に進み、上記のステップＳ１５０５の処理が成功したことを示す情報をＧＰＧＰＵ１０１から入力した場合には、図１５の処理を終了し、図１２のステップＳ１２０６を介してステップＳ１２０７に進む。
【００８０】
ステップＳ１５０７では、試験装置９０１は、上記のステップＳ１５０２、Ｓ１５０４又はＳ１５０６の異常の内容をディスプレイ装置９０３に出力して表示させる。次に、ステップＳ１５０８では、試験装置９０１は、終了コードを異常値にする。その後、試験装置９０１は、図１５の処理を終了し、図１２のステップＳ１２０６を介して異常終了する。
【００８１】
図１６は、図１２のステップＳ１２０７の処理の詳細を示すフローチャートである。まず、ステップＳ１６０１では、試験装置９０１は、変数であるスレッド数Ｎを１に設定する。
【００８２】
次に、ステップＳ１６０２では、試験装置９０１は、ＣＰＵ９１１により、ＧＰＧＰＵ１０１の処理時間の計測を開始する。
【００８３】
次に、ステップＳ１６０３では、試験装置９０１は、試験対象であるＧＰＧＰＵ１０１に対して、スレッド数Ｎのスレッド実行命令を発行し、スレッド数Ｎのスレッドの並列処理を開始させる。ＧＰＧＰＵ１０１は、スレッド数Ｎのスレッドの並列処理を開始し、処理が終了すると、スレッドの演算結果をメモリ１１２内の演算結果格納領域１０２１に書き込む。
【００８４】
次に、ステップＳ１６０４では、試験装置９０１は、試験対象であるＧＰＧＰＵ１０１に対して、スレッド状況確認命令を発行し、ＧＰＧＰＵ１０１の並列処理情報を取得する。この並列処理情報は、スレッドの処理が終了したか否かの情報を含む。
【００８５】
次に、ステップＳ１６０５では、試験装置９０１は、上記のステップＳ１６０４の並列処理情報を基に、スレッド数Ｎのすべてのスレッドの処理が終了したか否かを判断する。終了している場合には、ステップＳ１６０６に進み、終了していない場合には、ステップＳ１６０４に戻り、上記の処理を繰り返す。
【００８６】
ステップＳ１６０６では、試験装置（処理時間取得部）９０１は、ＣＰＵ９１１により、ＧＰＧＰＵ１０１の処理時間の計測を終了し、ステップＳ１６０２の計測開始からステップＳ１６０６の計測終了までの時間を、ＧＰＧＰＵ１０１のスレッド数Ｎの処理時間として、処理時間Ａ［Ｎ−１］に設定する。処理時間Ａ［Ｎ−１］は、図１０のメインメモリ９１２内の処理時間格納領域１００５内の配列変数である。例えば、処理時間Ａ［０］は、１個のスレッドの処理時間を示し、処理時間Ａ［１］は、２個のスレッドの処理時間を示す。
【００８７】
次に、ステップＳ１６０７では、試験装置９０１は、試験対象であるＧＰＧＰＵ１０１に対して、ＧＰＧＰＵ１０１のメモリ１１２内の演算結果格納領域１０２１に格納されているＧＰＧＰＵ１０１の演算結果を、試験装置９０１のメインメモリ９１２内の演算結果格納領域１００６にコピーするためのメモリ領域コピー命令を発行し、スレッド数Ｎのすべてのスレッドの演算結果をＧＰＧＰＵ１０１の演算結果格納領域１０２１から試験装置９０１の演算結果格納領域１００６にコピーする。
【００８８】
次に、ステップＳ１６０８では、試験装置９０１は、演算結果格納領域１００６内のすべてのスレッドの演算結果が期待値と一致しているか否かを判断する。すべてのスレッドの演算結果が期待値と一致している場合には、演算結果が正しいことを意味するので、ステップＳ１６０９に進み、少なくとも一部のスレッドの演算結果が期待値と一致していない場合には、演算結果が誤りであることを意味するので、ステップＳ１６１１に進む。
【００８９】
次に、ステップＳ１６０９では、試験装置９０１は、スレッド数Ｎが最大並列処理スレッド数Ｍと一致するか否かを判断する。スレッド数Ｎは、上記のステップＳ１６０１で１に初期設定されている。最大並列処理スレッド数Ｍは、上記の図１４のステップＳ１４０６で設定された最大並列処理スレッド数Ｍ（図１１）である。両者が一致しない場合には、未だすべてのスレッド数の処理が終了していないので、ステップＳ１６１０に進み、両者が一致している場合には、すべてのスレッド数の処理が終了していることを意味するので、図１６の処理を終了し、図１２のステップＳ１２０８を介してステップＳ１２０９に進む。
【００９０】
ステップＳ１６１０では、試験装置９０１は、スレッド数Ｎを１増加し、上記のステップＳ１６０２に戻り、増加したスレッド数Ｎの処理を繰り返す。最大並列処理スレッド数Ｍまでの処理が終了すると、処理を終了する。
【００９１】
ステップＳ１６１１では、試験装置９０１は、上記のステップＳ１６０８の異常の内容をディスプレイ装置９０３に出力して表示させる。次に、ステップＳ１６１２では、試験装置９０１は、終了コードを異常値にする。その後、試験装置９０１は、図１６の処理を終了し、図１２のステップＳ１２０８を介して異常終了する。
【００９２】
図１７は、図１２のステップＳ１２０９の処理の詳細を示すフローチャートである。まず、ステップＳ１７０１では、試験装置９０１は、変数であるベース処理時間Ｅ、スレッド数ｘ及び処理時間変動回数ｚを０で初期化する。ベース処理時間Ｅは、図５及び図６の処理時間Ｅに対応する。スレッド数ｘは、図１６のスレッド数Ｎ−１に対応し、スレッド数ｘ＝０はスレッド数Ｎ＝１を意味する。処理時間変動回数ｚは、処理時間が急激に増加する回数であり、図５又は図６のスレッド間隔ｗの数を意味する。
【００９３】
次に、ステップＳ１７０２では、試験装置９０１は、ＳＭ内スレッドグループ数Ｇが０か否かを判断する。ＳＭ内スレッドグループ数Ｇは、上記の図１４のステップＳ１４０５で設定されたＳＭ内スレッドグループ数Ｇ（図１１）である。ＳＭ内スレッドグループ数Ｇが０である場合には、図５に示すようにコア単位でスレッドを処理する方式を意味するので、ステップＳ１７０３に進み、ＳＭ内スレッドグループ数Ｇが１以上である場合には、図６に示すようにスレッドグループ単位でスレッドを処理する方式を意味するので、ステップＳ１７０４に進む。
【００９４】
ステップＳ１７０３では、試験装置（処理ユニット数取得部）９０１は、図５に示すスレッド間隔ｗとして、ＧＰＧＰＵ内全コア数Ｃを設定する。スレッド間隔ｗは、複数のスレッドを同時並列処理可能な最大の処理ユニット数に対応する。ＧＰＧＰＵ内全コア数Ｃは、上記の図１３のステップＳ１３０７で設定された数値である。例えば図１及び図５の場合、ＧＰＧＰＵ１０１が１６個のＳＭ１１１を有し、各ＳＭ１１１が３２個のコア１２１を有するので、ＧＰＧＰＵ内全コア数Ｃは１６×３２＝５１２である。その結果、スレッド間隔ｗは、５１２になる。その後、ステップＳ１７０５に進む。
【００９５】
ステップＳ１７０４では、試験装置（処理ユニット数取得部）９０１は、図６に示すスレッド間隔ｗとして、ＳＭ内スレッドグループ数Ｇ及びＧＰＧＰＵ内ＳＭ数Ｓの積を設定する。スレッド間隔ｗは、複数のスレッドを同時並列処理可能な最大の処理ユニット数に対応する。
【００９６】
ＳＭ内スレッドグループ数Ｇは、上記の図１４のステップＳ１４０５で設定されたＳＭ内スレッドグループ数Ｇ（図１１）である。例えば図１及び図６の場合、各ＳＭ１１１が８個のスレッドグループ１３１を有するので、ＳＭ内スレッドグループ数Ｇは８である。
【００９７】
また、ＧＰＧＰＵ内ＳＭ数Ｓは、上記の図１３のステップＳ１３０８で設定された数値である。例えば図１及び図６の場合、ＧＰＧＰＵ１０１が１６個のＳＭ１１１を有するので、ＧＰＧＰＵ内ＳＭ数Ｓは１６である。
【００９８】
その結果、スレッド間隔ｗは、Ｇ×Ｓ＝８×１６＝１２８である。その後、ステップＳ１７０５に進む。ステップＳ１７０５以降の処理は、図５のコア単位でスレッドを処理する方式と図６のスレッドグループ単位でスレッドを処理する方式との共通の処理であり、両方の方式に対応可能である。
【００９９】
ステップＳ１７０５では、試験装置９０１は、処理時間変動回数期待値ｙとして、最大並列処理スレッド数Ｍをスレッド間隔ｗで除算した商を設定する。最大並列処理スレッド数Ｍは、上記の図１４のステップＳ１４０６で設定された最大並列処理スレッド数Ｍ（図１１）である。スレッド間隔ｗは、上記のステップＳ１７０３又はＳ１７０４で設定された値である。処理時間変動回数期待値ｙは、スレッド数を最大並列処理スレッド数Ｍまで変化させたときに処理時間が急激に増加する回数の期待値であり、図５又は図６のスレッド間隔ｗの数を意味する。
【０１００】
次に、ステップＳ１７０６では、試験装置９０１は、スレッド数ｘが最大並列処理スレッド数Ｍと一致するか否かを判断する。スレッド数ｘが最大並列処理スレッド数Ｍより小さい場合には、すべてのスレッド数ｘについての処理が終了していないので、ステップＳ１７０９に進み、スレッド数ｘが最大並列処理スレッド数Ｍと一致している場合には、すべてのスレッド数ｘについての処理が終了しているので、ステップＳ１７０７に進む。
【０１０１】
ステップＳ１７０９では、試験装置９０１は、演算時間Ａ［ｘ＋１］からベース処理時間Ｅを減算した値（Ａ［ｘ＋１］−Ｅ）を演算し、演算時間Ａ［ｘ］からベース処理時間Ｅを減算した値（Ａ［ｘ］−Ｅ）を演算し、値（Ａ［ｘ＋１］−Ｅ）を値（Ａ［ｘ］−Ｅ）で除算した商（Ａ［ｘ＋１］−Ｅ）／（Ａ［ｘ］−Ｅ）を演算する。
【０１０２】
ここで、ベース処理時間Ｅは、上記のステップＳ１７０１で初期値が０に設定されている。処理時間Ａ［ｘ＋１］及びＡ［ｘ］は、上記の図１６のステップＳ１６０６で計測された処理時間である。処理時間Ａ［ｘ］はスレッド数ｘの処理時間であり、処理時間Ａ［ｘ＋１］はスレッド数（ｘ＋１）の処理時間である。
【０１０３】
そして、試験装置９０１は、商（Ａ［ｘ＋１］−Ｅ）／（Ａ［ｘ］−Ｅ）が最低演算性能係数Ｐ以上であるか否かを判断する。最低演算性能係数Ｐ未満であればステップＳ１７１３に進み、最低演算性能係数Ｐ以上であればステップＳ１７１０に進む。
【０１０４】
例えば、最初、スレッドｘが０であり、例えば図５及び図６の場合、１個のスレッドの処理時間Ａ［０］と２個のスレッドの処理時間Ａ［１］はほぼ同じであるので、上記の商（Ａ［ｘ＋１］−Ｅ）／（Ａ［ｘ］−Ｅ）は、ほぼ「１」になり、最低演算性能係数Ｐ未満になる。その場合、ステップＳ１７０９からステップＳ１７１３に進む。
【０１０５】
ステップＳ１７１３では、試験装置９０１は、スレッド数ｘを１増加させる。例えば、スレッド数ｘは０から１に増加する。その後、ステップＳ１７０６の処理に戻り、同様な処理を繰り返す。すなわち、ステップＳ１７０６からステップＳ１７０９に進む。スレッド数ｘが１の時、例えば図５及び図６の場合、２個のスレッドの処理時間Ａ［１］と３個のスレッドの処理時間Ａ［２］もほぼ同じであるので、上記の商（Ａ［ｘ＋１］−Ｅ）／（Ａ［ｘ］−Ｅ）は、ほぼ「１」になり、最低演算性能係数Ｐ未満になり、ステップＳ１７０９からステップＳ１７１３に進む。同様にして、図５の場合にはスレッド数ｘ＝５１０までは商（Ａ［ｘ＋１］−Ｅ）／（Ａ［ｘ］−Ｅ）が最低演算性能係数Ｐ未満になり、図６の場合にはスレッド数ｘ＝１２６までは商（Ａ［ｘ＋１］−Ｅ）／（Ａ［ｘ］−Ｅ）が最低演算性能係数Ｐ未満になり、同様の処理を繰り返す。
【０１０６】
図５の場合、スレッド数ｘ＝５１１になると、５１３個のスレッドの処理時間Ａ［５１２］が５１２個のスレッドの処理時間Ａ［５１１］の約２倍になるので、上記の商（Ａ［ｘ＋１］−Ｅ）／（Ａ［ｘ］−Ｅ）は、約「２」になり、最低演算性能係数Ｐ以上になる。その結果、ステップＳ１７０９からステップＳ１７１０に進む。
【０１０７】
これに対し、図６の場合、スレッド数ｘ＝１２７になると、１２９個のスレッドの処理時間Ａ［１２８］が１２８個のスレッドの処理時間Ａ［１２７］の約２倍になるので、上記の商（Ａ［ｘ＋１］−Ｅ）／（Ａ［ｘ］−Ｅ）は、約「２」になり、最低演算性能係数Ｐ以上になる。その結果、ステップＳ１７０９からステップＳ１７１０に進む。
【０１０８】
ステップＳ１７１０では、試験装置９０１は、ベース処理時間Ｅとして処理時間Ａ［ｘ］を設定する。例えば、上記のように、図５の場合、スレッド数ｘ＝５１１であるので、５１２個のスレッドの処理時間Ａ［５１１］がベース処理時間Ｅとして設定される。これに対して、図６の場合、スレッド数ｘ＝１２７であるので、１２８個のスレッドの処理時間Ａ［１２７］がベース処理時間Ｅとして設定される。この設定された新たなベース処理時間Ｅが、次回のステップＳ１７０９の演算で用いられる。
【０１０９】
次に、ステップＳ１７１１では、試験装置９０１は、スレッド数（ｘ＋１）がスレッド間隔ｗで割り切れるか否かを判断し、割り切れる場合にはステップＳ１７１２に進み、割り切れない場合にはステップＳ１７１４に進む。すなわち、試験装置９０１は、スレッド数（ｘ＋１）がスレッド間隔ｗの整数倍の値である場合には、ステップＳ１７１２に進み、整数倍の値でない場合には、ステップＳ１７１４に進む。
【０１１０】
図５において、ＧＰＧＰＵ１０１内に不良コアが存在しない場合、上記のように、スレッド数ｘ＝５１１であるので、スレッド数（ｘ＋１）は５１２であり、ステップＳ１７０３で設定されたように、スレッド間隔ｗ＝５１２である。この場合、スレッド数（ｘ＋１）＝５１２はスレッド間隔ｗ＝５１２で割り切れるので、不良コアが検出されず、ステップＳ１７１１からステップＳ１７１２に進む。
【０１１１】
これに対し、ＧＰＧＰＵ１０１内に不良コアが存在する場合、スレッド数ｘは５１１より小さくなる。例えば、ＧＰＧＰＵ１０１が１個の不良コアを有する場合には、スレッド数ｘは５１０になり、ＧＰＧＰＵ１０１が２個の不良コアを有する場合には、スレッド数ｘは５０９になる。その場合、スレッド数（ｘ＋１）は、スレッド間隔ｗ（＝５１２）で割り切れないので、試験対象のＧＰＧＰＵ１０１が不良コアを有することが判明し、ステップＳ１７１４へ進む。
【０１１２】
また、図６において、ＧＰＧＰＵ１０１内に不良コアが存在しない場合、上記のように、スレッド数ｘ＝１２７であるので、スレッド数（ｘ＋１）は１２８であり、ステップＳ１７０４で設定されたように、スレッド間隔ｗ＝１２８である。この場合、スレッド数（ｘ＋１）＝１２８はスレッド間隔ｗ＝１２８で割り切れるので、不良コアが検出されず、ステップＳ１７１１からステップＳ１７１２に進む。
【０１１３】
これに対し、ＧＰＧＰＵ１０１内に不良スレッドグループ（不良コア）が存在する場合、スレッド数ｘは１２７より小さくなる。例えば、ＧＰＧＰＵ１０１が１個の不良スレッドグループを有する場合には、スレッド数ｘは１２６になり、ＧＰＧＰＵ１０１が２個の不良スレッドグループを有する場合には、スレッド数ｘは１２５になる。その場合、スレッド数（ｘ＋１）は、スレッド間隔ｗ（＝１２８）で割り切れないので、試験対象のＧＰＧＰＵ１０１が不良スレッドグループ（不良コア）を有することが判明し、ステップＳ１７１４へ進む。
【０１１４】
ステップＳ１７１２では、試験装置９０１は、処理時間変動回数ｚを１増加させる。例えば、処理時間変動回数ｚは０から１に増加する。処理時間変動回数ｚは、スレッド数を最大並列処理スレッド数Ｍまで変化させたときに処理時間が急激に増加する回数がカウントされており、図５又は図６のスレッド間隔ｗの回数に相当する。その後、ステップＳ１７１３の処理に戻り、同様な処理を繰り返す。その後、ステップＳ１７０９では、図５の場合、スレッド数ｘが５１２であるので、処理時間Ａ［ｘ］が５１３個のスレッドの処理時間Ａ［５１２］であり、処理時間Ａ［ｘ＋１］が５１４個のスレッドの処理時間Ａ［５１３］であり、ベース処理時間Ｅが５１２個のスレッドの処理時間Ａ［５１１］である。以下、同様の処理を繰り返す。
【０１１５】
ステップＳ１７０６において、スレッド数ｘが最大並列処理スレッド数Ｍと一致する場合には、すべてのスレッド数の処理が終了していることを意味するので、ステップＳ１７０７に進む。
【０１１６】
ステップＳ１７０７では、試験装置９０１は、処理時間変動回数ｚが処理時間変動回数期待値ｙと一致するか否かを判断する。処理時間変動回数期待値ｙは、上記のステップＳ１７０５で設定された値である。両者が一致する場合には、不良コアが存在しないことが判明するので、ステップＳ１７０８に進み、両者が一致しない場合には、不良コアが存在するので、ステップＳ１７１４に進む。
【０１１７】
ステップＳ１７０８では、試験装置（出力部）９０１は、ＧＰＧＰＵ１０１内のすべてのコアが正常であることを示す情報を、ディスプレイ装置９０３に出力することにより表示し、記憶装置９１３に出力することにより記録する。その後、図１７の処理及び図１２の処理を終了する。
【０１１８】
ステップＳ１７１４では、試験装置（出力部）９０１は、ＧＰＧＰＵ１０１内に不良コアが存在することを示す情報を、ディスプレイ装置９０３に出力することにより表示し、記憶装置９１３に出力することにより記録する。その後、図１７の処理及び図１２の処理を終了する。
【０１１９】
以上により、ＧＰＧＰＵ１０１の試験の結果がディスプレイ装置９０３及び記憶装置９１３に出力される。本実施形態では、図１６のステップＳ１６０８で、ＧＰＧＰＵ１０１がスレッドを処理した演算結果とその演算結果の期待値とを比較し、両者が一致しないときには、図１６のステップＳ１６１１で、試験対象であるＧＰＧＰＵ１０１が異常であることを示す情報を出力する。これに対し、上記の両者が一致し、かつ、図１７のステップＳ１７１１で、スレッドの数の変化が同時並列処理可能な最大の処理ユニット数と一致するときには、図１７のステップＳ１７０８で、試験対象であるＧＰＧＰＵ１０１が正常であることを示す情報を出力する。演算結果の試験と処理時間の試験との両方を行うことにより、より厳しい条件での試験を行い、不良コアの検出率を向上させることができる。
【０１２０】
浮動小数点演算の効率を最大限に高め、ＧＰＧＰＵ１０１の最大性能を引き出し、ＦＬＯＰＳ（Floating-point number Operations Per Second）計測を行い、所定範囲内であるか否かを判定する試験が考えられる。しかし、この試験は、試験プログラムの仕組みが複雑になり、試験プログラムの実行時間が、例えば数分〜数十分と長くなってしまう。また、製品評価段階で使用する試験プログラムは、ＧＰＧＰＵ１０１のモデル毎の特性（プロセッサ毎の命令列最適化仕様）の差によって、ＦＬＯＰＳ計測のための浮動小数点演算命令列のチューニングが必要となり、メンテナンスコストが必要である。
【０１２１】
これに対して、本実施形態によれば、最大並列処理スレッド数Ｍが１０００００の場合には、数秒の短時間でＧＰＧＰＵ１０１を適切に試験することができる。また、本実施形態は、ＧＰＧＰＵ１０１のモデル毎の特性を考慮する必要は無く、量産及び／又は保守向け試験プログラムに適用した場合、ＧＰＧＰＵ１０１のモデル毎のメンテナンスコストを抑制することができる。
【０１２２】
なお、本実施形態では、試験対象は、ＧＰＧＰＵ１０１の場合を例に説明したが、ＧＰＧＰＵに限定されず、ＧＰＧＰＵ以外の種々の処理装置に適用することができる。
【０１２３】
上記実施形態は、何れも本発明を実施するにあたっての具体化の例を示したものに過ぎず、これらによって本発明の技術的範囲が限定的に解釈されてはならないものである。すなわち、本発明はその技術思想、又はその主要な特徴から逸脱することなく、様々な形で実施することができる。
【０１２４】
以上の実施形態に関し、さらに以下の付記を開示する。
【０１２５】
（付記１）
メモリに格納されたプログラムをプロセッサが実行することにより処理装置の試験を行う試験方法であって、
試験対象である処理装置が複数のスレッドを同時並列処理可能な最大の処理ユニット数を取得し、
スレッドの数を指定して試験対象である処理装置に並列処理を行わせ、前記スレッドの数に対応する処理時間を取得し、
前記処理時間が閾値以上になる前記スレッドの数が前記同時並列処理可能な最大の処理ユニット数と一致するときには前記試験対象である処理装置が正常であることを示す情報を出力し、一致しないときには前記試験対象である処理装置が異常であることを示す情報を出力する
ことを特徴とする試験方法。
（付記２）
前記処理時間が前記閾値以上になるときに、前記スレッドの数が前記同時並列処理可能な最大の処理ユニット数と一致するか否かを判定し、前記スレッドの数が前記同時並列処理可能な最大の処理ユニット数と一致するときには前記試験対象である処理装置が正常であることを示す情報を出力し、少なくとも１回一致しないときには前記試験対象である処理装置が異常であることを示す情報を出力することを特徴とする付記１記載の試験方法。
（付記３）
前記同時並列処理可能な最大の処理ユニット数は、前記処理装置内の全コア数であることを特徴とする付記１又は２記載の試験方法。
（付記４）
前記同時並列処理可能な最大の処理ユニット数は、前記処理装置内の全スレッドグループ数であり、
各スレッドグループは、複数のコアを有し、
各スレッドグループ単位で１個のスレッドを処理することを特徴とする付記１又は２記載の試験方法。
（付記５）
前記処理装置が前記スレッドを処理した演算結果と前記演算結果の期待値とを比較し、前記スレッドを処理した演算結果と前記演算結果の期待値が一致しないときには前記試験対象である処理装置が異常であることを示す情報を出力し、前記スレッドを処理した演算結果と前記演算結果の期待値が一致し、かつ、前記スレッドの数が前記同時並列処理可能な最大の処理ユニット数と一致するときには前記試験対象である処理装置が正常であることを示す情報を出力することを特徴とする付記１〜４のいずれか１項に記載の試験方法。
（付記６）
前記スレッドの数を順に変えて前記処理装置に並列処理を行わせ、前記スレッドの数毎の処理時間を取得することを特徴とする付記１〜５のいずれか１項に記載の試験方法。
（付記７）
処理装置の試験を行う試験装置であって、
試験対象である処理装置が複数のスレッドを同時並列処理可能な最大の処理ユニット数を取得する処理ユニット数取得部と、
スレッドの数を指定して試験対象である処理装置に並列処理を行わせ、前記スレッドの数に対応する処理時間を取得する処理時間取得部と、
前記処理時間が閾値以上になる前記スレッドの数が前記同時並列処理可能な最大の処理ユニット数と一致するときには前記試験対象である処理装置が正常であることを示す情報を出力し、一致しないときには前記試験対象である処理装置が異常であることを示す情報を出力する出力部と
を有することを特徴とする試験装置。
（付記８）
前記処理時間が前記閾値以上になるときに、前記スレッドの数が前記同時並列処理可能な最大の処理ユニット数と一致するか否かを判定する判定部を更に有し、
前記出力部は、前記スレッドの数が前記同時並列処理可能な最大の処理ユニット数と一致するときには前記試験対象である処理装置が正常であることを示す情報を出力し、少なくとも１回一致しないときには前記試験対象である処理装置が異常であることを示す情報を出力することを特徴とする付記７記載の試験装置。
（付記９）
前記同時並列処理可能な最大の処理ユニット数は、前記処理装置内の全コア数であることを特徴とする付記７又は８記載の試験装置。
（付記１０）
前記同時並列処理可能な最大の処理ユニット数は、前記処理装置内の全スレッドグループ数であり、
各スレッドグループは、複数のコアを有し、
各スレッドグループ単位で１個のスレッドを処理することを特徴とする付記７又は８記載の試験装置。
（付記１１）
前記処理装置が前記スレッドを処理した演算結果と前記演算結果の期待値とを比較する比較部を更に有し、
前記出力部は、前記スレッドを処理した演算結果と前記演算結果の期待値が一致しないときには前記試験対象である処理装置が異常であることを示す情報を出力し、前記スレッドを処理した演算結果と前記演算結果の期待値が一致し、かつ、前記スレッドの数が前記同時並列処理可能な最大の処理ユニット数と一致するときには前記試験対象である処理装置が正常であることを示す情報を出力することを特徴とする付記７〜１０のいずれか１項に記載の試験装置。
（付記１２）
前記処理時間取得部は、前記スレッドの数を順に変えて前記処理装置に並列処理を行わせ、前記スレッドの数毎の処理時間を取得することを特徴とする付記７〜１１のいずれか１項に記載の試験装置。
（付記１３）
試験対象である処理装置が複数のスレッドを同時並列処理可能な最大の処理ユニット数を取得し、
スレッドの数を指定して試験対象である処理装置に並列処理を行わせ、前記スレッドの数に対応する処理時間を取得し、
前記処理時間が閾値以上になる前記スレッドの数が前記同時並列処理可能な最大の処理ユニット数と一致するときには前記試験対象である処理装置が正常であることを示す情報を出力し、一致しないときには前記試験対象である処理装置が異常であることを示す情報を出力する、
処理をコンピュータに実行させるプログラム。
（付記１４）
前記処理時間が前記閾値以上になるときに、前記スレッドの数が前記同時並列処理可能な最大の処理ユニット数と一致するか否かを判定し、前記スレッドの数が前記同時並列処理可能な最大の処理ユニット数と一致するときには前記試験対象である処理装置が正常であることを示す情報を出力し、少なくとも１回一致しないときには前記試験対象である処理装置が異常であることを示す情報を出力する処理をコンピュータに実行させる付記１３記載のプログラム。
（付記１５）
前記同時並列処理可能な最大の処理ユニット数は、前記処理装置内の全コア数であることを特徴とする付記１３又は１４記載のプログラム。
（付記１６）
前記同時並列処理可能な最大の処理ユニット数は、前記処理装置内の全スレッドグループ数であり、
各スレッドグループは、複数のコアを有し、
各スレッドグループ単位で１個のスレッドを処理することを特徴とする付記１３又は１４記載のプログラム。
（付記１７）
前記処理装置が前記スレッドを処理した演算結果と前記演算結果の期待値とを比較し、前記スレッドを処理した演算結果と前記演算結果の期待値が一致しないときには前記試験対象である処理装置が異常であることを示す情報を出力し、前記スレッドを処理した演算結果と前記演算結果の期待値が一致し、かつ、前記スレッドの数が前記同時並列処理可能な最大の処理ユニット数と一致するときには前記試験対象である処理装置が正常であることを示す情報を出力する処理をコンピュータに実行させる付記１３〜１６のいずれか１項に記載のプログラム。
（付記１８）
前記スレッドの数を順に変えて前記処理装置に並列処理を行わせ、前記スレッドの数毎の処理時間を取得することを特徴とする付記１３〜１７のいずれか１項に記載のプログラム。
【符号の説明】
【０１２６】
１０１  ＧＰＧＰＵ
１１１  ストリーミングマルチプロセッサ（ＳＭ）
１１２  メモリ
１１３  二次キャッシュメモリ
１２１  コア
１２２  命令キャッシュメモリ
１２３  一次キャッシュメモリ
１２４  コア群
１３１  スレッドグループ
９０１  試験装置
９０２  キーボード
９０３  ディスプレイ装置
９１１  ＣＰＵ
９１２  メインメモリ
９１３  記憶装置
９１４  入力装置インタフェース
９１５  出力装置インタフェース
９１６  入出力インタフェーススロット
９１７  バス
【図１】
0005900061.tif 000002
【図２】
0005900061.tif 000003
【図３】
0005900061.tif 000004
【図４】
0005900061.tif 000005
【図５】
0005900061.tif 000006
【図６】
0005900061.tif 000007
【図７】
0005900061.tif 000008
【図８】
0005900061.tif 000009
【図９】
0005900061.tif 000010
【図１０】
0005900061.tif 000011
【図１１】
0005900061.tif 000012
【図１２】
0005900061.tif 000013
【図１３】
0005900061.tif 000014
【図１４】
0005900061.tif 000015
【図１５】
0005900061.tif 000016
【図１６】
0005900061.tif 000017
【図１７】
0005900061.tif 000018