【手続補正書】
【提出日】平成26年9月19日(2014.9.19)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
複数の命令を含む計算カーネル内の位置であって、前記計算カーネルの実行中に前記計算カーネルの実行が移行可能な位置を、前記計算カーネルのコンパイル中に特定するステップと、
前記計算カーネルのコンテキストを維持及び移行するためのデータ構造を作成するステップと、
第１のマイクロアーキテクチャを有する第１のプロセッサコア上で実行するために、前記位置前の前記計算カーネル内のコードをスケジュールするステップと、
移行条件を満たしているという指標を受信したことに応じて、
前記コンテキストを、前記第１のマイクロアーキテクチャとは異なる第２のマイクロアーキテクチャを有する第２のプロセッサコアがアクセス可能な位置に移動させるステップと、
前記位置後の前記計算カーネル内のコードを、前記第２のプロセッサコアにスケジュールするステップと、
を含み、
前記移行条件を満たしていることを判定するために、出口点に到達した前記計算カーネルの並列実行反復回数が所与の閾値を超えているか判定するステップをさらに含む、
方法。
【請求項２】
前記第１のプロセッサコアに対応する前記計算カーネルの第１のバージョンのコードを生成するステップと、
前記第２のプロセッサコアに対応する前記計算カーネルの第２のバージョンのコードを生成するステップと、をさらに含む、請求項１に記載の方法。
【請求項３】
前記第１のマイクロアーキテクチャは、単一命令複数データ（ＳＩＭＤ）マイクロアーキテクチャであり、前記第２のマイクロアーキテクチャは、汎用マイクロアーキテクチャである、請求項２に記載の方法。
【請求項４】
プロファイルランタイム情報及び静的情報の少なくとも１つに基づいて前記特定を行うステップをさらに含む、請求項２に記載の方法。
【請求項５】
前記移行条件を満たしているか否かを判定する命令を用いて、前記第１のプロセッサコアの第１のバージョンのコードを計測するステップと、
前記データ構造によって示された位置でライブ値を検出するとともに実行を開始する命令を用いて、前記第２のプロセッサコアの第２のバージョンのコードを計測するステップと、
をさらに含む、請求項２に記載の方法。
【請求項６】
前記位置は、条件付き分岐命令の直前である、請求項１に記載の方法。
【請求項７】
異種マルチコアアーキテクチャを含むコンピューティングシステムであって、
第１のマイクロアーキテクチャを有する第１のプロセッサコアと、
前記第１のマイクロアーキテクチャとは異なる第２のマイクロアーキテクチャを有する第２のプロセッサコアと、
複数の命令を含む計算カーネルであって、前記計算カーネルの実行中に前記計算カーネルの実行が移行可能な位置を含む計算カーネルと、
前記計算カーネルのコンテキストの維持及び移行に使用可能なデータ構造と、
スケジューラを含むオペレーティングシステムと、を備え、
前記スケジューラは、
第１のマイクロアーキテクチャを有する第１のプロセッサコア上で実行するために、前記位置前の前記計算カーネル内のコードをスケジュールし、
移行条件を満たしたという指標を受信したことに応じて、
前記コンテキストを、前記第１のマイクロアーキテクチャとは異なる第２のマイクロアーキテクチャを有する第２のプロセッサコアがアクセス可能な位置に移動させ、
前記位置後の前記計算カーネル内のコードを、前記第２のプロセッサコアにスケジュールするように構成されており、
前記第１のプロセッサコア及び前記第２のプロセッサコアの各々は、前記移行条件を満たしていることを判定するために、出口点に到達した前記計算カーネルの並列実行反復回数が所与の閾値を超えているか判定するように構成されている、
コンピューティングシステム。
【請求項８】
前記第１のプロセッサに対応する前記計算カーネルの第１のバージョンのコードを生成し、前記第２のプロセッサに対応する前記計算カーネルの第２のバージョンのコードを生成するように構成されたコンパイラをさらに含む、
請求項７に記載のコンピューティングシステム。
【請求項９】
前記第１のマイクロアーキテクチャは、単一命令複数データ（ＳＩＭＤ）マイクロアーキテクチャであり、前記第２のマイクロアーキテクチャは、汎用マイクロアーキテクチャである、請求項８に記載のコンピューティングシステム。
【請求項１０】
前記コンパイラは、プロファイルランタイム情報及び静的情報の少なくとも１つに基づいて前記特定を行うように構成されている、請求項８に記載のコンピューティングシステム。
【請求項１１】
前記コンパイラは、
前記移行条件を満たしているか否かを判定する命令を用いて、前記第１のプロセッサコアの第１のバージョンのコードを計測し、
前記データ構造によって示された位置でライブ値を検出するとともに実行を開始する命令を用いて、前記第２のプロセッサコアの第２のバージョンのコードを計測するように構成されている、
請求項８に記載のコンピューティングシステム。
【請求項１２】
前記コンパイラは、
前記計算カーネルの後の並列実行反復回数が前記移動条件を満たすという予測に応じて、前記計算カーネルを前記位置で２つの計算サブカーネルに分割し、
前記位置前のコードを含む第１の計算サブカーネルを、前記第１のプロセッサコアにスケジュールし、
前記位置後のコードを含む第２の計算サブカーネルを、前記第２のプロセッサコアにスケジュールするように構成されている、
請求項７に記載のコンピューティングシステム。
【請求項１３】
前記位置は、条件付き分岐命令の直前である、請求項７に記載のコンピューティングシステム。
【請求項１４】
プログラム命令を記憶するコンピュータ可読記憶媒体であって、
前記プログラム命令は、
複数の命令を含む計算カーネル内の位置であって、前記計算カーネルの実行中に前記計算カーネルの実行が移行可能な位置を、前記計算カーネルのコンパイル中に特定し、
前記計算カーネルのコンテキストを維持及び移行するためのデータ構造を作成し、
第１のマイクロアーキテクチャを有する第１のプロセッサコア上で実行するために、前記位置前の前記計算カーネル内のコードをスケジュールし、
移行条件を満たしているという指標を受信したことに応じて、
前記コンテキストを、前記第１のマイクロアーキテクチャとは異なる第２のマイクロアーキテクチャを有する第２のプロセッサコアがアクセス可能な位置に移動させ、
前記位置後の前記計算カーネル内のコードを、前記第２のプロセッサコアにスケジュールし、
前記移行条件を満たしていることを判定するために、出口点に到達した前記計算カーネルの並列実行反復回数が所与の閾値を超えているか判定するように実行可能である、
コンピュータ可読記憶媒体。
【請求項１５】
前記プログラム命令は、前記第１のプロセッサコアに対応する前記計算カーネルの第１のバージョンのコードを生成し、前記第２のプロセッサコアに対応する前記計算カーネルの第２のバージョンのコードを生成するように実行可能である、請求項１４に記載のコンピュータ可読記憶媒体。
【請求項１６】
前記プログラム命令は、
前記移行条件を満たしているか否かを判定する命令を用いて、前記第１のプロセッサコアの第１のバージョンのコードを前記位置で計測し、
前記データ構造によって示された位置でライブ値を検出するとともに実行を開始する命令を用いて、前記第２のプロセッサコアの第２のバージョンのコードを前記位置で計測するように実行可能である、
請求項１４に記載のコンピュータ可読記憶媒体。
【請求項１７】
複数の命令を含む計算カーネル内の位置であって、前記計算カーネルの実行中に前記計算カーネルの実行が移行可能な位置を、前記計算カーネルのコンパイル中に特定するステップと、
前記計算カーネルのコンテキストを維持及び移行するためのデータ構造を作成するステップと、
前記計算カーネルの後の並列実行反復回数が移動条件を満たすという予測に応じて、前記計算カーネルを前記位置で２つの計算サブカーネルに分割するステップと、
前記位置前のコードを含む第１の計算サブカーネルを、第１のプロセッサコアにスケジュールするステップと、
前記位置後のコードを含む第２の計算サブカーネルを、第２のプロセッサコアにスケジュールするステップと、
を含む、方法。
【請求項１８】
異種マルチコアアーキテクチャを含むコンピューティングシステムであって、
第１のマイクロアーキテクチャを有する第１のプロセッサコアと、
前記第１のマイクロアーキテクチャとは異なる第２のマイクロアーキテクチャを有する第２のプロセッサコアと、
複数の命令を含む計算カーネルであって、前記計算カーネルの実行中に前記計算カーネルの実行が移行可能な位置を含む計算カーネルと、
前記計算カーネルのコンテキストの維持及び移行に使用可能なデータ構造と、
前記計算カーネルの後の並列実行反復回数が移動条件を満たすという予測に応じて、前記計算カーネルを前記位置で２つの計算サブカーネルに分割するように構成されたコンパイラと、
スケジューラを含むオペレーティングシステムと、を備え、
前記スケジューラは、
前記位置前のコードを含む第１の計算サブカーネルを、第１のプロセッサコアにスケジュールし、
前記位置後のコードを含む第２の計算サブカーネルを、第２のプロセッサコアにスケジュールする、ように構成されている、
コンピューティングシステム。