IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ インターナショナル・ビジネス・マシーンズ・コーポレーションの特許一覧

特許7394851量子コンピューティング・シミュレーションにおける制御NOTゲート並列化
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-11-30
(45)【発行日】2023-12-08
(54)【発明の名称】量子コンピューティング・シミュレーションにおける制御NOTゲート並列化
(51)【国際特許分類】
   G06N 10/00 20220101AFI20231201BHJP
【FI】
G06N10/00
【請求項の数】 16
(21)【出願番号】P 2021528472
(86)(22)【出願日】2019-11-22
(65)【公表番号】
(43)【公表日】2022-01-26
(86)【国際出願番号】 EP2019082191
(87)【国際公開番号】W WO2020114799
(87)【国際公開日】2020-06-11
【審査請求日】2022-04-18
(31)【優先権主張番号】16/211,446
(32)【優先日】2018-12-06
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】390009531
【氏名又は名称】インターナショナル・ビジネス・マシーンズ・コーポレーション
【氏名又は名称原語表記】INTERNATIONAL BUSINESS MACHINES CORPORATION
【住所又は居所原語表記】New Orchard Road, Armonk, New York 10504, United States of America
(74)【代理人】
【識別番号】100112690
【弁理士】
【氏名又は名称】太佐 種一
(72)【発明者】
【氏名】堀井 洋
(72)【発明者】
【氏名】千葉 ひとみ
【審査官】北川 純次
(56)【参考文献】
【文献】米国特許第8972237(US,B2)
【文献】HANER, Thomas et al.,0.5 Petabyte Simulation of a 45-Qubit Quantum Circuit,arXiv.org [online],2017年09月18日,[検索日 2023.04.10], インターネット:<URL:https://arxiv.org/pdf/1704.01127v2.pdf>,<DOI: 10.48550/arXiv.1704.01127>
(58)【調査した分野】(Int.Cl.,DB名)
G06N 10/00-10/80
(57)【特許請求の範囲】
【請求項1】
システムであって、
コンピュータ実行可能コンポーネントを記憶するメモリと、
前記メモリ内に記憶された前記コンピュータ実行可能コンポーネントを実行するプロセッサであって、前記コンピュータ実行可能コンポーネントが、
キュービット並べ替えの間に制御NOTゲートをシミュレートする複製コンポーネント、および
前記制御NOTゲートが前記複製コンポーネントによって前記キュービット並べ替えの間にシミュレートされることに基づいて、メモリ・アクセス平衡化を実行する並列化コンポーネントを含む、前記プロセッサと、
を備え、
前記コンピュータ実行可能コンポーネントが、
前記キュービット並べ替えのために第1のビットおよび第2のビットを選択する選択器コンポーネントであって、前記第1のビットが、制御ビットである、前記選択器コンポーネントをさらに含み、
前記第1のビットが不均等メモリ・アクセス・ノード数の二進対数(log2)を引いたキュービット数を含む総数以上のビットであるとの判断に基づいて、前記選択器コンポーネントが、前記第1のビットを選択する、
システム。
【請求項2】
システムであって、
コンピュータ実行可能コンポーネントを記憶するメモリと、
前記メモリ内に記憶された前記コンピュータ実行可能コンポーネントを実行するプロセッサであって、前記コンピュータ実行可能コンポーネントが、
キュービット並べ替えの間に制御NOTゲートをシミュレートする複製コンポーネント、および
前記制御NOTゲートが前記複製コンポーネントによって前記キュービット並べ替えの間にシミュレートされることに基づいて、メモリ・アクセス平衡化を実行する並列化コンポーネントを含む、前記プロセッサと、
を備え、
前記コンピュータ実行可能コンポーネントが、
前記キュービット並べ替えのために第1のビットおよび第2のビットを選択する選択器コンポーネントであって、前記第1のビットが、制御ビットである、前記選択器コンポーネントをさらに含み、
前記第1のビットが不均等メモリ・アクセス・ノード数の二進対数(log2)未満のビットであるとの判断に基づいて、前記選択器コンポーネントが、前記第1のビットを選択する、
システム。
【請求項3】
システムであって、
コンピュータ実行可能コンポーネントを記憶するメモリと、
前記メモリ内に記憶された前記コンピュータ実行可能コンポーネントを実行するプロセッサであって、前記コンピュータ実行可能コンポーネントが、
キュービット並べ替えの間に制御NOTゲートをシミュレートする複製コンポーネント、および
前記制御NOTゲートが前記複製コンポーネントによって前記キュービット並べ替えの間にシミュレートされることに基づいて、メモリ・アクセス平衡化を実行する並列化コンポーネントを含む、前記プロセッサと、
を備え、
前記コンピュータ実行可能コンポーネントが、
前記キュービット並べ替えのために第1のビットおよび第2のビットを選択する選択器コンポーネントであって、前記第1のビットが、制御ビットである、前記選択器コンポーネントをさらに含み、
前記第2のビットが、前記第1のビットとは異なり、かつ前記制御ビットとして前記第1のビットを有する目標ビットではないとの判断に基づいて、前記選択器コンポーネントが、前記第2のビットを選択する、
システム。
【請求項4】
前記コンピュータ実行可能コンポーネントが、
量子コンピューティングのための前記キュービット並べ替えを実施する配置コンポーネントであって、前記配置コンポーネントが、第1のビットを第2のビットと並べ替える、
前記配置コンポーネントをさらに含む、請求項1~3のいずれか一項に記載のシステム。
【請求項5】
前記コンピュータ実行可能コンポーネントが、
評価コンポーネントがメモリ・アクセス改善不足を判断することに基づいて、前記キュービット並べ替えを元に戻す、反転コンポーネントをさらに含む、請求項1~3のいずれか一項に記載のシステム。
【請求項6】
前記第1のビットを前記第2のビットと並べ替えることで量子メモリのフラグメント化アクセスを最小化する、請求項1~3のいずれか一項に記載のシステム。
【請求項7】
前記第1のビットを前記第2のビットと並べ替えることでスレッド・ローカリティを最小化する、請求項1~3のいずれか一項に記載のシステム。
【請求項8】
前記キュービット並べ替えが、第1のキュービット並べ替えであり、前記複製コンポーネントが、前記メモリ・アクセス平衡化が成功したとの評価コンポーネントによる判断に基づいて、第2のキュービット並べ替えの間に前記制御NOTゲートをシミュレートする、請求項1~3のいずれか一項に記載のシステム。
【請求項9】
コンピュータ実施方法であって、
プロセッサに動作可能に連結されたシステムによって、キュービット並べ替えの間に制御NOTゲートをシミュレートするステップと、
前記システムによって、前記キュービット並べ替えの間に前記制御NOTゲートを前記シミュレートするステップに基づいて、メモリ・アクセス平衡化を実行するステップと、
前記キュービット並べ替えのために第1のビットおよび第2のビットを選択するステップと、
前記第1のビットが不均等メモリ・アクセス・ノード数の二進対数(log2)を引いたキュービット数を含む総数以上のビットであるとの判断に基づいて、前記第1のビットを選択するステップと、
を含み、
前記第1のビットが制御ビットである、
コンピュータ実施方法。
【請求項10】
コンピュータ実施方法であって、
プロセッサに動作可能に連結されたシステムによって、キュービット並べ替えの間に制御NOTゲートをシミュレートするステップと、
前記システムによって、前記キュービット並べ替えの間に前記制御NOTゲートを前記シミュレートするステップに基づいて、メモリ・アクセス平衡化を実行するステップと、
前記キュービット並べ替えのために第1のビットおよび第2のビットを選択するステップと、
前記第1のビットが不均等メモリ・アクセス・ノード数の二進対数(log2)未満のビットであるとの判断に基づいて、択器コンポーネントが、前記第1のビットを選択するステップと、
を含み、
前記第1のビットが制御ビットである、
コンピュータ実施方法。
【請求項11】
コンピュータ実施方法であって、
プロセッサに動作可能に連結されたシステムによって、キュービット並べ替えの間に制御NOTゲートをシミュレートするステップと、
前記システムによって、前記キュービット並べ替えの間に前記制御NOTゲートを前記シミュレートするステップに基づいて、メモリ・アクセス平衡化を実行するステップと、
前記キュービット並べ替えのために第1のビットおよび第2のビットを選択するステップと、
前記第2のビットが、前記第1のビットとは異なり、かつ御ビットとして前記第1のビットを有する目標ビットではないとの判断に基づいて、前記第2のビットを選択するステップと、
を含む、
前記第1のビットが、制御ビットである、
コンピュータ実施方法。
【請求項12】
前記システムによって、メモリ・アクセス改善不足の判断に基づいて、前記キュービット並べ替えを元に戻すステップをさらに含む、請求項9~11のいずれか一項に記載のコンピュータ実施方法。
【請求項13】
前記キュービット並べ替えが第1のキュービット並べ替えであり、前記コンピュータ実施方法が、
前記システムによって、前記メモリ・アクセス平衡化が成功したと判断するステップと、
前記システムによって、前記判断するステップに基づいて第2のキュービット並べ替えの間に前記制御NOTゲートをシミュレートするステップと、
をさらに含む、請求項9~11のいずれか一項に記載のコンピュータ実施方法。
【請求項14】
方法であって、
プロセッサに動作可能に連結されたシステムによって、第1のキュービットおよび第2のキュービットを選択するステップであって、前記第1のキュービットが制御キュービットである、前記選択するステップと、
前記システムによって、前記第1のキュービットを前記第2のキュービットと並べ替えるステップであって、前記並べ替えるステップの間に制御NOTゲートがシミュレートされる、前記並べ替えるステップと、
前記第1のキュービットを前記第2のキュービットと前記並べ替えるステップが、前記システムによって、不均等メモリ・アクセス・ノードの第2の量の二進対数(log2)を引いたキュービットの第1の量以上である、1つまたは複数の制御キュービットの発生を最小化するステップを含む、
方法。
【請求項15】
方法であって、
プロセッサに動作可能に連結されたシステムによって、第1のキュービットおよび第2のキュービットを選択するステップであって、前記第1のキュービットが制御キュービットである、前記選択するステップと、
前記システムによって、前記第1のキュービットを前記第2のキュービットと並べ替えるステップであって、前記並べ替えるステップの間に制御NOTゲートがシミュレートされる、前記並べ替えるステップと、
前記第1のキュービットを前記第2のキュービットと前記並べ替えるステップが、前記システムによって、不均等メモリ・アクセス・ノードの量の二進対数(log2)未満である1つまたは複数の制御キュービットの発生を最小化するステップを含む、
方法。
【請求項16】
コンピュータ・プログラムであって、請求項9ないし15のいずれか1項に記載の方法の各ステップをコンピュータに実行させるための、コンピュータ・プログラム。
【発明の詳細な説明】
【背景技術】
【0001】
量子計算のシミュレーションは、量子コンピューティング・システムのサイズに起因して、高性能コンピュータを使用しても直接シミュレートすることは困難であり得る。例えば、Smelyanskiy1らは、「implementation of a quantum simulator on a classical computer, that can simulate general single qubit gates and two-qubit controlled gates.」について論じている。Smelyanskiy1らの「qHiPSTER: The Quantum High Performance Software Testing Environment」、2016、arXiv:1601.07195v2 [quant-ph]、Abstractを参照されたい。さらに、Smelyanskiy1らは、「a number of single- and multi-node optimizations, including vectorization,multi-threading, cache blocking, as well as overlapping computation with communication」の実行について論じている。同文献を参照されたい。
【0002】
しかしながら、これらのシミュレーションは、実行時間(例えば、シミュレートされる計算を実行するのに必要な時間)に関連するため、非効率的であり得る。これらのシミュレーションは、必要な記憶空間量に起因して非効率的でもあり得る。したがって、量子コンピューティング・シミュレーションを改善する機会が存在する。
【発明の概要】
【0003】
以下では、本発明の1つまたは複数の実施形態の基本的理解を提供するための概要を提示する。本概要は、重要もしくは重大な要素を識別することを意図するものではなく、または本発明の特定の実施形態のいかなる範囲も、もしくは特許請求の範囲のいかなる範囲も描写することを意図するものではない。その唯一の目的は、後で提示される、より詳細な説明の前置きとして、簡略化した形態で概念を提示することである。本明細書で説明される本発明の実施形態では、量子コンピューティング・シミュレーションにおける制御NOTゲート並列化を容易にする、システム、コンピュータ実施方法、装置、またはコンピュータ・プログラム製品、あるいはその組合せが提供される。
【0004】
本発明の一実施形態によれば、システムは、コンピュータ実行可能コンポーネントを記憶するメモリと、メモリに記憶されたコンピュータ実行可能コンポーネントを実行するプロセッサと、を含み得る。コンピュータ実行可能コンポーネントは、キュービット並べ替えの間に制御NOTゲートをシミュレートする複製コンポーネントを含み得る。コンピュータ実行可能コンポーネントは、また、制御NOTゲートが複製コンポーネントによってキュービット並べ替えの間にシミュレートされることに基づいて、メモリ・アクセス平衡化を実行する分析コンポーネントを含み得る。したがって、量子メモリのフラグメント化アクセスを軽減することまたは減少させることあるいはその両方の利点がもたらされ得る。さらに、別の利点は、スレッド・ローカリティの非効率性が軽減または減少され、あるいはその両方が行われ得ることであり得る。
【0005】
本発明の別の実施形態によれば、コンピュータ実施方法は、プロセッサに動作可能に連結されたシステムによって、キュービット並べ替えの間に制御NOTゲートをシミュレートするステップを含み得る。このコンピュータ実施方法は、また、システムによって、キュービット並べ替えの間に制御NOTゲートをシミュレートするステップに基づいてメモリ・アクセス平衡化を実行するステップを含み得る。したがって、非効率的なスレッド・ローカリティ、または量子メモリのフラグメント化アクセス、あるいはその両方を軽減することまたは減少させることあるいはその両方の恩恵がもたらされ得る。
【0006】
本発明のさらなる一実施形態によれば、制御NOTゲートの量子コンピューティング・シミュレーションを容易にするコンピュータ・プログラム製品が、本明細書において提供される。このコンピュータ・プログラム製品は、それで具現化されるプログラム命令を有するコンピュータ可読記憶媒体を含み得る。プログラム命令は、プロセッサに、キュービット並べ替えの間に制御NOTゲートをシミュレートさせるようにプロセッサによって実行可能であり得る。プログラム命令は、また、プロセッサに、制御NOTゲートがキュービット並べ替えの間にシミュレートされることに基づいてメモリ・アクセス平衡化を実行させ得る。したがって、量子メモリのフラグメント化アクセスの軽減または減少あるいはその両方をもたらす利点が、実現され得る。さらに、非効率的なスレッド・ローカリティの軽減または減少あるいはその両方をもたらす利点が、実現され得る。
【0007】
本発明の別の実施形態は、プロセッサに動作可能に連結されたシステムによって、第1のキュービットおよび第2のキュービットを選択するステップであって、第1のキュービットが制御キュービットである、選択するステップを含み得る方法に関する。この方法は、また、システムによって、第1のキュービットを第2のキュービットと並べ替えるステップを含み得る。制御NOTゲートは、並べ替えるステップの間にシミュレートされ得る。このような方法の利点は、量子メモリのフラグメント化アクセスの軽減もしくは減少またはその両方、および/あるいは非効率的なスレッド・ローカリティの軽減もしくは減少またはその両方を含む。
【0008】
本発明のさらなる別の実施形態は、制御キュービットの不平衡メモリ・アクセスを回避すると同時に制御NOTゲートの量子コンピューティング・シミュレーションの改善を容易にするコンピュータ・プログラム製品に関し、このコンピュータ・プログラム製品は、それで具現化されるプログラム命令を有するコンピュータ可読記憶媒体を含み、プログラム命令は、プロセッサに、制御キュービットおよび非制御キュービットを選択させるようにプロセッサによって実行可能であり、非制御キュービットおよび制御キュービットは、異なるキュービットである。プログラム命令は、また、プロセッサに、制御キュービットを非制御キュービットと並べ替えさせ、制御キュービットが非制御キュービットと並べ替えされる間に制御NOTゲートをシミュレートさせ得る。このようなコンピュータ・プログラム製品の利点は、非効率的なスレッド・ローカリティまたは量子メモリのフラグメント化アクセスあるいはその両方が、軽減または減少され、あるいはその両方が行われ得るということである。
【図面の簡単な説明】
【0009】
図1(A)】は、各スレッドがローカル・メモリにアクセスする平衡メモリ・アクセスを含む、不均等メモリ・アクセス・アーキテクチャおよびキャッシュ・ラインの概略的表現である。
図1(B)】は、非効率的なスレッド・ローカリティに起因した不平衡メモリ・アクセスを含む、不均等メモリ・アクセス・アーキテクチャおよびキャッシュ・ラインの概略的表現である。
図1(C)】は、フラグメント化アクセスに起因した不平衡メモリ・アクセスを含む、不均等メモリ・アクセス・アーキテクチャおよびキャッシュ・ラインの概略的表現である。
図2】制御NOTゲート・シミュレーションの結果の概略的表現である。
図3】本発明の一実施形態によるビット並べ替えの例である。
図4】本発明の一実施形態による、量子コンピューティング・シミュレーションにおける制御NOTゲート並列化を容易にするシステムのブロック図である。
図5】本発明の一実施形態による、メモリ・アクセス平衡化のためにキュービットの選択を実施するシステムのブロック図である。
図6】本発明の一実施形態による、量子コンピューティング・シミュレーションにおける制御NOTゲート並列化を容易にするコンピュータ実施方法のフロー図である。
図7】本発明の一実施形態による、キュービット並べ替えを容易にするために1つまたは複数のビットを選択することを容易にするコンピュータ実施方法のフロー図である。
図8】本発明の一実施形態による、メモリ・アクセス平衡化試行の評価を容易にするコンピュータ実施方法のフロー図である。
図9】本発明の一実施形態による、量子コンピューティング・シミュレーションにおける制御NOTゲート並列化を容易にするコンピュータ実施方法のフロー図である。
図10】本明細書の実施形態が容易にされ得る動作環境のブロック図である。
【発明を実施するための形態】
【0010】
以下の詳細な説明は、単なる例示にすぎず、本発明の実施形態またはその用途もしくは使用、あるいはその両方を限定することを意図するものではない。さらに、前述の背景技術もしくは発明の概要の項目、または発明を実施するための形態の項目で提示されるいかなる明示的または暗示的な情報にも拘束される意図はない。
【0011】
本発明の実施形態は、ここで図面を参照して説明され、類似の参照番号は、全体を通して類似の要素を参照するために用いられる。以下の記述では、説明のため、本発明の実施形態のより完全な理解をもたらすために、多数の具体的詳細が明らかにされている。しかしながら、様々な場合において、これらの具体的詳細がなくても本発明の実施形態が実施され得ることは明白である。
【0012】
量子コンピューティングにおいて、制御NOTゲート(CNOTまたはC-NOT)は、CNOTゲートおよび単一のキュービット回転の組合せを用いて様々な度合いの精度にシミュレートされ得る量子ゲートである。量子ゲート(または量子論理ゲート)は、少数のキュービット上で動作する基本量子回路である。量子ゲートは、可逆ゲートであり、量子回路の基礎的要素である。
【0013】
量子コンピュータのq個のキュービットの状態は、複素数型の2サイズのアレイによって表現される。アレイのインデックスは、バイナリ形式で表現され、i番目のキュービットの0の確率は、インデックスのi番目のビット(順序は右から左である)が0である、計算済みの複素数値である。例えば、4個のキュービットの状態は、16個の複素数値のアレイで表現され、2番目のキュービットの0の確率は、アレイ内の0000、0001、0100、0101、1000、1001、1100、および1101番目(これらのインデックスにおいて2番目のバイナリが全て0である)の複素数値で計算される。
【0014】
量子ゲートは、ユニタリ行列によって表現され得る。様々な量子ゲートは、1つまたは2つのキュービットの空間上で動作し得る。量子ゲートは、2×2サイズのユニタリ行列によって記述され得る。ゲートが作用する変数(例えば、量子状態)は、2複素次元のベクトルであり、ここでnは、ゲートが作用するキュービットの数(例えば、変数のキュービットの数)である。制御ゲートは2つのキュービットに作用し、ここで1つのキュービットが動作のための制御として作用する。
【0015】
CNOTのシミュレーションは、不均等メモリ・アクセス(NUMA)・アーキテクチャおよびキャッシュ・ラインの観点から不平衡のメモリ・アクセスを生み出し得る。例えば、不平衡のメモリ・アクセスは、非効率的なスレッド・ローカリティまたはフラグメント化アクセスあるいはその両方に基づき得る。
【0016】
さらに詳細には、CNOTは、量子コンピューティング・シミュレーションにおける状態の半分を修正し得る。制御ビットqは、修正された領域を判断し得る。転送ビットqは、どの状態が交換されるかを判断し得る。NUMAアーキテクチャを意識することによって、それぞれのスレッドが、そのNUMAノードに割り当てられた状態に頻繁にアクセスし得る。これは、スレッドがNUMAノードとの親和性を有すると表現され得る。高すぎるqまたは低いqあるいはその両方が、そのシミュレーションにおける非効率的なメモリ・アクセスを引き起こし得る。例えば、qが高い場合、メモリ・アクセスが不平衡になり得る。別の例では、qが低い場合、メモリ・アクセスがフラグメント化を生じ得る。
【0017】
図1(A)は、各スレッドがローカル・メモリにアクセスする平衡メモリ・アクセスを含む、NUMAアーキテクチャおよびキャッシュ・ラインの概略的表現100を示す。この例では、メモリ割当ては、NUMA0およびNUMA1の間である。示される例について、32の状態があり得、これは、5個のキュービットの例である。量子コンピュータをシミュレートするために、複素数型のアレイが使用され得、示される例について、5個のキュービットの量子コンピュータを表現するために使用される32の量子複素数値が存在する。図示されるように、第1のボックスのセット102(例えば、示される第1の16の状態)は、NUMA0を表し、第2のボックスのセット104(例えば、示される第2の16の状態)は、NUMA1を表す。ボックスは、それぞれの複素数値を含み得る。例えば、第1のボックスは、00001の複素数値を有する。
【0018】
NUMA0についてのスレッド親和性は、第1の矢印のセット106によって表され、NUMA1についてのスレッド親和性は、第2の矢印のセット108によって表される。さらに、キャッシュ・ラインは、矢印110によって表される。
【0019】
CNOT動作は、2つのキュービットを使用し得る。CNOT動作について、例えば、状態の半分が交換され得る。以下の式は、キュービットを交換するために使用され得、ここでCXはCNOTゲートであり、qはキュービットである。
CX q[a]q[b]:a番目のビットが1である場合、b番目のビットを交換する 式1。
【0020】
図1(A)について上記式を使用すると、CX q[3]q[2]の結果が得られる。したがって、図1(A)の1つまたは複数のスレッドは、ローカル・メモリにアクセスし、それは、平衡メモリ・アクセスを含む。
【0021】
図1(B)は、非効率的なスレッド・ローカリティ上に起因した不平衡メモリ・アクセスを含む、NUMAアーキテクチャおよびキャッシュ・ラインの概略的表現112を示す。式1を使用すると、図1(B)についてCX q[4]q[2]の結果が得られ、それによって、非効率的なスレッド・ローカリティの問題が生じる。この結果は、qが高すぎること(例えば、この例では4)に起因する。この場合、NUMA0についてのスレッド(例えば、NUMA0ハードウェア)は、第1の矢印のセット114によって表されるように、NUMA1の状態に常にアクセスしている。図示されるように、リモート・メモリ・ノードにアクセスするメモリ値は、ローカル・メモリ・アクセスが実行されている場合(図1(A)のような)よりも、メモリにアクセスするのに長い時間がかかる。したがって、図1(B)は低速メモリ・アクセスを有する。本明細書で論じられる様々な態様が提供される解決策は、キュービット並べ替えが、非効率性、スレッド・ローカリティを最小化し、または減少させ、あるいはその両方を行い、その結果、より効率的なスレッド・ローカリティが得られるということである。
【0022】
図1(C)は、フラグメント化アクセスに起因する不平衡メモリ・アクセスを含む、NUMAアーキテクチャおよびキャッシュ・ラインの概略的表現116を示す。図1(C)の場合、式1を使用すると、4つの矢印のセット118~124によって表されるように、CX q[0]q[2]という結果が得られる。この状況では、qが低すぎ(例えば、この例では0)、これは、フラグメント化アクセスの問題を引き起こす。本明細書で論じられる様々な態様が提供される解決策は、キュービット並べ替えが、量子メモリのフラグメント化アクセスを最小化し、または減少させ、あるいはその両方を行うということである。
【0023】
図2は、制御NOTゲート・シミュレーションの結果の概略的表現200を示す。目標ビット202(例えば、0~29の番号が付された30の目標ビット)が、X軸上に表され、制御ビット204(例えば、0~29の番号が付された30の制御ビット)が、Z軸上に表され、経過時間206(秒)が、Y軸上に表される。概略的表現は、4つのNUMAノードおよび128バイトのキャッシュ・ラインを有する30のキュービット・シミュレーションのものである。
【0024】
図1(B)に関して論じられたような非効率的なスレッド・ローカリティが、ボックス208内に示される。この問題は、30の制御ビットがlog2(NUMA数)以下であること、即ち30の制御ビット≦log2(NUMA数)であることに基づいて生じ得る。本発明は、CNOTゲートをシミュレートし、かつ非効率的なスレッド・ローカリティを軽減または減少あるいはその両方を行うと同時に、不平衡メモリ・アクセスを回避するために、量子コンピューティングのためのキュービット並べ替えを実施することによって非効率的なスレッド・ローカリティの問題を解決し、その結果、より効率的なスレッド・ローカリティがもたらされる。
【0025】
図1(C)に関して論じられたようなフラグメント化アクセスの問題が、ボックス210内に示される。これは、制御ビットがlog2(キャッシュ・ライン・サイズ)未満であること、即ち制御ビット<log2(キャッシュ・ライン・サイズ)であることに基づいて生じ得る。本発明は、CNOTゲートをシミュレートし、かつ量子メモリのフラグメント化アクセスを軽減または減少あるいはその両方を行うと同時に、不平衡メモリ・アクセスを回避するために、量子コンピューティングのためのキュービット並べ替えを実施することによってフラグメント化アクセスの問題を解決する。
【0026】
本明細書で論じられる様々な態様は、フラグメント化アクセスおよび非効率的なスレッド・ローカリティを最小化するために量子レジスタ割当てを変更し得る。例えば、図3は、本発明の一実施形態によるビット並べ替えの例を示す。
【0027】
300に示されるのは、第1の量子レジスタ割当てである。第1のキュービット(例えば、ビット・インデックス0)に適用されるのは、第1のXゲート302である第1のゲート、CNOTゲート304である第2のゲート、第2のXゲート306である第3のゲート、および第1の測定308であり得る。第2の測定310は、第2のキュービット(例えば、ビット・インデックス1)上にあり得る。312に示されるのは、第2の量子レジスタ割当てであり、これは、第1の量子レジスタ割当ての再割当て(または並べ替え)である。例えば、第1のキュービットおよび第2のキュービットが、交換され得る。
【0028】
一例として、以下の簡単なアルゴリズムが、ビット並べ替えに使用され得る。キュービットは、レジスタにランダムに割り当てられ得、非効率的なメモリ状態の数が、計算され得る。非効率的なメモリ・アクセスの最小数が判断され得、キュービット並べ替えが実行され得る。最も効率的なキュービット並べ替えであるように判断が行われ得る。一例としてのアルゴリズムについて説明されているが、他のアルゴリズムが使用され得、開示される態様がこの例に限定されないことに留意されたい。
【0029】
量子コンピューティングにおいて、量子レジスタが測定されるとき、その状態(0または1)は従来のレジスタに対する。ランタイムが量子回路におけるキュービットの割当てを変更する場合であっても、回路の結果は、従来のレジスタの割当てを維持することによって等価である。本明細書で説明される実施形態は、CNOT並列化を容易にし得る、システム、コンピュータ実施方法、およびコンピュータ・プログラム製品を含む。例えば、本明細書で論じられるように、ビット並べ替えは、(キュービット数)-log2(NUMAノード数)以上である制御キュービットを最小化するように実行され得る。本明細書で論じられるビット並べ替えは、追加的または代替的に、log2(NUMAノード数)未満である制御キュービットを最小化するように実行され得る。
【0030】
図4は、本発明の一実施形態による、量子コンピューティング・シミュレーションにおける制御NOTゲート並列化を容易にするシステム400のブロック図である。本開示において説明されるシステム(例えば、システム400など)、装置、またはプロセスの態様は、機械内で具現化される、例えば、1つまたは複数の機械に関連付けられた1つまたは複数のコンピュータ可読媒体において具現化される、機械実行可能コンポーネントを構成し得る。1つまたは複数の機械、例えば、コンピュータ、コンピューティング・デバイス、仮想機械などによる実行時に、そのようなコンポーネントが、説明される動作を機械に実行させ得る。
【0031】
システム400は、プロセッサを含む任意の種類のコンポーネント、機械、デバイス、設備、装置、もしくは機器、またはその組合せであり得、あるいは有線ネットワークもしくは無線ネットワークまたはその両方を用いた有効なもしくは動作可能なまたはその両方の通信が可能であり得、あるいはその両方であり得る。システム400を含み得るコンポーネント、機械、装置、デバイス、設備、または手段、あるいはその組合せは、タブレット・コンピューティング・デバイス、手持ちデバイス、サーバ・クラス・コンピューティング・マシンまたはデータベースあるいはその両方、ラップトップ・コンピュータ、ノートブック・コンピュータ、デスクトップ・コンピュータ、携帯電話、スマート・フォン、家電製品または計測あるいはその両方、産業デバイスまたは商業デバイスあるいはその両方、手持ちデバイス、情報端末、マルチメディア・インターネット対応電話、およびマルチメディア・プレーヤなどを含み得る。
【0032】
システム400は、量子回路技術、量子プロセッサ技術、量子コンピューティング技術、人工知能技術、医療および材料技術、サプライ・チェーンおよび物流技術、金融サービス技術、または他のデジタル技術、あるいはその組合せなどであるがこれらに限定されない技術に関連する、量子コンピューティング・システムであり得る。システム400は、ハードウェアまたはソフトウェアあるいはその両方を利用して、本質的には高度に技術的であり、抽象的ではなく、かつ人間による一連の精神的行為として実行され得ない問題を解決し得る。実行されるプロセスのいくつかが、機械学習に関する定義済みタスクを実行するために、1つまたは複数の専用コンピュータ(例えば、1つまたは複数の専用処理ユニット、量子コンピューティング・コンポーネントを有する専用コンピュータなど)によって実行され得る。
【0033】
システム400またはシステム400のコンポーネントあるいはその両方が、上述した技術、コンピュータ・アーキテクチャなどにおける進歩を通して生じる新たな問題を解決するために利用され得る。システム400は、量子コンピューティング・システム、量子回路システム、量子プロセッサ・システム、人工知能システム、または他のシステム、あるいはその組合せに対する技術的改善を提供し得る。システム400は、また、量子プロセッサの処理性能、処理効率、処理特性、タイミング特性、または電力効率、あるいはその組合せを改善することによって、量子プロセッサ(例えば、超伝導量子プロセッサ)に対する技術的改善を提供し得る。
【0034】
システム400は、複製コンポーネント402、並列化コンポーネント404、処理コンポーネント406、メモリ408、またはストレージ410、あるいはその組合せを含み得る。メモリ408は、コンピュータ実行可能コンポーネントおよび命令を記憶し得る。処理コンポーネント406(例えばプロセッサ)は、複製コンポーネント402、並列化コンポーネント404、または他のシステム・コンポーネント、あるいはその組合せによって、命令(例えば、コンピュータ実行可能コンポーネントおよび対応する命令)の実行を容易にし得る。複製コンポーネント402、並列化コンポーネント404、処理コンポーネント406、メモリ408、またはストレージ410、あるいはその組合せのうちの1つまたは複数が、システム400の1つまたは複数の機能を実行するように、電気的に、通信可能に、または動作可能に、あるいはその組合せで互いに連結され得る。
【0035】
複製コンポーネント402は、入力データとして、量子回路データ412を受信し得る。例えば、量子回路データ412は、量子回路の機械可読記述であり得る。量子回路は、量子ゲートのシーケンスに関連する1つまたは複数の量子計算についてのモデルであり得る。一例では、量子回路データは、量子回路を記述するテキスト形式言語(例えば、QASMテキスト形式言語)を示すテキスト・データを含み得る。例えば、テキスト・データは、例えば、1つまたは複数のキュービットに関連する量子回路の1つまたは複数のキュービット・ゲートをテキストで記述し得る。
【0036】
少なくとも一部、入力データ(例えば、量子回路データ412)に基づいて、複製コンポーネント402は、キュービット並べ替えの間に制御NOTゲート(例えば、CNOTゲート304)をシミュレートし得る。さらに、並列化コンポーネント404は、制御NOTゲートが複製コンポーネントによってキュービット並べ替えの間にシミュレートされることに基づいて、メモリ・アクセス平衡化を実行し得る。並列化コンポーネント404は、出力データ414として、メモリ・アクセス平衡化の結果を出力し得る。並列化コンポーネント404は、メモリ・アクセス平衡化を実行して、(図1(C)および図2に関して論じられたように)量子メモリのフラグメント化アクセスを減少または最小化あるいはその両方を行い得る。追加的または代替的に、実施態様、並列化コンポーネント404は、メモリ・アクセス平衡化を実行して、(図1(B)および図2に関して論じられたように)非効率的なスレッド・ローカリティを減少または最小化あるいはその両方を行い得る。
【0037】
並列化コンポーネント404は、メモリ・アクセス平衡化を実行し得、人工知能の原理に関連する分類、相関、推論、または表現、あるいはその組合せに基づいて出力データ414を生成し得る。例えば、並列化コンポーネント404は、他のシステム・コンポーネントと同様、自動分類システムまたは自動分類プロセスあるいはその両方を利用して、制御ビットとしてどのキュービットを選択すべきか、目標ビットとしてどのキュービットを選択すべきか、制御ビットまたは目標ビットあるいはその両方として1つまたは複数の他のビットをいつ選択すべきか、メモリ・アクセス平衡化が成功したかどうか、などを判断し得る。一例では、並列化コンポーネント404は、(例えば、分析有用性およびコストを計算に入れて)確率または統計あるいはその両方に基づく分析を利用して、1つまたは複数のキュービットの選択および1つまたは複数のキュービットに適用されるべき対応する平衡化に関する推論を学習または生成あるいはその両方を行い得る。一態様において、並列化コンポーネント404は、量子メモリのフラグメント化アクセスの減少もしくは最小化またはその両方、および/あるいはスレッド・ローカリティの減少もしくは最小化またはその両方を達成するために、推論ベースの方式を一部利用して、キュービットの選択またはメモリ・アクセス平衡化の結果あるいはその両方に関連する推論を学習または生成あるいはその両方を行うことを容易にする、並列化コンポーネント404の自動化態様をさらに拡張し得る推論コンポーネント(図示せず)を含み得る。
【0038】
並列化コンポーネント404は、任意の適当な機械学習ベースの技術、統計ベースの技術、または確率ベースの技術、あるいはその組合せを利用し得る。例えば、並列化コンポーネント404は、エキスパート・システム、ファジー論理、SVM、隠れマルコフ・モデル(HMM)、貪欲法検索アルゴリズム、ルールベース・システム、ベイジアン・モデル(例えば、ベイジアン・ネットワーク)、ニューラル・ネットワーク、他の非線形訓練技術、データ融合、有用性ベースの分析システム、ベイジアン・モデルを利用するシステムなどを利用し得る。別の態様では、並列化コンポーネント404は、キュービット選択またはメモリ・アクセス平衡化あるいはその両方に関連する機械学習計算のセットを実行し得る。例えば、並列化コンポーネント404は、クラスタリング機械学習計算のセット、ロジスティック回帰機械学習計算のセット、決定木機械学習計算のセット、ランダム・フォレスト機械学習計算のセット、回帰木機械学習計算のセット、最小二乗機械学習計算のセット、インスタンスベース機械学習計算のセット、回帰機械学習計算のセット、サポート・ベクトル回帰機械学習計算のセット、k平均機械学習計算のセット、スペクトル・クラスタリング機械学習計算のセット、規則学習機械学習計算のセット、ベイジアン機械学習計算のセット、深層ボルツマン機械計算のセット、深層信念ネットワーク計算のセット、または異なる機械学習計算のセット、あるいはその組合せを実行して、メモリ・アクセス平衡化のやり方またはメモリ・アクセス平衡化の結果あるいはその両方を判断し得る。
【0039】
システム400(例えば、他のシステム・コンポーネントと同様、複製コンポーネント402または並列化コンポーネント404あるいはその両方)は、複製コンポーネント402が、人間には実行できない(例えば、単独の人間の精神の能力よりも大きい)キュービット並べ替えの間に制御NOTゲートをシミュレートするのと実質的に同時に、キュービット選択、メモリ・アクセス平衡化(もしくは再平衡化)を実行し、またはメモリ・アクセス平衡化の結果を生成し、あるいはその両方を行うことが認識されるべきである。例えば、ある期間にわたってシステム400(例えば、複製コンポーネント402または並列化コンポーネント404あるいはその両方)により処理されるデータ量、処理されるデータ速度、または処理されるデータのデータ種類、あるいはその組合せは、同じ期間にわたって単独の人間の精神によって処理され得る量、速度、およびデータ種類よりも大きく、速く、かつ異なり得る。システム400(例えば、複製コンポーネント402または並列化コンポーネント404あるいはその両方)は、また、上述の量子回路分析またはパルス信号生成プロセスあるいはその両方も実行しつつ、1つまたは複数の他の機能を実行することに向けて完全に動作可能(例えば、完全に電源オン、完全に実行、など)であり得る。さらに、システム400(例えば、複製コンポーネント402または並列化コンポーネント404あるいはその両方)によって生成され協調される出力データ414は、ユーザによって手動で取得することが不可能な情報を含み得る。例えば、量子回路データ412に含まれる情報の種類、量子回路データ412に関連付けられた情報の多様性、あるいはメモリ・アクセス平衡化を容易にするため、もしくは出力データ414を生成および出力するため、またはその両方のために使用される量子回路データ412の最適化、あるいはその組合せは、ユーザによって手動で取得され、かつ処理され得る情報よりも複雑であり得る。
【0040】
図5は、本発明の一実施形態による、メモリ・アクセス平衡化のためにキュービットの選択を実施するシステム500のブロック図である。
【0041】
システム500は、システム400のコンポーネントまたは機能性あるいはその両方のうちの1つまたは複数を含み得、その逆でもあり得る。本明細書で論じられる様々な態様は、q(制御qビットまたはキュービット)の不平衡メモリ・アクセスを回避する(例えば、軽減または減少あるいはその両方を行う)ように、かつN個のNUMAノードを有するコンピュータ・システムにおけるq(目標qビット)のキャッシュ・ヒットを改善するように、CNOTゲートの量子コンピューティング・シミュレーションを改善するために使用され得る。
【0042】
システム500は、キュービット並べ替えのために第1のビットおよび第2のビットを選択し得る選択器コンポーネント502を含み得る。第1のビットは、制御キュービットであり得る。一例では、第1のビットが不均等メモリ・アクセス・ノード数の二進対数(log2)を引いたキュービット数を含む総数以上のビットであるとの判断に基づいて、選択器コンポーネント502が、第1のビットを選択し得る。別の例では、第1のビットが不均等メモリ・アクセス・ノード数の二進対数(log2)未満のビットであるとの判断に基づいて、選択器コンポーネント502が、第1のビットを選択し得る。さらに別の例では、第2のビットが、第1のビットとは異なり、かつ制御ビットとして第1のビットを有する目標ビットではないとの判断に基づいて、選択器コンポーネント502が、第2のビットを選択し得る。選択器コンポーネント502は、また他のキュービットを選択し得る。
【0043】
システム500は、並列化コンポーネント404によって実行されるメモリ・アクセス平衡化が成功であったか、成功でなかったかを判断し得る、評価コンポーネント504も含み得る。したがって、評価コンポーネント504は、メモリ・アクセス改善があったかどうか、またはメモリ・アクセス改善不足があったかどうかを判断し得る。例えば、評価コンポーネント504は、不均一メモリ・アクセス・ノード数の第1の二進対数(log2)を引いたキュービット数を含む総数以上である、制御キュービットの減少または最小化あるいはその両方が達成されたかどうかを判断するために、メモリ・アクセス平衡化を分析し得る。別の例では、評価コンポーネント504は、不均一メモリ・アクセス・ノード数の第2の二進対数(log2)未満である、制御キュービットの減少または最小化あるいはその両方が達成されたかどうかを判断するために、メモリ・アクセス平衡化を分析し得る。
【0044】
また、量子コンピューティングのためのキュービット並べ替えを実施し得る配置コンポーネント506も、システム500に含まれ得、配置コンポーネント506は、第1のビットを第2のビットと並べ替え得る。さらに、キュービット並べ替えまたはメモリ・アクセス平衡化あるいはその両方が成功した(例えば、上記結果が達成された)との評価コンポーネント504による判断に基づいて、配置コンポーネント506は、第1のビットまたは第2のビットあるいはその両方を第3のビット(または後続ビットあるいはその両方)と並べ替え得る。例えば、評価コンポーネント504(または別のシステム・コンポーネント)は、並べ替えされるべきキュービットがより多く存在すると判断し得、したがって、評価コンポーネント504(または別のシステム・コンポーネント)によって判断されるように、並べ替えされるべき追加のキュービットが存在しなくなるまで、本明細書で論じられるように第3のビット(または後続ビットあるいはその両方)が並べ替えされ得る。
【0045】
さらに、評価コンポーネント504が、メモリ・アクセス改善があったと判断することに基づいて、選択器コンポーネント502は、制御キュービットとして、または目標キュービットとして別のキュービットを選択し得る。並列化コンポーネント404は、CNOTゲートが複製コンポーネント402によって第2の(または後続の)キュービット並べ替えの間にシミュレートされることに基づいて、別のメモリ・アクセス平衡化を実行し得る。
【0046】
評価コンポーネント504による判断が、キュービット並べ替えまたはメモリ・アクセス平衡化あるいはその両方が成功しなかった(例えば、上記結果が達成されなかった)ということである場合、反転コンポーネント508は、(直近の)キュービット並べ替えを元に戻し得る。
【0047】
さらに、評価コンポーネント504が、メモリ・アクセス改善不足があったと判断することに基づいて、選択器コンポーネント502は、制御キュービットとして、または目標キュービットとして別のキュービットを選択し得る。並列化コンポーネント404は、CNOTゲートが、複製コンポーネント402によって第2の(または後続の)キュービット並べ替えの間にシミュレートされることに基づいて、別のメモリ・アクセス平衡化を実行し得る。上述の通り、評価コンポーネント504(または別のシステム・コンポーネント)は、並べ替えされるべきキュービットがより多く存在すると判断し得、したがって、評価コンポーネント504(または別のシステム・コンポーネント)によって判断されるように、並べ替えされるべき追加のキュービットが存在しなくなるまで、本明細書で論じられるように第3のビット(または後続ビットあるいはその両方)が並べ替えされ得る。
【0048】
図6は、本発明の一実施形態による、量子コンピューティング・シミュレーションにおける制御NOTゲート並列化を容易にするコンピュータ実施方法600のフロー図である。
【0049】
方法600の602において、プロセッサに動作可能に連結されたシステムは、(例えば、複製コンポーネント402を介して)キュービット並べ替えの間に制御NOTゲートをシミュレートし得る。さらに、方法600の604において、システムは、(例えば、並列化コンポーネント404を介して)キュービット並べ替えの間に制御NOTゲートをシミュレートするステップに基づいて、メモリ・アクセス平衡化を実行し得る。メモリ・アクセス平衡化は、量子メモリのフラグメント化アクセスを最小化し得る。追加的または代替的に、メモリ・アクセス平衡化は、スレッド・ローカリティを最小化し得る。
【0050】
図7は、本発明の一実施形態による、キュービット並べ替えを容易にするために1つまたは複数のビットを選択することを容易にするコンピュータ実施方法700のフロー図である。
【0051】
702において、プロセッサを含むシステムが、(例えば、選択器コンポーネント502を介して)第1のビットおよび少なくとも第2のビットを選択し得るときに、方法700が開始する。第1のビットおよび少なくとも第2のビットが、キュービット並べ替えのために選択され得、様々な実施態様によれば、第1のビットは制御ビットであり得る。
【0052】
一例では、第1のビットの選択は、第1のビットが不均等メモリ・アクセス・ノード数の二進対数(log2)を引いたキュービット数を含む総数以上のビットであるとの判断に基づき得る。別の例では、第1のビットの選択は、第1のビットが不均等メモリ・アクセス・ノード数の二進対数(log2)未満のビットであるとの判断に基づき得る。さらなる一例では、第1のビットの選択は、第2のビットが、第1のビットとは異なり、かつ制御ビットとして第1のビットを有する目標ビットではないとの判断に基づき得る。
【0053】
704において、システムが(例えば、複製コンポーネント402を介して)キュービット並べ替えの間に制御NOTゲートをシミュレートし得るときに、方法700は続行する。さらに、方法700の706において、システムは、(例えば、並列化コンポーネント404を介して)メモリ・アクセス平衡化を実行し得る。メモリ・アクセス平衡化の間、制御NOTゲートがシミュレートされ得る。
【0054】
図8は、本発明の一実施形態による、メモリ・アクセス平衡化試行の評価を容易にするコンピュータ実施方法800のフロー図である。
【0055】
802において、プロセッサに動作可能に連結されたシステムが、(例えば、複製コンポーネント402を介して)第1のキュービット並べ替えの間に制御NOTゲートをシミュレートするときに、方法800が開始する。さらに、804において、システムは、(例えば、並列化コンポーネント404を介して)第1のキュービット並べ替えの間に制御NOTゲートをシミュレートするステップに基づいて、第1のメモリ・アクセス平衡化を実行し得る。
【0056】
方法800の806において、第1のメモリ・アクセス平衡化が成功したかどうかの判断が、(例えば、評価コンポーネント504を介して)行われ得る。判断するステップが、第1のメモリ・アクセス平衡化が成功しなかったということである場合(「いいえ」)、808において、システムは、(例えば、反転コンポーネント508を介して)第1のキュービット並べ替えを元に戻し得る。判断するステップが、第1のメモリ・アクセス平衡化が成功であったということである場合(「はい」)、または808における元に戻すステップの後、方法800は、810において続行し得、システムは、(例えば、並列化コンポーネント404を介して)第2のキュービット並べ替えの間に制御NOTゲートをシミュレートし得る。
【0057】
方法800は、812において、(例えば、評価コンポーネント504を介して)第2のメモリ・アクセス平衡化が成功したかどうかを判断するステップと共に、続行し得る。成功でない場合(「いいえ」)、方法800は、808に戻り得、(例えば、反転コンポーネント508を介して)第2のキュービット並べ替えを元に戻し得る。成功である場合(「はい」)、または第2のキュービット並べ替えを元に戻すステップの後、並べ替えすべきキュービットがさらに存在することに基づいて、方法800は、810において続行し得、制御NOTゲートは、(例えば、並列化コンポーネント404を介して)後続のキュービット並べ替えの間にシミュレートされ得る。様々な実施態様に従って、並べ替えされる必要があるキュービットがさらに存在しないという判断が行われるまで、812における判断するステップ、808における元に戻すステップ、または810におけるシミュレートするステップ、あるいはその組合せが続き得る。
【0058】
図9は、本発明の一実施形態による、量子コンピューティング・シミュレーションにおける制御NOTゲート並列化を容易にするコンピュータ実施方法900のフロー図である。
【0059】
902において、プロセッサを含むシステムが、(例えば、選択器コンポーネント502を介して)制御ビットqであり得る第1のビットを選択し得るときに、方法900が開始する。第1のビットの選択は、複数のビットのうちの1つのビットが、[(キュービット数)-log2(NUMAノード数)]以上である値を含むとの判断に基づき得る。代替的には、第1のビットの選択は、複数のビットのうちの1つのビットが、log2(NUMAノード数)未満である値を含むとの判断に基づき得る。
【0060】
方法900の904において、システムは、(例えば、選択器コンポーネント502を介して)ビットqであり得る第2のビットを選択し得る。第2のビットの選択は、複数のビットのうちの1つのビットが第1のビットではなく(例えば、制御ビットqではない、制御ビットqとは異なるビットである)、かつビットが制御ビットとしてqを有する目標ビットとして指定されないとの判断に基づき得る。
【0061】
方法900の906において、システムによって、(例えば、並列化コンポーネント404を介して)第1のビットを第2のビットと並べ替える(例えば、制御ビットqをビットqと並べ替える)ための試行が行われ得る。さらに、方法900の908において、メモリ・アクセスが改善されたかどうかの判断が(例えば、評価コンポーネント504を介して)行われ得る。例えば、908における判断は、非効率的なメモリ・アクセスが改善された(例えば、非効率性が改善された)かどうかであり得る。
【0062】
判断が、非効率性が改善されていないということである場合(「いいえ」)、方法900は、910において続き得、最後の並べ替えが、(例えば、反転コンポーネント508を介して)元に戻され得る。例えば、最後の並べ替えが、前回の並べ替えに戻され得る。最後の並べ替えの逆戻り時、もしくはその後、または908における判断が、非効率性が改善されたということである場合(「はい」)、方法900は、(例えば、評価コンポーネント504を介して)追加の並べ替えが実施されるべきかどうかの判断と共に、912において続行し得る。例えば、追加の並べ替えを実行するための判断は、並べ替えされ得る追加のビットが存在するかどうかに基づき得る。
【0063】
追加の並べ替えが実行されるべきでない場合(「いいえ」)、方法900は、914において停止し得る。しかしながら、追加の並べ替えが実行されるべきである場合(「はい」)、この方法は、第1のビットの選択と共に、902において続行し得る(例えば、制御ビットが再使用され得る)。しかしながら、いくつかの実施態様において、902における選択は、制御ビットとして使用され得る別のビットのものであり得る。912における別の(または後続の)並べ替えを実行することの判断は、再帰的であり得ると理解されるべきである。例えば、制御ビット(例えば、第1のビット)および別のビット(例えば、第2のビットまたは後続のビット)の選択の後、並べ替えが実行され得、別の並べ替えが実行されるべきかどうかの判断が行われ得る。
【0064】
本明細書で論じられるように、制御NOTゲートの量子コンピューティング・シミュレーションを容易にし得るシステム、コンピュータ実施方法、コンピュータ・プログラム製品、または本発明の他の実施形態が提供され得る。例えば、コンピュータ・プログラム製品は、それで具現化されるプログラム命令を有するコンピュータ可読記憶媒体を含み得、プログラム命令は、プロセッサに、キュービット並べ替えの間に制御NOTゲートをシミュレートさせ、制御NOTゲートがキュービット並べ替えの間にシミュレートされることに基づいてメモリ・アクセス平衡化を実行させるように、プロセッサによって実行可能である。
【0065】
一例では、プログラム命令は、第1のビットが不均等メモリ・アクセス・ノード数の第1の二進対数(log2)を引いたキュービット数を含む総数以上のビットであるとの判断に基づいて、プロセッサに第1のビットを選択させ得、第1のビットは制御ビットである。代替的には、プログラム命令は、第1のビットが不均等メモリ・アクセス・ノード数の第2の二進対数(log2)未満のビットであるとの判断に基づいて、プロセッサに第1のビットを選択させ得る。いくつかの実施態様によれば、プログラム命令は、第2のビットが第1のビットとは異なり、かつ制御ビットとして第1のビットを有する目標ビットではないとの判断に基づいて、プロセッサに第2のビットを選択させ得る。
【0066】
さらに本明細書で論じられるように、制御キュービットの不均等メモリ・アクセスを回避すると同時に、制御NOTゲートの量子コンピューティング・シミュレーションの改善を容易にし得るシステム、コンピュータ実施方法、コンピュータ・プログラム製品、または他の実施形態が提供され得る。例えば、コンピュータ・プログラム製品は、それで具現化されるプログラム命令を有するコンピュータ可読記憶媒体を含み得、プログラム命令は、プロセッサに、制御キュービットおよび非制御キュービットを選択させ、非制御キュービットおよび制御キュービットは異なるキュービットであり、制御キュービットを非制御キュービットと並べ替えさせ、制御キュービットが非制御キュービットと並べ替えされる間に制御NOTゲートをシミュレートさせるように、プロセッサによって実行可能である。
【0067】
一例としての実施態様において、プログラム命令は、プロセッサに、不均等メモリ・アクセス・ノードの第2の量の第1の二進対数(log2)を引いたキュービットの第1の量以上である制御キュービットを減少させ得る。別の例としての実施態様によれば、プログラム命令は、プロセッサに、不均等メモリ・アクセス・ノードの量の第2の二進対数(log2)よりも少ない制御キュービットを減少させ得る。
【0068】
説明の単純化のために、コンピュータ実施方法論は、一連の動作として示され、説明される。主題のイノベーションは、示される動作によって、または動作の順序によって、あるいはその両方によって限定されず、例えば動作は、様々な順序でまたは同時に、あるいはその両方で、かつ本明細書に提示および説明されない他の動作と共に発生し得ると理解され、認識されるべきである。さらに、示される動作の全てが、開示される主題によるコンピュータ実施方法論を実施するために必要とされ得るわけではない。さらに、コンピュータ実施方法論は、代替的に、状態図またはイベントを介して一連の相互に関連のある状態として表現され得ると、当業者は理解し認識するであろう。追加的に、以下および本明細書全体を通して開示されるコンピュータ実施方法論は、そのようなコンピュータ実施方法論をコンピュータに移送および転送することを容易にするために製品上に記憶されることが可能であると、さらに理解されるべきである。本明細書で使用されるように、製品という用語は、任意のコンピュータ可読デバイスまたは記憶媒体からアクセス可能なコンピュータ・プログラムを包含することを意図するものである。
【0069】
本発明の様々な態様についての状況を提供するために、図10および以下の議論は、本発明の様々な態様が実施され得る適当な一環境の概要を提供することを意図するものである。図10は、本発明の実施形態が容易にされ得る動作環境1000のブロック図を示す。図10を参照すると、動作環境1000は、また、コンピュータ1012を含み得る。コンピュータ1012は、処理ユニット1014、システム・メモリ1016、およびシステム・バス1018も含み得る。システム・バス1018は、システム・メモリ1016を含むがこれに限定されないシステム・コンポーネントを処理ユニット1014に連結する。処理ユニット1014は、様々な利用可能なプロセッサのうちのいずれかであり得る。デュアル・マイクロプロセッサおよび他のマイクロプロセッサ・アーキテクチャも、処理ユニット1014として利用され得る。システム・バス1018は、インダストリ・スタンダード・アーキテクチャ(ISA)、マイクロチャネル・アーキテクチャ(MSA)、拡張ISA(EISA)、インテリジェント・ドライブ・エレクトロニクス(IDE)、ビデオ・エレクトロニクス・スタンダーズ・アソシエーション(VESA)・ローカル・バス(VLB)、ペリフェラル・コンポーネント・インターコネクト(PCI)、カード・バス、ユニバーサル・シリアル・バス(USB)、アドバンスト・グラフィックス・ポート(AGP)、ファイアワイヤ(IEEE1394)、および小型計算機システム・インターフェース(SCSI)を含むがこれらに限定されない、任意の多様な利用可能なバス・アーキテクチャを用いたメモリ・バスもしくはメモリ・コントローラ、周辺バスもしくは外部バス、またはローカル・バス、あるいはその組合せを含む、複数種類のバス構造のうちのいずれかであり得る。システム・メモリ1016は、揮発性メモリ1020および不揮発性メモリ1022も含み得る。基本入出力システム(BIOS)は、起動中などにコンピュータ1012内の要素間で情報を転送するための基本ルーチンを含み、不揮発性メモリ1022に記憶される。限定ではなく例示として、不揮発性メモリ1022は、読出し専用メモリ(ROM)、プログラマブルROM(PROM)、電気的プログラマブルROM(EPROM)、電気的消去可能プログラマブルROM(EEPROM)、フラッシュ・メモリ、または不揮発性ランダム・アクセス・メモリ(RAM)(例えば、強誘電体RAM(FeRAM))を含み得る。揮発性メモリ1020は、外部キャッシュ・メモリとして動作するRAMも含み得る。限定ではなく例示として、RAMは、静的RAM(SRAM)、動的RAM(DRAM)、同期DRAM(SDRAM)、ダブル・データ・レートSDRAM(DDR SDRAM)、拡張SDRAM(ESDRAM)、Synchlink DRAM(SLDRAM)、ダイレクトRambus RAM(DRRAM)、ダイレクトRambus動的RAM(DRDRAM)、およびRambus動的RAMなどの多くの形態で利用可能である。
【0070】
コンピュータ1012は、リムーバブル/非リムーバブル、揮発性/不揮発性コンピュータ記憶媒体も含み得る。図10は、例えば、ディスク・ストレージ1024を示す。ディスク・ストレージ1024は、磁気ディスク・ドライブ、フロッピー(R)・ディスク・ドライブ、テープ・ドライブ、Jazドライブ、Zipドライブ、LS-100ドライブ、フラッシュ・メモリ・カード、またはメモリ・スティックのようなデバイスも含み得るが、これらに限定されない。ディスク・ストレージ1024は、コンパクト・ディスクROMデバイス(CD-ROM)、CD記録可能ドライブ(CD-Rドライブ)、CD書換え可能ドライブ(CD-RWドライブ)、またはデジタル多用途ディスクROMドライブ(DVD-ROM)などの光ディスク・ドライブを含むがこれらに限定されない、他の記憶媒体とは別々の、または他の記憶媒体と組み合わせた記憶媒体も含み得る。システム・バス1018へのディスク・ストレージ1024の接続を容易にするために、インターフェース1026などのリムーバブルまたは非リムーバブル・インターフェースが、典型的には使用される。図10は、ユーザと適当な動作環境1000において説明される基本コンピュータ・リソースとの間の仲介として動作するソフトウェアも示す。そのようなソフトウェアは、例えば、オペレーティング・システム1028も含み得る。ディスク・ストレージ1024上に記憶され得るオペレーティング・システム1028は、コンピュータ1012のリソースを制御し、割り当てるように動作する。システム・アプリケーション1030は、例えば、システム・メモリ1016内、またはディスク・ストレージ1024上のいずれかに記憶されたプログラム・モジュール1032およびプログラム・データ1034を通して、オペレーティング・システム1028によってリソースの管理を利用する。本開示は、様々なオペレーティング・システムまたはオペレーティング・システムの組合せで実施され得ると理解されるべきである。ユーザは、入力デバイス1036を通してコンピュータ1012にコマンドまたは情報を入力する。入力デバイス1036は、マウス、トラックボール、スタイラス、タッチ・パッドなどのポインティング・デバイス、キーボード、マイクロフォン、ジョイスティック、ゲーム・パッド、衛星テレビ受信用アンテナ、スキャナ、TVチューナ・カード、デジタル・カメラ、デジタル・ビデオ・カメラ、およびウェブ・カメラなどを含むがこれらに限定されない。これらの入力デバイスおよび他の入力デバイスは、インターフェース・ポート1038を介してシステム・バス1018を通して処理ユニット1014に接続する。インターフェース・ポート1038は、例えば、シリアル・ポート、パラレル・ポート、ゲーム・ポート、およびユニバーサル・シリアル・バス(USB)を含む。出力デバイス1040は、入力デバイス1036と同一種類のポートのいくつかを使用する。したがって、例えば、USBポートは、入力をコンピュータ1012に提供するため、およびコンピュータ1012から出力デバイス1040に情報を出力するために使用され得る。出力アダプタ1042は、特別なアダプタを必要とする他の出力デバイス1040のうち、モニタ、スピーカ、およびプリンタのようないくつかの出力デバイス1040が存在することを示すために提供される。出力アダプタ1042は、限定ではなく例示として、出力デバイス1040とシステム・バス1018との間の接続の方法を提供するビデオ・カードおよびサウンド・カードを含む。リモート・コンピュータ1044などの他のデバイスまたはデバイスのシステムあるいはその両方が、入力ケイパビリティおよび出力ケイパビリティの両方を提供することに留意すべきである。
【0071】
コンピュータ1012は、リモート・コンピュータ1044などの1つまたは複数のリモート・コンピュータへの論理接続を用いてネットワーク化環境において動作し得る。リモート・コンピュータ1044は、コンピュータ、サーバ、ルータ、ネットワークPC、ワークステーション、マイクロプロセッサ・ベースの機器、ピア・デバイス、または他の共通ネットワーク・ノードなどであり得、典型的には、コンピュータ1012に関連して説明される要素のうちの多くまたは全ても含み得る。簡潔にするために、メモリ・ストレージ・デバイス1046のみが、リモート・コンピュータ1044と共に示される。リモート・コンピュータ1044は、ネットワーク・インターフェース1048を通してコンピュータ1012に論理的に接続され、次いで、通信接続1050を介して物理的に接続される。ネットワーク・インターフェース1048は、ローカル・エリア・ネットワーク(LAN)、ワイド・エリア・ネットワーク(WAN)、セルラ・ネットワークなどの有線通信ネットワークまたは無線通信ネットワークあるいはその両方を包含する。LAN技術は、ファイバ分散データ・インターフェース(FDDI)、銅線分散データ・インターフェース(CDDI)、イーサネット(R)、およびトークン・リングなどを含む。WAN技術は、ポイントツーポイント・リンク、サービス総合デジタル通信網(ISDN)およびその変形のような回路交換ネットワーク、パケット交換ネットワーク、ならびにデジタル加入者回線(DSL)を含むが、これらに限定されない。通信接続1050は、ネットワーク・インターフェース1048をシステム・バス1018に接続するために利用されたハードウェア/ソフトウェアをいう。通信接続1050が、例示的に明確にするためにコンピュータ1012内に示されるが、それは、コンピュータ1012の外部にもあり得る。ネットワーク・インターフェース1048への接続のためのハードウェア/ソフトウェアが、例示目的のみのために、標準電話グレード・モデム、ケーブル・モデム、およびDSLモデムを含むモデム、ISDNアダプタ、ならびにイーサネット(R)・カードなどの内部技術および外部技術も含み得る。
【0072】
本発明は、任意の可能な技術的詳細レベルの統合におけるシステム、方法、装置、またはコンピュータ・プログラム製品、あるいはその組合せであってもよい。コンピュータ・プログラム製品は、プロセッサに本発明の態様を実行させるためのコンピュータ可読プログラム命令をその上に有するコンピュータ可読記憶媒体を含み得る。コンピュータ可読記憶媒体は、命令実行デバイスにより使用するための命令を保持し、記憶し得る有形デバイスであり得る。コンピュータ可読記憶媒体は、例えば、電子記憶デバイス、磁気記憶デバイス、光学記憶デバイス、電磁気記憶デバイス、半導体記憶デバイス、または前述したものの任意の適当な組合せであり得るが、これらに限定されない。コンピュータ可読記憶媒体のより具体的な例の非網羅的リストは、ポータブル・コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ(RAM)、読取り専用メモリ(ROM)、消去可能プログラマブル読取り専用メモリ(EPROMまたはフラッシュ・メモリ)、静的ランダム・アクセス・メモリ(SRAM)、ポータブル・コンパクト・ディスク読取り専用メモリ(CD-ROM)、デジタル多用途ディスク(DVD)、メモリ・スティック、フロッピー(R)・ディスク、パンチカードまたはその上に記録された命令を有する溝内の隆起構造などの機械的に符号化されたデバイス、および前述したものの任意の適当な組合せも含み得る。本明細書で用いられるようなコンピュータ可読記憶媒体は、本来、電波もしくは他の自由伝播する電磁波、導波管もしくは他の送信媒体を通って伝播する電磁波(例えば、光ファイバ・ケーブルを通過する光パルス)、または電線を通って送信される電気信号などの、一過性信号であると解釈されるべきではない。
【0073】
本明細書に説明されるコンピュータ可読プログラム命令は、コンピュータ可読記憶媒体からそれぞれのコンピューティング/処理デバイスに、あるいはネットワーク、例えば、インターネット、ローカル・エリア・ネットワーク、ワイド・エリア・ネットワーク、もしくはワイヤレス・ネットワーク、またはその組合せを介して外部コンピュータまたは外部ストレージ・デバイスに、ダウンロードされ得る。ネットワークは、銅伝送ケーブル、光伝送ファイバ、ワイヤレス伝送、ルータ、ファイアウォール、スイッチ、ゲートウェイ・コンピュータ、またはエッジ・サーバ、あるいはその組合せを含み得る。各コンピューティング/処理デバイス内のネットワーク・アダプタ・カードまたはネットワーク・インターフェースは、コンピュータ可読プログラム命令をネットワークから受信し、それぞれのコンピューティング/処理デバイス内のコンピュータ可読記憶媒体中の記憶用にコンピュータ可読プログラム命令を転送する。本発明の動作を実行するためのコンピュータ可読プログラム命令は、アセンブラ命令、命令セット・アーキテクチャ(ISA)命令、機械命令、機械依存命令、マイクロコード、ファームウェア命令、状態設定データ、集積回路用の構成データ、またはSmalltalk(R)、もしくはC++などのオブジェクト指向プログラミング言語、および「C」プログラミング言語もしくは類似のプログラミング言語などの手続き型プログラミング言語を含む、1つもしくは複数のプログラミング言語の任意の組合せで書かれたソース・コードもしくはオブジェクト・コードのいずれかであり得る。コンピュータ可読プログラム命令は、ユーザのコンピュータ上で完全に、ユーザのコンピュータ上で部分的に、スタンドアロン・ソフトウェア・パッケージとして、ユーザのコンピュータ上で部分的にかつリモート・コンピュータ上で部分的に、またはリモート・コンピュータもしくはサーバ上で完全に、実行し得る。後者のシナリオでは、リモート・コンピュータは、ローカル・エリア・ネットワーク(LAN)またはワイド・エリア・ネットワーク(WAN)を含む任意の種類のネットワークを通して、ユーザのコンピュータに接続され得る、あるいは、接続は、(例えば、インターネット・サービス・プロバイダを使用してインターネットを通して)外部コンピュータに対して行われ得る。いくつかの実施形態では、例えば、プログラマブル・ロジック回路、フィールド・プログラマブル・ゲート・アレイ(FPGA)、またはプログラマブル・ロジック・アレイ(PLA)を含む電子回路は、本発明の態様を実行するために、コンピュータ可読プログラム命令の状態情報を利用して電子回路を個別化することによって、コンピュータ可読プログラム命令を実行し得る。
【0074】
本発明の態様は、本発明の実施形態による、方法、装置(システム)、およびコンピュータ・プログラム製品のフローチャート図またはブロック図あるいはその両方を参照して、本明細書において説明される。フローチャート図またはブロック図あるいはその両方の各ブロック、ならびにフローチャート図またはブロック図あるいはその両方のブロックの組合せが、コンピュータ可読プログラム命令によって実施され得ると理解されたい。コンピュータまたは他のプログラマブル・データ処理装置のプロセッサによって実行する命令が、フローチャートまたはブロック図あるいはその両方の1つまたは複数のブロックにおいて指定される機能/動作を実施するための方法を生成するように、これらのコンピュータ可読プログラム命令は、汎用コンピュータ、専用コンピュータ、または機械を製造するための他のプログラマブル・データ処理装置のプロセッサに提供され得る。コンピュータ可読記憶媒体に記憶される命令を有するコンピュータ可読記憶媒体が、フローチャートまたはブロック図あるいはその両方の1つまたは複数のブロックにおいて指定される機能/動作の態様を実施する命令を含む製品を含むように、これらのコンピュータ可読プログラム命令は、また、コンピュータ、プログラマブル・データ処理装置、または他のデバイス、あるいはその組合せが特定のやり方で機能するように指示し得る、コンピュータ可読記憶媒体に記憶され得る。コンピュータ、他のプログラマブル装置、または他のデバイス上で実行する命令が、フローチャートまたはブロック図あるいはその両方の1つまたは複数のブロックにおいて指定される機能/動作を実施するように、コンピュータ可読プログラム命令は、また、コンピュータ実施されたプロセスを作り出すために、コンピュータ、他のプログラマブル装置、または他のデバイス上で一連の動作行為を実行させるコンピュータ、他のプログラマブル・データ処理装置、または他のデバイス上にロードされ得る。
【0075】
図面中のフローチャートおよびブロック図は、本発明の様々な実施形態によるシステム、方法、およびコンピュータ・プログラム製品の可能な実施態様のアーキテクチャ、機能性、および動作を示す。この点に関して、フローチャートまたはブロック図の各ブロックは、指定された論理機能を実施するための1つまたは複数の実行可能命令を含む、モジュール、セグメント、または命令の一部を表し得る。いくつかの代替的実施態様において、ブロック内に記載された機能は、図面中に記載された順序以外で発生し得る。例えば、連続して示される2つのブロックが、実際には、実質的に同時に実行され得、または、ブロックが、関係する機能性次第で逆の順序で実行されることがあり得る。ブロック図またはフローチャート図あるいはその両方の各ブロック、ならびにブロック図またはフローチャート図あるいはその両方におけるブロックの組合せが、指定された機能もしくは動作を実行し、または専用ハードウェアおよびコンピュータ命令の組合せを実行する専用ハードウェアベース・システムによって実施され得ることにも留意されたい。
【0076】
主題は、コンピュータまたは複数のコンピュータあるいはその両方の上で動作するコンピュータ・プログラム製品のコンピュータ実行可能命令の一般的状況において上述されているが、当業者は、本開示が他のプログラム・モジュールと組み合わせても実施され得ると認識するであろう。概して、プログラム・モジュールは、特定のタスクを実行しまたは特定の抽象データ型を実施し、あるいはその両方を行う、ルーチン、プログラム、コンポーネント、データ構造などを含む。さらに、本発明のコンピュータ実施方法が、シングル・プロセッサまたはマルチプロセッサ・コンピュータ・システム、ミニコンピューティング・デバイス、メインフレーム・コンピュータ、ならびに、コンピュータ、手持ち式コンピューティング・デバイス(例えば、PDA、電話)、およびマイクロプロセッサ・ベースの、またはプログラマブル消費者電子機器もしくは産業電子機器などを含む、他のコンピュータ・システム構成で実施され得ると、当業者は理解するであろう。示される態様は、通信ネットワークを通してリンクされたリモート処理デバイスによってタスクが実行される、分散型コンピューティング環境でも実施され得る。しかしながら、本開示の全てではないとしてもいくつかの態様が、スタンドアロン・コンピュータ上で実施され得る。分散型コンピューティング環境では、プログラム・モジュールは、ローカル・メモリ・ストレージ・デバイスおよびリモート・メモリ・ストレージ・デバイスの両方に位置し得る。
【0077】
本出願で使用されるように、「コンポーネント」、「システム」、「プラットフォーム」、および「インターフェース」などの用語は、コンピュータ関連エンティティ、または1つもしくは複数の特定の機能性を有する動作機械に関連するエンティティを参照し得、または含み得、あるいはその両方であり得る。本明細書で開示されたエンティティは、ハードウェア、ハードウェアおよびソフトウェアの組合せ、ソフトウェア、または実行中のソフトウェアのいずれかであり得る。例えば、コンポーネントは、プロセッサ上で実行中のプロセス、プロセッサ、オブジェクト、実行可能ファイル、実行スレッド、プログラム、またはコンピュータ、あるいはその組合せであり得るが、それらに限定されない。例示として、サーバ上で実行中のアプリケーションおよびサーバの両方が、コンポーネントであり得る。1つまたは複数のコンポーネントが、プロセスまたは実行スレッド、あるいはその両方の中に存在し得、コンポーネントは、1つのコンピュータ上に局所化され得、または2つ以上のコンピュータ間に分散され得、あるいはその両方であり得る。別の例では、それぞれのコンポーネントは、その上に記憶される様々なデータ構造を有する様々なコンピュータ可読媒体から実行し得る。コンポーネントは、1つまたは複数のデータ・パケット(例えば、ローカル・システム内の別のコンポーネント、分散型システム、またはインターネットなどのネットワークをわたって信号を介した他のシステム、あるいはその組合せと対話する1つのコンポーネントからのデータ)を有する信号などに従って、ローカル・プロセスまたはリモート・プロセスあるいはその両方を介して通信し得る。別の例として、コンポーネントは、電気回路または電子回路により動作される機械部品によって提供される特定の機能性を有する装置であり得、電気回路または電子回路は、プロセッサによって実行されるソフトウェアまたはファームウェア・アプリケーションによって動作される。そのような場合、プロセッサは、装置の内部または外部にあり得、ソフトウェアまたはファームウェア・アプリケーションの少なくとも一部を実行し得る。さらに別の例として、コンポーネントは、機械部品なしで電子コンポーネントを通して特定の機能性を提供する装置であり得、電子コンポーネントは、電子コンポーネントの機能性を少なくとも一部与えるソフトウェアまたはファームウェアを実行するためのプロセッサまたは他の方法を含み得る。ある態様において、コンポーネントは、例えばクラウド・コンピューティング・システム内で、仮想機械を介して電子コンポーネントをエミュレートし得る。
【0078】
さらに、「または」という用語は、排他的な「または」ではなく包含的な「または」を意味するように意図される。即ち、特段の指定がなく、または文脈から明白である限り、「XはAまたはBを利用する」は、当然の包含的並べ替えのいずれかを意味するように意図される。即ち、XがAを利用する、XがBを利用する、またはXがAおよびBの両方を利用する場合に、「XはAまたはBを利用する」が、前述の場合のいずれかの下で満たされる。さらに、特段の指定がない限り、または文脈から単数形を対象とすることが明らかである限り、主題の明細書および添付図面において使用されるような冠詞「a」および「an」は、概して、「1つまたは複数の」を意味するように解釈されるべきである。本明細書で使用されるように、「例」または「例示的」あるいはその両方の用語は、一例、一場合、または一例示としての役割をすることを意味するために使用される。疑義が生じることを避けるために、本明細書で開示された主題は、そのような例によって限定されない。さらに、本明細書で一「例」または一「例示的」あるいはその両方と説明される任意の態様または設計は、必ずしも他の態様または設計に対して好適または有利と解釈されるべきではなく、当業者に既知の同等の例示的な構造および技術を排除することを意味するものでもない。
【0079】
それが主題の明細書において利用されるとき、「プロセッサ」という用語は、シングルコア・プロセッサ、ソフトウェア・マルチスレッド実行ケイパビリティを有するシングル・プロセッサ、マルチコア・プロセッサ、ソフトウェア・マルチスレッド実行ケイパビリティを有するマルチコア・プロセッサ、ハードウェア・マルチスレッド技術を有するマルチコア・プロセッサ、並列プラットフォーム、および分散型共有メモリを有する並列プラットフォームを含むがこれらに限定されない、任意のコンピューティング処理ユニットまたはデバイスを実質的に参照し得る。追加的に、プロセッサは、集積回路、特定用途向け集積回路(ASIC)、デジタル信号プロセッサ(DSP)、フィールド・プログラマブル・ゲート・アレイ(FPGA)、プログラマブル・ロジック・コントローラ(PLC)、複合プログラマブル・ロジック・デバイス(CPLD)、離散ゲートもしくはトランジスタ・ロジック、離散ハードウェア・コンポーネント、または本明細書で説明された機能を実行するように設計されたそれらの任意の組合せを参照し得る。さらに、プロセッサは、空間利用率を最適化するため、またはユーザ機器の性能を拡張するために、分子および量子ドット・ベース・トランジスタ、スイッチ、ならびにゲートなど、これらに限定されないナノスケール・アーキテクチャを活用し得る。プロセッサは、コンピューティング処理ユニットの組合せとしても実施され得る。本開示において、「ストア」、「ストレージ」、「データ・ストア」、「データ・ストレージ」、「データベース」などの用語、ならびに実質的にコンポーネントの動作および機能性に関連する任意の他の情報記憶コンポーネントが、「メモリ・コンポーネント」、「メモリ」内に具現化されたエンティティ、またはメモリを含むコンポーネントを参照するために使用される。本明細書で説明されるメモリまたはメモリ・コンポーネントあるいはその両方が、揮発性メモリもしくは不揮発性メモリのいずれかであり得、または揮発性メモリおよび不揮発性メモリの両方を含み得ると理解されるべきである。限定ではなく例示として、不揮発性メモリは、ROM、PROM、EPROM、EEPROM、フラッシュ・メモリ、または不揮発性RAM(例えば、FeRAM)を含み得る。揮発性メモリは、RAMを含み得、RAMは、例えば外部キャッシュ・メモリとして動作し得る。追加的に、本明細書内のシステムまたはコンピュータ実施方法の開示されたメモリ・コンポーネントは、これらのおよび任意の他の適当な種類のメモリを含むことに限定されることなく、含むように意図される。
【0080】
上述されたものは、システム、およびコンピュータ実施方法の単なる例を含む。本開示を説明するために、コンポーネント、またはコンピュータ実施方法のあらゆる考えられる組合せを説明することは、当然ながらできないが、当業者は、本開示の多くのさらなる組合せおよび交換が可能であると認識し得る。さらに、「含む」、「有する」、および「所有する」などの用語が、発明を実施するための形態、特許請求の範囲、添付、および図面において使用される限り、そのような用語は、「備える」が特許請求の範囲で移行語として利用される際に解釈されるように、「備える」という用語と同様に包含的であることを意図する。様々な実施形態の説明は、例示の目的で提示されているが、網羅的であること、または開示される実施形態に限定することを意図するものではない。多くの修正および変形が、説明される実施形態の範囲から逸脱することなく当業者には明らかであろう。本明細書で使用される専門用語は、実施形態の原理、実際の用途、もしくは市場で見出される技術に対する技術的改善を最もよく説明するため、または本明細書に開示される実施形態を当業者が理解可能にするために、選択された。
図1(A)】
図1(B)】
図1(C)】
図2
図3
図4
図5
図6
図7
図8
図9
図10