【手続補正書】
【提出日】平成28年11月30日(2016.11.30)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
方法であって、
１つ以上計算ノードによって実行され、前記計算ノードの各々は少なくとも１つのプロセッサコアとメモリとを含み、方法は、
共用カウンタをインクリメントする１つ以上の演算を含むマルチスレッドアプリケーションの実行を始めるステップを備え、前記共用カウンタは、前記マルチスレッドアプリケーションの複数のスレッドによってアクセス可能なデータ構造として実施され、方法はさらに、
前記マルチスレッドアプリケーションの所与のスレッドにより、前記共用カウンタをターゲットとしたインクリメント演算を開始するステップと、
前記開始するステップに応答し、前記データ構造を更新するか、またはいつ更新するかを判定するステップと、前記データ構造を更新するという判定に応答し、前記データ構造に格納された値を更新するステップとを備え、
前記データ構造を更新するか、またはいつ更新するかを判定するステップ、または、前記データ構造に格納された値を更新するステップは、現在または過去の前記共用カウンタの競合の量に応じて前記判定または前記更新を行なう複数の技術のうちの１つを選択するステップを含む、方法。
【請求項２】
前記判定または前記更新を行なう複数の技術のうち１つを選択するステップは、以前の前記共用カウンタをインクリメントする試みによってリトライ限界条件が満たされたかに依存する、または、前記更新によって満たされるかに依存する、請求項１に記載の方法。
【請求項３】
前記判定または前記更新を行なう複数の技術のうち１つを選択するステップは、前記開始するステップに応答して前記共用カウンタをインクリメントする試みの失敗が既に所定の最大数を超えたかに依存する、請求項１または２に記載の方法。
【請求項４】
前記判定または前記更新を行なう複数の技術のうち１つを選択するステップは、競合管理ポリシーに依存する、請求項１〜３のいずれか１項に記載の方法。
【請求項５】
前記データ構造は、カウント値部分とノード識別子部分とを含み、
前記更新を行なう複数の技術のうちの１つを選択するステップは、
前記データ構造の前記カウント値部分のみが更新される技術、または
前記データ構造の前記カウント値部分および前記ノード識別子部分の両方が更新される技術、のうちの１つを選択するステップを含む、請求項１〜４のいずれか１項に記載の方法。
【請求項６】
前記データ構造は、
カウント値またはポインタ値を格納するカウンタ部分と、
前記カウンタ部分がカウント値またはポインタ値を格納するかの指標とを含み、前記カウンタ部分に格納されたポインタ値は、１つ以上の値を含む代替カウンタ構造を識別し、
前記更新を行なう複数の技術のうちの１つを選択するステップは、
前記カウンタ部分がカウント値を格納し、前記更新が前記カウンタ部分に格納された前記カウント値をインクリメントすることを含む技術、または
前記カウンタ部分がポインタ値を格納し、前記更新が前記ポインタ値によって識別された前記代替カウンタ構造における前記値の１つを更新することを含む技術、のうちの１つを選択するステップを含む、請求項１〜４のいずれか１項に記載の方法。
【請求項７】
前記更新を行なう複数の技術のうちの１つを選択するステップは、
前記開始するステップに応答して前記更新が正確なカウント値をインクリメントすることを含む技術、または
予測カウント値が更新確率値から計算可能であり、前記更新が現在値に等しい確率を用いて前記開始するステップに応答して前記更新確率値を更新することを含む技術、のうちの１つを選択するステップを含む、請求項１〜６のいずれか１項に記載の方法。
【請求項８】
前記データ構造は、前記正確なカウント値および前記更新確率値の両方を格納し、
前記方法はさらに、
前記複数のスレッドのうちの１つにより、前記共用カウンタをターゲットとしたリード演算を開始するステップと、
前記複数のスレッドのうちの１つが前記リード演算を開始するステップに応答して、前記共用カウンタの予測値と前記正確なカウント値とからなる集合を含む前記共用カウンタの復号値を生成するステップと、
前記共用カウンタの複合値を返すステップとを備える、請求項７に記載の方法。
【請求項９】
前記データ構造は、確率的カウンタ値の表現を格納し、前記共用カウンタの予測値は前記確率的カウンタ値の前記表現から計算可能であり、前記更新は、後続のインクリメント演算を開始するステップに応答して前記データ構造に格納された前記確率的カウンタ値の前記表現が更新される前記確率の減少をもたらし、
前記更新を行なう複数の技術のうちの１つを選択するステップは、
前記共用カウンタの高い競合に応答し、前記共用カウンタの競合が低い時よりも、前記確率的カウンタ値の前記表現が更新される確率が減少する頻度が大きくなる技術を選択するステップ、または
前記共用カウンタの低い競合に応答し、前記共用カウンタの競合が高い時よりも、前記確率的カウンタ値の前記表現が更新される確率が減少する頻度が小さくなる技術を選択するステップを含む、請求項１〜４のいずれか１項に記載の方法。
【請求項１０】
前記データ構造は、仮数部分と指数部分とを含む確率的カウンタ値の２進浮動小数点表現を格納し、
前記更新を行なう複数の技術のうちの１つを選択するステップは、前記データ構造の前記仮数部分のみが更新される技術、または前記データ構造の前記仮数部分および前記指数部分の両方が更新される技術、のうちの１つを選択するステップを含む、請求項１〜４のいずれか１項に記載の方法。
【請求項１１】
前記判定を行なう複数の技術のうちの１つを選択するステップは、
前記共用カウンタの低い競合に応答して、前記判定が無条件に前記更新を行なうことになる技術を選択するステップ、または
前記共用カウンタの高い競合に応答して、前記共用カウンタに関連付けられた更新確率値に前記判定が依存する技術を選択するステップを含む、請求項１〜４のいずれか１項に記載の方法。
【請求項１２】
前記判定を行なう複数の技術のうちの１つを選択するステップは、
前記共用カウンタの低い競合に応答して、前記判定が無条件に前記更新を遅れなく行なうことになる技術を選択するステップ、または
前記共用カウンタの高い競合に応答して、前記データ構造をいつ更新するかを判定することが更新優先度指標に依存する技術を選択するステップを含む、請求項１〜４のいずれか１項に記載の方法。
【請求項１３】
システムであって、
１つ以上のプロセッサと、
メモリ格納プログラム命令とを含み、前記メモリ格納プログラム命令が前記１つ以上のプロセッサ上で実行されると、前記１つ以上のプロセッサは、
共用カウンタをインクリメントする１つ以上の演算を含むマルチスレッドアプリケーションの実行を始め、前記共用カウンタは、前記マルチスレッドアプリケーションの複数のスレッドによってアクセス可能なデータ構造として実施され、前記１つ以上のプロセッサはさらに、
前記マルチスレッドアプリケーションの所与のスレッドにより、前記共用カウンタをターゲットとしたインクリメント演算を開始し、
前記開始することに応答して、前記データ構造を更新するか、またはいつ更新するかを判定し、
前記データ構造を更新するという判定に応答して、前記データ構造に格納された値を更新し、
前記データ構造を更新するか、またはいつ更新するかの前記判定、または、前記データ構造に格納された値の前記更新は、現在または過去の前記共用カウンタの競合の量に応じて前記判定または前記更新を行なう複数の技術のうちの１つを選択することを含む、システム。
【請求項１４】
前記データ構造は、カウント値部分とノード識別子部分とを含み、
前記更新を行なう複数の技術のうちの１つを選択することは、
前記データ構造の前記カウント値部分のみが更新される技術、または
前記データ構造の前記カウント値部分および前記ノード識別子部分の両方が更新される技術、のうちの１つを選択することを含む、請求項１３に記載のシステム。
【請求項１５】
前記データ構造は、前記共用カウンタの前記値を集合的に表わす正確なカウント値と更新確率値とを格納し、
前記更新を行なう複数の技術のうちの１つを選択することは、
前記開始することに応答して前記正確なカウント値をインクリメントすることを前記更新することが含む技術、または
予測カウント値が前記更新確率値に少なくとも部分的に基づいて計算可能であり、前記更新することが、現在値に等しい確率を用いて前記開始に応答して更新確率値を更新する技術、のうちの１つを選択することを含む、請求項１３または１４に記載のシステム。
【請求項１６】
前記データ構造は確率的カウンタ値の表現を格納し、前記共用カウンタの予測値は前記確率的カウンタ値の表現から計算可能であり、前記更新は、後続のインクリメント演算の開始に応答して、前記データ構造に格納される前記確率的カウンタ値の前記表現が更新される確率が減少することになり、
前記更新を行なう複数の技術のうちの１つを選択することは、
前記共用カウンタの高い競合に応答して、前記共用カウンタの競合が低い時よりも、前記確率的カウンタ値の前記表現が更新される確率が減少する頻度が大きくなる技術を選択すること、または
前記共用カウンタの低い競合に応答して、前記共用カウンタの競合が高い時よりも、前記確率的カウンタ値の前記表現が更新される確率が減少する頻度が小さくなる技術を選択することを含む、請求項１３または１４に記載のシステム。
【請求項１７】
コンピュータ読み取り可能プログラムであって、前記プログラムが１つ以上のコンピュータ上で実行されると、前記１つ以上のコンピュータは、
共用カウンタをインクリメントする１つ以上の演算を含むマルチスレッドアプリケーションの実行を始め、前記共用カウンタは、前記マルチスレッドアプリケーションの複数のスレッドによってアクセス可能なデータ構造として実施され、前記１つ以上のコンピュータはさらに、
前記マルチスレッドアプリケーションの所与のスレッドにより、前記共用カウンタをターゲットとしたインクリメント演算を開始し、
前記開始することに応答して、前記データ構造を更新するか、またはいつ更新するかを判定し、
前記データ構造を更新するという判定に応答して、前記データ構造に格納された値を更新し、
前記データ構造を更新するか、またはいつ更新するかの前記判定、または前記データ構造に格納された値の前記更新は、現在または過去の前記共用カウンタの競合の量に応じて前記判定または前記更新を行なう複数の技術のうちの１つを選択することを含む、コンピュータ読み取り可能プログラム。