(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-10-30
(45)【発行日】2024-11-08
(54)【発明の名称】線形フォトニックプロセッサを使用したアナログ計算のためのシステム及び方法
(51)【国際特許分類】
G06E 3/00 20060101AFI20241031BHJP
G06N 3/067 20060101ALI20241031BHJP
G06G 7/16 20060101ALI20241031BHJP
G02F 3/00 20060101ALI20241031BHJP
【FI】
G06E3/00
G06N3/067
G06G7/16
G02F3/00 501
(21)【出願番号】P 2022506291
(86)(22)【出願日】2020-07-28
(86)【国際出願番号】 US2020043841
(87)【国際公開番号】W WO2021021787
(87)【国際公開日】2021-02-04
【審査請求日】2023-07-26
(32)【優先日】2019-07-29
(33)【優先権主張国・地域又は機関】US
(32)【優先日】2019-11-22
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】520447204
【氏名又は名称】ライトマター インコーポレイテッド
【氏名又は名称原語表記】LIGHTMATTER,INC.
(74)【代理人】
【識別番号】100105957
【氏名又は名称】恩田 誠
(74)【代理人】
【識別番号】100068755
【氏名又は名称】恩田 博宣
(74)【代理人】
【識別番号】100142907
【氏名又は名称】本田 淳
(72)【発明者】
【氏名】ブナンダー、ダリアス
(72)【発明者】
【氏名】ハリス、ニコラス シー.
(72)【発明者】
【氏名】グールド、マイケル
(72)【発明者】
【氏名】レイミー、カール
(72)【発明者】
【氏名】ラゾビッチ、トモ
【審査官】佐賀野 秀一
(56)【参考文献】
【文献】特開2009-194138(JP,A)
【文献】特開2015-177204(JP,A)
【文献】特開平02-059915(JP,A)
【文献】特開平02-045815(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06E 1/00- 3/00
G06N 3/067
G06G 7/16
G02F 3/00
(57)【特許請求の範囲】
【請求項1】
符号付き数値を実装するための装置であって、
第1の端子及び第2の端子を含む光検出器と、
前記光検出器の前記第1の端子をノード又は基準電圧のいずれかに結合する第1のスイッチと、
前記光検出器の前記第2の端子を前記ノード又は電圧レールのいずれかに結合する第2のスイッチと、
制御回路類であって、
前記第1の端子を前記基準電圧に結合するように前記第1のスイッチを設定し、且つ前記第2の端子を前記ノードに結合するように前記第2のスイッチを設定することにより、正の符号付き数値出力を少なくとも部分的に生成することと、
前記第1の端子を前記ノードに結合するように前記第1のスイッチを設定し、且つ前記第2の端子を前記電圧レールに結合するように前記第2のスイッチを設定することにより、負の符号付き数値出力を少なくとも部分的に生成することとを行うように構成された前記制御回路類とを備える装置。
【請求項2】
前記光検出器は、フォトダイオードを含み、
前記第1の端子は、アノードを含み、及び
前記第2の端子は、カソードを含む、請求項1に記載の装置。
【請求項3】
前記第1のスイッチ及び前記第2のスイッチは、それぞれトランジスタスイッチを含む、請求項1に記載の装置。
【請求項4】
前記基準電圧は、接地である、請求項1に記載の装置。
【請求項5】
前記制御回路類は、符号方向ビットを出力するように構成された論理ゲートを含み、前記符号方向ビットは、
前記制御回路類によって生成された数値出力が正の符号付き数値を含むか又は負の符号付き数値を含むかを示す情報を含む、請求項1に記載の装置。
【請求項6】
前記論理ゲートは、XORゲートを含む、請求項5に記載の装置。
【請求項7】
前記論理ゲートは、入力ベクトル要素の値の符号と、入力行列要素の値の符号とを比較するように構成される、請求項5に記載の装置。
【請求項8】
光学的処理システムであって、
入力光信号を受信し、前記入力光信号を変調し、且つベクトルの要素を表す第1の光信号を出力するようにそれぞれ構成された第1の複数の光変調器と、
前記第1の複数の光変調器のうちの1つの光変調器にそれぞれ光学的に結合され、及び前記第1の光信号を受信し、前記第1の光信号を変調し、且つ前記ベクトルと行列との間の行列-ベクトル乗算の一部を表す第2の光信号を出力するように構成された第2の複数の光変調器と、
前記第2の複数の光変調器のうちの複数の光変調器にそれぞれ光学的に結合され、且つ前記第2の光信号を、前記行列-ベクトル乗算の前記一部を表す電気信号に変換するように構成された複数の光検出器であって、前記複数の光検出器の各光検出器は、第1の端子及び第2の端子を含む、前記複数の光検出器と、
第1の光検出器の前記第1の端子を出力ノード又は基準電圧のいずれかに結合する第1のスイッチと、
前記第1の光検出器の前記第2の端子を前記出力ノード又は電圧レールのいずれかに結合する第2のスイッチと、
制御回路類であって、
前記第1の光検出器の前記第1の端子を前記基準電圧に結合するように前記第1のスイッチを設定し、且つ前記第1の光検出器の前記第2の端子を前記出力ノードに結合するように前記第2のスイッチを設定することにより、正の符号付き数値出力を少なくとも部分的に生成することと、
前記第1の端子を前記出力ノードに結合するように前記第1の光検出器の前記第1のスイッチを設定し、且つ前記第2の端子を前記電圧レールに結合するように前記第1の光検出器の前記第2のスイッチを設定することにより、負の符号付き数値出力を少なくとも部分的に生成することとを行うように構成された前記制御回路類とを備える光学的処理システム。
【請求項9】
前記光検出器は、フォトダイオードを含み、
前記第1の端子は、アノードを含み、及び
前記第2の端子は、カソードを含む、請求項8に記載の光学的処理システム。
【請求項10】
前記第1のスイッチ及び前記第2のスイッチは、それぞれトランジスタスイッチを含む、請求項9に記載の光学的処理システム。
【請求項11】
前記基準電圧は、接地される、請求項9に記載の光学的処理システム。
【請求項12】
複数の電気合算回路をさらに備え、
前記複数のうちの第1の電気合算回路は、2つ以上の出力ノードに結合され、前記2つ以上の出力ノードの各出力ノードは、前記第1のスイッチ又は前記第2のスイッチを通して光検出器に結合され、
前記第1の電気合算回路は、前記2つ以上の出力ノードに結合された前記光検出器によって出力される前記行列-ベクトル
乗算の前記一部の和を表す電気信号を出力するように構成される、請求項9の光学的処理システム。
【請求項13】
前記制御回路類は、符号方向ビットを出力するように構成された論理ゲートを含み、前記符号方向ビットは、
前記制御回路類によって生成された数値出力が正の符号付き数値を含むか又は負の符号付き数値を含むかを示す情報を含む、請求項8に記載の光学的処理システム。
【請求項14】
前記論理ゲートは、XORゲートを含む、請求項13に記載の光学的処理システム。
【請求項15】
前記論理ゲートは、入力ベクトル要素の値の符号と、入力行列要素の値の符号とを比較するように構成される、請求項13に記載の光学的処理システム。
【請求項16】
光プロセッサの光検出器によって出力される符号付き数値を実装するための方法であって、
第1の端子及び第2の端子を含む光検出器を使用して、出力光信号を第1の電気信号に変換するステップと、前記出力光信号は、前記光プロセッサの一部によって出力され、
前記光プロセッサに結合された少なくとも1つの従来のプロセッサを使用して、前記第1の電気信号が正の符号付き数値を表すか又は負の符号付き数値を表すかを判定するステップと、
前記第1の電気信号が前記正の符号付き数値を表すか又は前記負の符号付き数値を表すかを判定することに応答して、前記光プロセッサの制御回路類を使用して、前記第1の端子に結合された第1のスイッチの設定及び前記第2の端子に結合された第2のスイッチの設定を調整するステップと、ここで、前記制御回路類は、
少なくとも部分的に、前記第1の端子を基準電圧に結合するように前記第1のスイッチを設定し、且つ前記第2の端子をノードに結合するように前記第2のスイッチを設定することにより、正の符号付き数値出力を生成することと、
少なくとも部分的に、前記第1の端子を前記ノードに結合するように前記第1のスイッチを設定し、且つ前記第2の端子を電圧レールに結合するように前記第2のスイッチを設定することにより、負の符号付き数値出力を生成することとを行うように構成されており、
前記第1の電気信号が正の符号付き数値を表すか又は負の符号付き数値を表すかの前記判定に基づいて、前記第1の電気信号が前記第1のスイッチ又は前記第2のスイッチのいずれかを通過するように、前記光検出器から前記第1の電気信号を出力するステップとを含む方法。
【請求項17】
前記第1のスイッチ及び前記第2のスイッチの設定を調整するステップは、前記制御回路類から前記第1のスイッチ及び前記第2のスイッチに1つ又は複数の電気信号を送ることを含み、前記第1のスイッチ及び前記第2のスイッチは、それぞれトランジスタスイッチを含む、請求項16に記載の方法。
【請求項18】
第1の光変調器を使用して、第1の光信号内のベクトルの要素を光学的に表すように入力光信号を変調するステップと、
第2の光変調器を使用して、前記出力光信号内の被加数を光学的に表すように前記第1の光信号を変調するステップと、前記被加数は、他の被加数と合算されたとき、前記ベクトルと行列の行との間の積を表し、
前記光検出器を使用して前記出力光信号を検出するステップと
をさらに含む、請求項16に記載の方法。
【請求項19】
第1のスイッチの設定及び第2のスイッチの設定を調整するステップは、論理ゲートを使用して符号方向ビットを生成することをさらに含み、前記符号方向ビットは、前記第1の電気信号が正の符号付き数値を含むか又は負の符号付き数値を含むかを示す情報を含む、請求項16に記載の方法。
【請求項20】
前記論理ゲートを使用することは、XORゲートを使用することを含む、請求項19に記載の方法。
【発明の詳細な説明】
【背景技術】
【0001】
従来の計算は、電気信号により表される情報のビットに論理ゲートを実装するために、数百万個のトランジスタの回路を含むプロセッサを使用する。従来の中央演算処理装置(CPU:central processing unit)のアーキテクチャは、汎用計算用に設計されるものの、特定のタイプのアルゴリズムに最適化されない。そのため、特定のアルゴリズムによりよく適したアーキテクチャを有する専用のプロセッサが開発されてきた。グラフィカル処理ユニット(GPU:Graphical processing unit)は、例えば、高度並列アーキテクチャを有することで、画像処理、グラフィカル操作並びにニューラルネットワーク及びディープラーニング用など、他の並列化可能なアプリケーションの実行に関してCPUよりも効率的になる。
【発明の概要】
【課題を解決するための手段】
【0002】
いくつかの実施形態は、符号付き数値を実装するための装置であって、第1の端子及び第2の端子を含む光検出器と、光検出器の第1の端子をノード又は基準電圧のいずれかに結合する第1のスイッチと、光検出器の第2の端子をノード又は電圧レールのいずれかに結合する第2のスイッチと、制御回路類であって、第1の端子を基準電圧に結合するように第1のスイッチを設定し、且つ第2の端子をノードに結合するように第2のスイッチを設定することにより、正の符号付き数値出力を少なくとも部分的に生成することと、第1の端子をノードに結合するように第1のスイッチを設定し、且つ第2の端子を電圧レールに結合するように第2のスイッチを設定することにより、負の符号付き数値出力を少なくとも部分的に生成することとを行うように構成された制御回路類とを備える装置を対象とする。
【0003】
いくつかの実施形態は、光学的処理システムであって、入力光信号を受信し、入力光信号を変調し、且つベクトルの要素を表す第1の光信号を出力するようにそれぞれ構成された第1の複数の光変調器と、第1の複数の光変調器のうちの1つの光変調器に光学的に結合され、及び第1の光信号を受信し、第1の光信号を変調し、且つベクトルと行列との間の行列-ベクトル乗算の一部を表す第2の光信号を出力するようにそれぞれ構成された第2の複数の光変調器と、第2の複数の光変調器のうちの複数の光変調器に光学的に結合され、且つ第2の光信号を、行列-ベクトル乗算の一部を表す電気信号に変換するようにそれぞれ構成された複数の光検出器であって、複数の光検出器の各光検出器は、第1の端子及び第2の端子を含む、複数の光検出器と、第1の光検出器の第1の端子を出力ノード又は基準電圧のいずれかに結合する第1のスイッチと、第1の光検出器の第2の端子を出力ノード又は電圧レールのいずれかに結合する第2のスイッチと、制御回路類であって、第1の光検出器の第1の端子を基準電圧に結合するように第1のスイッチを設定し、且つ第1の光検出器の第2の端子を出力ノードに結合するように第2のスイッチを設定することにより、正の符号付き数値出力を少なくとも部分的に生成することと、第1の端子を出力ノードに結合するように第1の光検出器の第1のスイッチを設定し、且つ第2の端子を電圧レールに結合するように第1の光検出器の第2のスイッチを設定することにより、負の符号付き数値出力を少なくとも部分的に生成することとを行うように構成された制御回路類とを備える光学的処理システムを対象とする。
【0004】
いくつかの実施形態は、光プロセッサの光検出器によって出力される符号付き数値を実装するための方法であって、第1の端子及び第2の端子を含む光検出器を使用して、出力光信号を第1の電気信号に変換するステップと、出力光信号は、光プロセッサの一部によって出力され、光プロセッサに結合された少なくとも1つの従来のプロセッサを使用して、第1の電気信号が正の符号付き数値を表すか又は負の符号付き数値を表すかを判定するステップと、第1の電気信号が正の符号付き数値を表すか又は負の符号付き数値を表すかを判定することに応答して、光プロセッサの制御回路類を使用して、第1の端子に結合された第1のスイッチの設定及び第2の端子に結合された第2のスイッチの設定を調整するステップと、ここで、制御回路類は、第1の端子を基準電圧に結合するように第1のスイッチを設定し、且つ第2の端子をノードに結合するように第2のスイッチを設定することにより、正の符号付き数値出力を少なくとも部分的に生成することと、第1の端子をノードに結合するように第1のスイッチを設定し、且つ第2の端子を電圧レールに結合するように第2のスイッチを設定することにより、負の符号付き数値出力を少なくとも部分的に生成することとを行うように構成されており、第1の電気信号が正の符号付き数値を表すか又は負の符号付き数値を表すかの判定に基づいて、第1の電気信号が第1のスイッチ又は第2のスイッチのいずれかを通過するように、光検出器から第1の電気信号を出力するステップとを含む方法を対象とする。
【0005】
いくつかの実施形態は、行列-ベクトル乗算演算を実装するための光プロセッサであって、入力光信号を受信し、入力光信号を変調し、且つベクトルの要素を表す第1の光信号を出力するようにそれぞれ構成された第1の複数の光変調器と、第1の複数の光変調器のうちの1つの光変調器に光学的に結合され、及び第1の光信号を受信し、第1の光信号を変調し、且つベクトルと行列との間の行列-ベクトル乗算の一部を表す第2の光信号を出力するようにそれぞれ構成された第2の複数の光変調器と、第2の複数の光変調器のうちの複数の光変調器に結合され、且つ第2の光信号を、行列-ベクトル乗算の一部を表す電気信号に変換するようにそれぞれ構成された複数の光検出器と、ベクトル及び/又は行列の値がゼロを含む場合、光信号又は電気信号の送信を防止することにより、行列-ベクトル乗算演算でゼロの値を実装するように構成された複数のスイッチであって、複数のスイッチのうちのスイッチは、第1の複数の光変調器のそれぞれ又は複数の光検出器のそれぞれの出力に結合される、複数のスイッチとを備える光プロセッサを対象とする。
【0006】
いくつかの実施形態は、光プロセッサを使用して行列-ベクトル行乗算演算を実行する方法であって、第1の光変調器を使用して、第1の光信号内のベクトルの要素を光学的に表すように入力光信号を変調するステップと、第2の光変調器を使用して、第2の複数の光信号内の被加数を光学的に表すように第1の光信号を変調するステップと、被加数は、合算されたとき、ベクトルの要素と行列の行との間の積を表し、光検出器を使用して、第2の複数の光信号を複数の被加数電気信号に変換するステップと、ベクトルの要素の値がゼロに等しい場合、第1の光変調器の出力に結合されたスイッチに、第1の光信号の、第2の光変調器への送信を防止させ、且つ/又は行列の行の1つ又は複数の要素の値がゼロに等しい場合、光検出器の出力に結合された1つ又は複数のスイッチに、被加数電気信号の送信を防止させるステップとを含む方法を対象とする。
【0007】
いくつかの実施形態は、少なくとも1つの非一時的コンピュータ可読媒体であって、少なくとも1つの光プロセッサによって実行されると、光プロセッサに、第1の光変調器を使用して、第1の光信号内のベクトルの要素を光学的に表すように入力光信号を変調するステップと、第2の光変調器を使用して、第2の複数の光信号内の被加数を光学的に表すように第1の光信号を変調するステップと、被加数は、合算されたとき、ベクトルと行列の行との間の積を表し、光検出器を使用して、第2の複数の光信号を複数の被加数電気信号に変換するステップと、ベクトルの要素の値がゼロに等しい場合、第1の光変調器の出力に結合されたスイッチに、第1の光信号の、第2の光変調器への送信を防止させ、且つ/又は行列の行の1つ又は複数の要素の値がゼロに等しい場合、光検出器の出力に結合された1つ又は複数のスイッチに、被加数電気信号の送信を防止させるステップとの方法を実行させる命令を含む少なくとも1つの非一時的コンピュータ可読媒体を対象とする。
【0008】
いくつかの実施形態は、光プロセッサを使用して行列-行列演算を実行する方法であって、第1の行列を第1の光サブプロセッサにプログラムするステップと、第2の行列を第2の光サブプロセッサにプログラムするステップと、第2の光サブプロセッサは、第1の光サブプロセッサの出力に結合される入力を含んでおり、光信号として、複数のワンホットベクトルを第1の光サブプロセッサに入力するステップと、第2の光サブプロセッサから、第1の行列と第2の行列との乗算の一部を表す出力ベクトルを出力するステップとを含む方法を対象とする。
【0009】
いくつかの実施形態は、行列-行列演算を実行するように構成された光プロセッサであって、ワンホットベクトルと第1の行列との行列-ベクトル乗算を光学的に実行して、第1のベクトルを得るように構成された第1の光サブプロセッサと、第1の光サブプロセッサから出力信号を受信し、且つ第1のベクトルと第2の行列との行列-ベクトル乗算を光学的に実行するように構成された第2の光サブプロセッサとを備える光プロセッサを対象とする。
【0010】
いくつかの実施形態は、行列-行列演算を実行するように構成された光プロセッサであって、第1の光サブプロセッサであって、入力光信号を受信し、入力光信号を変調し、且つワンホットベクトルの要素を表す第1の光信号を出力するようにそれぞれ構成された第1の複数の光変調器と、第1の複数の光変調器のうちの1つの光変調器に光学的に結合され、及び第1の光信号を受信し、第1の光信号を変調し、且つワンホットベクトルと第1の行列との間の行列-ベクトル乗算の一部を表す第2の光信号を出力するようにそれぞれ構成された第2の複数の光変調器と、第2の複数の光変調器のうちの1つの光変調器に結合され、且つ第2の光信号を、行列-ベクトル乗算の一部を表す電気信号に変換するように構成された第1の複数の光検出器と、第1の複数の光検出器の2つ以上の光検出器の出力に結合され、且つ行列-ベクトル乗算の一部の合算の結果として生じるベクトルの要素を表す電気信号を出力するようにそれぞれ構成された第1の複数の電気合算部とを含む第1の光サブプロセッサと、第2の光サブプロセッサであって、第1の光サブプロセッサの複数の電気合算部のうちの電気合算部から出力電気信号をそれぞれ受信する、第3の複数の光変調器であって、入力光信号を受信し、受信された出力電気信号に従って入力光信号を変調し、且つベクトルの要素を表す第3の光信号を出力するようにそれぞれ構成される、第3の複数の光変調器と、第3の複数の光変調器のうちの1つの光変調器に光学的に結合され、及びベクトルの要素を表す第3の光信号を受信し、第3の光信号を変調し、且つ第1の行列と第2の行列との間の行列-行列乗算の一部を表す第4の光信号を出力するようにそれぞれ構成された第4の複数の光変調器と、第3の複数の光変調器のうちの1つの光変調器に結合され、且つ第3の光信号を、行列-行列乗算の一部を表す電気信号に変換するようにそれぞれ構成された第2の複数の光検出器と、第2の複数の光検出器の2つ以上の光検出器の出力に結合され、且つ行列-行列乗算の一部の合算の結果として生じる行列の要素を表す電気信号を出力するようにそれぞれ構成された第2の複数の電気合算部とを含む第2の光サブプロセッサとを備える光プロセッサを対象とする。
【0011】
様々な態様及び実施形態を、以下の図面を参照しながら説明する。図面は、必ずしも縮尺通りに描かれていないことを理解されたい。図面では、様々な図面に図示される同一又はほぼ同一の構成要素は、それぞれ類似した数字によって表される。理解し易いように、すべての図面においてすべての構成要素に符号を付していない場合がある。
【図面の簡単な説明】
【0012】
【
図1】本明細書に記載の技術のいくつかの実施形態による、フォトニック処理システムの一例を図示する概略図である。
【
図2】本明細書に記載の技術のいくつかの実施形態による、線形フォトニックプロセッサを図示する概略図である。
【
図3A】本明細書に記載の技術のいくつかの実施形態による、行列-ベクトル演算を実装するためのフォトニックアーキテクチャの一例を図示するブロック図である。
【
図3B】本明細書に記載の技術のいくつかの実施形態による、電気経路の長さを最小にするためのフォトニックアーキテクチャのレイアウトの一例を図示するブロック図である。
【
図4A-4C】本明細書に記載の技術のいくつかの実施形態による、光学的にゼロを表すように構成された強度変調器の説明のための例である。
【
図5】本明細書に記載の技術のいくつかの実施形態による、波長分割多重方式(WDM:wavelength division multiplexing)を含むフォトニックアーキテクチャの一例を図示するブロック図である。
【
図6A】本明細書に記載の技術のいくつかの実施形態による、符号付き値を実装するための回路の概略図である。
【
図6B】本明細書に記載の技術のいくつかの実施形態による、符号付き値を実装するためのブール回路の概略図である。
【
図7】本明細書に記載の技術のいくつかの実施形態による、符号ビットを分配するための光回路の概略図である。
【
図8】本明細書に記載の技術のいくつかの実施形態による、符号付き値を実装するためのプロセスを図示するフローチャートである。
【
図9A】本明細書に記載の技術のいくつかの実施形態による、部分行列に配列されたフォトニックプロセッサを図示する概略図である。
【
図9B】本明細書に記載の技術のいくつかの実施形態による、部分行列に配列されたフォトニックプロセッサを図示する概略図である。
【
図9C】本明細書に記載の技術のいくつかの実施形態による、部分行列に配列されたフォトニックプロセッサを図示する概略図である。
【
図9D】本明細書に記載の技術のいくつかの実施形態による、部分行列に配列されたフォトニックプロセッサを図示する概略図である。
【
図10A】本明細書に記載の技術のいくつかの実施形態による、部分行列に配列され、それらの出力がローカルに合算されるフォトニックプロセッサを図示する概略図である。
【
図10B】本明細書に記載の技術のいくつかの実施形態による、部分行列に配列され、それらの出力がローカルに合算されるフォトニックプロセッサを図示する概略図である。
【
図11】本明細書に記載の技術のいくつかの実施形態による、複数の波長を有する入力光を使用するように構成されたフォトニックプロセッサを図示する概略図である。
【
図12A】本明細書に記載の技術のいくつかの実施形態による、複数の波長の光で使用するように構成された光コンバイナの概略図である。
【
図12B】本明細書に記載の技術のいくつかの実施形態による、
図12Aのコンバイナの自由スペクトル範囲(FSR:free-spectral-range)の説明のためのプロットである。
【
図12C】本明細書に記載の技術のいくつかの実施形態による、
図12Aのコンバイナの数個の波長の関数としての伝送の説明のためのプロットである。
【
図13A】本明細書に記載の技術のいくつかの実施形態による、疎ベクトル及び/又は行列を実装するように構成されたフォトニックプロセッサを図示するブロック図である。
【
図13B】本明細書に記載の技術のいくつかの実施形態による、疎ベクトル及び/又は行列を実装するように構成されたフォトニックプロセッサを図示するブロック図である。
【
図13C】本明細書に記載の技術のいくつかの実施形態による、疎ベクトル及び/又は行列を実装するように構成されたフォトニックプロセッサを図示するブロック図である。
【
図14】本明細書に記載の技術のいくつかの実施形態による、疎ベクトル及び/又は行列を含む行列-ベクトル演算を実行するプロセスを図示するフローチャートである。
【
図15A】本明細書に記載の技術のいくつかの実施形態による、フォトニックプロセッサの信号読み出し方法を図示する概略図である。
【
図15B】本明細書に記載の技術のいくつかの実施形態による、フォトニックプロセッサの信号読み出し方法を図示する概略図である。
【
図15C】本明細書に記載の技術のいくつかの実施形態による、フォトニックプロセッサの信号読み出し方法を図示する概略図である。
【
図15D】本明細書に記載の技術のいくつかの実施形態による、フォトニックプロセッサの信号読み出し方法を図示する概略図である。
【
図16A】本明細書に記載の技術のいくつかの実施形態による、クラスター状の読み出し回路を有するフォトニックプロセッサのアーキテクチャを図示する概略図である。
【
図16B】本明細書に記載の技術のいくつかの実施形態による、クラスター状の読み出し回路を有するフォトニックプロセッサのアーキテクチャを図示する概略図である。
【
図16C】本明細書に記載の技術のいくつかの実施形態による、クラスター状の読み出し回路を有するフォトニックプロセッサのアーキテクチャを図示する概略図である。
【
図16D】本明細書に記載の技術のいくつかの実施形態による、クラスター状の読み出し回路を有するフォトニックプロセッサのアーキテクチャを図示する概略図である。
【
図17】本明細書に記載の技術のいくつかの実施形態による、行列-行列演算を実装するように構成されたフォトニックプロセッサのブロック図である。
【
図18】本明細書に記載の技術のいくつかの実施形態による、フォトニックプロセッサを使用する行列-行列演算を実行するプロセスを図示するフローチャートである。
【発明を実施するための形態】
【0013】
電気回路をベースにしたプロセッサは、インピーダンスなどの電気特性により、速度及び効率に関する制限に直面する。例えば、メモリに複数のプロセッサコアを接続し、且つ/又は1つのプロセッサコアを接続するために、インピーダンスが非ゼロである導電性トレースを使用する。インピーダンスの値が大きいと、トレースを通して無視できるビット誤り率でデータ転送が可能である最高速度が制限される。何十億もの演算が必要な処理の場合、これらの遅延は、かなりの時間の損失になる場合がある。電気回路の速度効率が不十分であることに加えて、回路のインピーダンスによって引き起こされたエネルギーの散逸によって生じた熱も、電気プロセッサを開発する際に障壁となる。
【0014】
本発明者らは、電気信号の代わりに光信号を使用するか、又は光信号を電気信号と組み合わせて使用すると、前述の電気的計算に関する問題の多くを克服することを認識し、理解している。光信号は、光速で光が進む媒体中を移動する。このため、フォトニック信号の待ち時間は、電気伝播遅延よりもはるかに制限が少ない。加えて、電力は、光信号が進む距離を増やしても散逸されず、電気信号を使用すれば実現可能でなかった新たなトポロジ及びプロセッサのレイアウトをもたらす。このため、フォトニックベースのプロセッサなどの光ベースのプロセッサは、従来の電気プロセッサよりも優れた速度性能及び効率性能を有し得る。
【0015】
本発明者らは、フォトニックベースのプロセッサなど、光ベースのプロセッサが特定のタイプのアルゴリズムによく適している場合があることを認識し、理解している。例えば、多くの機械学習アルゴリズム、例えばサポートベクターマシン、人工ニューラルネットワーク、確率グラフフィカルモデル学習は、多次元アレイ/テンソルでの線形変換に大きく依拠する。最も単純な例は、ベクトルを行列で乗算することであり、これは、従来のアルゴリズムを使用すると、およそO(N2)程度の計算量を有する。ここで、Nは、同じ次元のベクトルで乗算される正方行列の次元数である。本発明者らは、フォトニックベースのプロセッサが、アクティブな光学部品の構成可能なアレイを通して入力光信号の特定のセットを伝播させることにより、高度に並列化された方法で行列乗算などの線形変換を実行できることを認識し、理解している。このような実装形態を使用すると、次元N=512の行列-ベクトル乗算は、従来の電子回路ベースの処理を使用した場合の数十~数百ナノ秒とは対照的に、数百ピコ秒で完了することができる。
【0016】
汎用行列-行列(GEMM:General matrix-matrix)演算は、グラフィカル処理、人工知能、ニューラルネットワーク及びディープラーニングのソフトウェアを含むソフトウェアアルゴリズムで広く普及している。現代のコンピュータでは、GEMM計算は、通常、GPUシステム又はシストリックアレイシステムなど、トランジスタベースのシステムを使用して実行される。GEMM計算は、入力行列の要素を表す干渉計のメッシュアレイを使用して、入力ベクトルの要素を表す入力光信号のアレイを混合することにより、フォトニックドメインにおいて実行することも可能である。
【0017】
フォトニックアレイを使用する行列-ベクトル乗算は、光信号が最小限の損失で半導体基板内を伝播することができるため、電子的なものと比較して非常に電力効率がよくなる可能性がある。本発明者らは、このようなフォトニックアレイの使用に関連して多くの課題があることを認識し、理解している。干渉は、ユニタリ行列によって数学的に記述されるが、スキームは、干渉計のメッシュアレイに故意に損失を加えることにより、任意の線形変換に一般化することができる。しかしながら、フォトニックアレイは、位相依存の損失を示さない、実質上損失がない干渉計を使用する場合が多い。この特性により、システム内で許容可能な変調方式が限定される可能性がある。特に、高帯域(例えば、100GHzまで)の接合ベースの変調方式が使用できなくなる。加えて、各光路が「見る」光学機器の数は、行列の次元数とともに増減する。これにより、各光信号に与えられる損失の量は、行列が大きいほど大きくなる。現実の世界では変調器の挿入損失が非ゼロであるため、このようなフォトニック処理システムで表すことが可能な行列のサイズに実際的な制限が設定される。その上、行列の要素をアルゴリズムによって各干渉計の位相設定に変換しなければならないため、行列を干渉計のアレイにプログラムすることは、困難な課題となり得る。
【0018】
そのため、本発明者らは、GEMM演算の中核をなす演算である行列-ベクトル乗算を実行するための新規なフォトニック処理アーキテクチャであって、上記の課題を回避又は軽減する新規なフォトニック処理アーキテクチャを開発した。フォトニック処理アーキテクチャは、光信号のアレイの強度を変調して入力ベクトルの要素を符号化することと、光信号のアレイを減衰又は増幅させて、入力行列の要素と入力ベクトルの要素との間の乗算を実行することと、出力検出器のアレイで光信号を検出することと、結果として得られた光検出器電流を合算して、行列-ベクトル積を表す最終出力結果を生成することとによって行列-ベクトル乗算を実行する。
【0019】
本発明者らは、このようなフォトニック処理アーキテクチャが、演算のために非干渉性光(例えば、電磁波が一定期間にわたって互いに固定され、且つ予測可能な位相関係を維持しない光)を利用できることを認識し、理解している。非干渉性光光源のアレイを使用する利点は、位相修正スキーム(例えば、熱ドリフト及び/又は装置製造上の不具合を修正すること)が必要ないことである。加えて、本発明者らは、このようなフォトニック処理アーキテクチャでは、行列要素を減衰器内で直接符号化することが可能であることを認識し、理解している。最後に、本発明者らは、このようなフォトニック処理アーキテクチャでの光路が、符号化される行列のサイズにかかわらず、2つの変調器(例えば、ベクトル変調器及び行列変調器)を通過することを認識している。このように、本明細書に記載のフォトニック処理アーキテクチャにより、フォトニックベースのGEMMプロセッサの電力効率という利点を維持しつつ、振幅と位相変調とが結合された変調方式並びに動的損失、行列のサイズでは測れない損失スケーリング及びより直接的な符号化方式が可能になる。
【0020】
以下では、線形フォトニックプロセッサを使用してGEMM演算を実行するための技法に関する様々な概念及びそれら技法の実施形態についてより詳細に説明する。本明細書に記載の様々な態様は、多くの方法のいずれにおいても実装できることを理解されたい。特定の実装形態の例は、単に説明目的でのみ本明細書に記載される。加えて、下記の実施形態に記載される様々な態様は、単独で又は任意の組み合わせにおいて使用することができ、本明細書に明示的に記載される組み合わせに限定されない。
【0021】
図1は、本明細書に記載の技術のいくつかの実施形態による、フォトニック処理技法を実装するフォトニック処理システムの概略図である。フォトニック処理システム100は、コントローラ102と、光源108と、フォトニックプロセッサ110とを含む。フォトニック処理システム100は、外部のプロセッサ(例えば、CPU)からの入力として、入力ビットストリングの群によって表される入力ベクトル及び/又は行列を受け取り、出力ビットストリングの群によって表される出力ベクトル及び/又は行列を生成する。例えば、入力ベクトルがM次元ベクトルである場合、入力ベクトルは、M個の別々のビットストリングであって、各自がベクトルのそれぞれの構成要素を表すビットストリングによって表すことができる。代わりに又は加えて、例えば入力行列がN×N型の行列である場合、入力行列は、N
2個の別々のビットストリングであって、各自が入力行列のそれぞれの構成要素を表すビットストリングによって表すことができる。入力ビットストリングは、外部のプロセッサからの電気信号又は光信号として受信することができ、出力ビットストリングは、外部のプロセッサへの電気信号又は光信号として送信することができる。
【0022】
いくつかの実施形態では、コントローラ102は、必ずしもプロセスの繰り返し後に毎回出力ビットストリングを出力するとは限らない。代わりに、コントローラ102は、1つ又は複数の出力ビットストリングを使用して、フォトニック処理システム100の構成部品を通して送給する新たな入力ビットストリームを決定し得る。いくつかの実施形態では、出力ビットストリング自体は、フォトニック処理システム100によって実装されたプロセスに後続する繰り返しのための入力ビットストリングとして使用することができる。他の実施形態では、複数の出力ビットストリームを様々な方法で組み合わせて、後続する入力ビットストリングを決定する。例えば、1つ又は複数の出力ビットストリングを後続する入力ビットストリングの決定の一部として一緒に合算することができる。
【0023】
いくつかの実施形態では、コントローラ102は、光源108及び/又はフォトニックプロセッサ110を制御するためのプロセッサ104およびメモリ106を含む。メモリ106を使用して、入力ビットストリング及び出力ビットストリング並びに/又はフォトニックプロセッサ110からの結果を格納することができる。メモリ106は、プロセッサ104による実行時、フォトニックプロセッサ110の光源108及び/又は制御構成部品(例えば、符号器、移相器及び/又は検出器)を制御する実行可能命令も格納し得る。例えば、メモリ106は、発生した計算反復の数に基づいて、フォトニックプロセッサ110に送る新たな入力値をプロセッサ104に決定させる実行可能命令を格納し得る。このように、フォトニック処理システム100によって外部のプロセッサに送信された出力行列は、一回のみの乗算演算ではなく、複数回の累積した乗算演算の結果であり得る。別の実施形態では、フォトニック処理システム100による計算の結果は、メモリ106に格納される前にプロセッサ104によってデジタル的に演算され得る。ビットストリングに対する演算は、線形であり得るだけでなく、非線形又はより大まかに言えばチューリング完全な演算でもあり得る。
【0024】
光源108は、本技術のいくつかの実施形態に従い、N個の光信号をフォトニックプロセッサ110に供給するように構成され得る。光源108は、例えば、N個の光信号を生成するように構成された1つ又は複数の干渉性光光源及び/又は非干渉性光光源を含み得る。光学光源108は、いくつかの実施形態では、波長λ0で光を発するように構成されたレーザを含み得る。放射光の波長は、電磁スペクトラムの可視部分、赤外線(近赤外線、中赤外線及び遠赤外線を含む)部分又は紫外線部分にあり得る。いくつかの実施形態では、λ0は、O-バンド、C-バンド又はL-バンドにあり得る。いくつかの実施形態では、光学光源108は、異なる波長λ1、λ2、...、λnで光を発するように構成された複数のレーザを含み得る。
【0025】
光源108の各出力は、本明細書に記載の技術のいくつかの実施形態に従い、フォトニックプロセッサ110の単一の入力に1対1で結合され得る。いくつかの実施形態では、光源108は、フォトニックプロセッサ110と同じ基板(例えば、同じチップ)上に設けられ得る。このような実施形態では、光信号は、光源108から、同じ基板上に設けられた導波路(例えば、シリコンフォトニック導波路)内のフォトニックプロセッサ110に送信され得る。他の実施形態では、光源108は、フォトニックプロセッサ110とは別の基板上に設けられ得る。このような実施形態では、光信号は、1つ又は複数の光ファイバを通して光源108からフォトニックプロセッサ110に送信され得る。
【0026】
フォトニックプロセッサ110は、本明細書に記載の技術のいくつかの実施形態に従い、行列-ベクトル乗算演算、行列-行列乗算演算及び/又はテンソル-テンソル乗算演算を実行し得る。いくつかの実施形態では、フォトニックプロセッサ110は、2つの部分、すなわち光源108からの光信号の振幅及び/又は強度の入力ベクトル、行列及び/又はテンソルの要素を符号化するように構成された変調器(例えば、
図2の振幅変調器204及び208を参照されたい)と、光信号を検出し、符号化された要素の積に比例した電気信号に変換するように構成された光検出器(例えば、
図2の検出器210を参照されたい)とを含む。フォトニックプロセッサ110は、これらの電気信号をさらに処理するためにコントローラ102及び/又は外部のプロセッサに出力する。
【0027】
いくつかの実施形態では、入力行列又はテンソルの1つ又は複数は、大きすぎて、単一の光路を使用してフォトニックプロセッサで符号化することができない可能性がある。このような状況では、大きい行列の1つの部分をフォトニックプロセッサで符号化することができ、大きい1つの行列及び/又は大きい複数の行列のその1つの部分のみについて乗算プロセスを実行することができる。こうした第1の演算の結果をメモリ106に格納することができる。続いて、大きい行列の第2の部分をフォトニックプロセッサで符号化することができ、第2の乗算プロセスを実行することができる。この大きい行列の「タイリング」は、大きい行列のすべての部分に対して乗算プロセスを実行し終えるまで継続することができる。次に、複数回の乗算プロセスの結果は、メモリ106に格納され得るが、これらの結果を組み合わせてテンソル乗算演算の最終結果を形成することができる。
【0028】
いくつかの実施形態では、フォトニックプロセッサ110は、N個の別々の光パルスを電気信号に変換することができる。いくつかの実施形態では、光パルスのそれぞれの強度及び/又は位相は、少なくとも
図2及び
図3に関連して、より詳細に説明するように、フォトニックプロセッサ110内の光検出器によって測定することができる。次に、それらの測定値を表す電気信号は、さらなる計算及び/又は表示で使用するために電気的に合算し、且つ/又はコントローラ102に出力することができる。
【0029】
図2は、本明細書に記載の技術のいくつかの実施形態による、線形フォトニックプロセッサ200の一例を図示する概略図である。線形フォトニックプロセッサ200は、
図1に関連して説明したようなフォトニック処理システム100の光源108及びフォトニックプロセッサ110として実装することができる。
【0030】
いくつかの実施形態では、線形フォトニックプロセッサ200は、行列-ベクトル乗算演算を実行するように構成することができる。
【0031】
【0032】
【数2】
は、Q個の要素を有する入力ベクトルであり、
【0033】
【数3】
は、P個の要素を有する出力ベクトルである。光源202は、Q個の第1の振幅変調器204に送られる干渉性光又は非干渉性光を生成することができる。光源202は、いくつかの実施形態では、第1の振幅変調器204と同じ基板上に配置することができ、フォトニック導波路を通して光を第1の振幅変調器204に送ることができる。いくつかの実施形態では、光源202は、第1の振幅変調器204と異なる基板上に配置することができ、光ファイバを通して光を少なくとも部分的に第1の振幅変調器204に送ることができる。
【0034】
いくつかの実施形態では、第1の振幅変調器204は、(例えば、
図1におけるようにコントローラからの)それぞれの入力ビットストリングに基づいて、入力ベクトルの要素を、光源202から受信された光信号の振幅に符号化するように構成することができる。変調のメカニズムには、例えば、電気機械変調、プラズマ分散変調、電気光学変調(χ
(2),χ
(3),χ
(4)...)、熱光学変調及び/又は圧電電気光学変調が含まれ得る。I
jは、j番目の第1の振幅変調器の入力である受信光信号の強度であるとする。第1の振幅変調器jは、それぞれ光の強度を変調して、第1の振幅変調器jが、それぞれ強度x
jI
jを有する第1の光信号を出力するようにx
jの値を符号化する。
【0035】
いくつかの実施形態では、第1の振幅変調器204は、DAC(描かれていない)によって制御された可変減衰器又は任意の他の適切な振幅変調器であり得、それは、コントローラ(例えば、
図1のコントローラ102)によってさらに制御することができる。いくつかの振幅変調器が電気通信用途で知られており、いくつかの実施形態で使用することができる。いくつかの実施形態では、可変ビームスプリッタを第1の振幅変調器204として使用することができ、この場合、可変ビームスプリッタの1つの出力のみが維持され、他の出力は、廃棄又は無視される。いくつかの実施形態で使用することが可能な振幅変調器の他の例には、進行波変調器、キャビティベースの変調器、フランツ-ケルディシュ変調器、プラスモンベースの変調器、2D材料ベースの変調器及びナノオプト電気機械スイッチ(NOEMS:nano-opto-electromechanical switch)が含まれる。
【0036】
いくつかの実施形態では、第1の振幅変調器204からの第1の光信号は、log2(P)回に分割され、フォトニック導波路206を使用してP個の第2の振幅変調器208に送信することができる。フォトニック導波路206は、例えば、シリコンフォトニック導波路又は任意の他の適切な誘電性フォトニック導波路材料を含むことができる。分割された後の(例えば、それぞれの第2の振幅変調器208が受け取ったときの)第1の光信号の強度は、xjIj/Pである。
【0037】
いくつかの実施形態では、第2の振幅変調器208は、それぞれ行列wの1つの要素の1つの値を符号化するように構成することができる。第2の振幅変調器208は、第1の振幅変調器204と同じ種類の変調器であり得るか、又は代わりに第1の振幅変調器204と異なる種類の変調器であり得る。行列w全体を表すために、合計P×Q個の第2の振幅変調器が存在し得る。強度xjIj/Pを有する受信された第1の光信号は、行列wのp番目の行において第2の振幅変調器208によって変調されて、強度wpjxjIj/Pを有する第2の光信号を生成することができる。この光の強度は、出力光信号の振幅における行列要素wpjとベクトル要素xjとの乗算を表す。
【0038】
いくつかの実施形態では、それぞれの第2の振幅変調器208によって出力される出力第2光信号を光検出器210に送信し、この光検出器を使用して検出することができる。光検出器210は、例えば、検出器に入射する光の強度に比例する光電流を生成するように構成された光検出器であり得る。特に、行pの列jに位置する光検出器210によって生成された光電流は、
【0039】
【数4】
である。いくつかの実施形態では、光検出器210は、例えば、2019年5月14日に出願された、「光差動低ノイズ受信器及び関連方法(Optical Differential Low-Noise Receivers and Related Methods)」という名称の米国特許出願公開第2020-0228077号明細書に記載されるような光検出器であり得、その全体が参照により本明細書に組み込まれる。
【0040】
いくつかの実施形態では、各行において光検出器210から生成された光電流は、組み合わされて、合算された出力
【0041】
【数5】
を生成することができる。この合算された出力は、出力ベクトル
【0042】
【数6】
の要素を表し、この出力ベクトルは、ベクトル
【0043】
【数7】
と行列wの行との積である。この合算は、例えば、導電性トレース212(例えば、金属トレース)を使用して、単一行のすべての光検出器のすべてのカソードを一緒に接続することによって実行することができる。いくつかの実施形態では、合算された光電流の値は、トランスインピーダンス増幅器(TIA:transimpedance amplifier)と、適切なビット幅及び精度を有するアナログ-デジタル変換器(ADC:analog-to-digital converter)との組み合わせを使用して読み出すことができる。次に、読み出した値は、さらなる計算及び/又はアプリケーションで使用するためにコントローラ(例えば、
図1のコントローラ102)に返すことができる。
【0044】
いくつかの実施形態では、光検出器210の数は、第2の振幅変調器208によって出力される光信号を同じ検出器にルーティングすることによって減らされ得ることが理解され得る。行列-ベクトル乗算情報は、光検出器によって生成された光電流に正比例する光の強度に符号化されるため、この変更があっても、これまで通り適切な電気信号出力を生成することになる。同じ検出器にルーティングされた信号間の望ましくない干渉を防ぐために、十分に非干渉性の光源を使用することが可能であるか、又は第1の出力信号が最初に到着し、第2の出力信号が第1の出力信号の後に到着し、第3の出力信号が第2の出力信号の後に到着するなどのように続くように、光検出器210を時間多重化することも可能である。検出器読み出し回路類は、このような実施形態では、蓄積された電荷を蓄積するために電気蓄積回路を使用することができる。
【0045】
先行技術のフォトニック処理アーキテクチャでは、行列wを符号化する変調器への入力は、計算コストの高い分解手順を使用して計算しなければならない。説明した線形フォトニックプロセッサ200では、各行列変調器への入力は、行列w自体の要素であり、光学計算を実行する前の分解は、全く必要ない。
【0046】
加えて、先行技術のフォトニック処理アーキテクチャによって使用される「位相-空間」表現ではなく、行列wの「ユークリッド空間」表現の直接の結果として、上記の線形フォトニック処理アーキテクチャでは、NxN型の行列に対してN2個の光路があり、それぞれw行列の単一の要素と関連付けられる。この結果は、このアーキテクチャの性能及びスケーリングにとって2つの重要な意味を有する。
【0047】
第1に、各光路は、表現される行列のサイズにかかわらず、2つの変調器を含む。対照的に、一部のフォトニック処理アーキテクチャでは、光路にO(N)個の変調器が含まれる。現実の世界の変調器は、非ゼロの挿入損失を受けるため、所与の許容可能な光損失に対して表現できる行列のサイズが制限される。上述した線形フォトニックプロセッサ200は、行列サイズに関するこの制限を受けない。
【0048】
第2に、他のフォトニック処理アーキテクチャでは、各行列要素は、概して、光アレイを通る多くの光路と関連付けられる。任意の所与の「位相-空間」変調器を通過する経路の数は、表現された行列の多くの要素に影響を与える。その上、特定の変調器によって影響を受ける要素の数は、一定ではないため、エラー感度が不均一になる。例えば、変調器アレイの中心付近の変調器の感度は、縁又は隅にある変調器よりもはるかに高い可能性がある。これは、中心の変調器が、縁又は隅にある変調器よりも入力光信号の数が多い伝播経路にあるからである。対照的に、上記の線形フォトニックプロセッサ200における各「ユークリッド空間」行列変調器のエラーは、行列要素のその特定の値にのみ影響を与える。
【0049】
いくつかの実施形態では、上記の線形フォトニックプロセッサ200は、フォトニック処理アーキテクチャ内の(例えば、導波路206の)フォトニックの交差の数を減らし得ることがさらに理解され得る。行列-ベクトル乗算のデータフローの性質上(例えば、単一のベクトル要素が複数の行に一斉送信され、各行の異なる列からの信号がひとまとめにされて、単一出力のベクトル要素が生成される場合がある)、フォトニックドメイン又は電気ドメインに存在し得るデータ経路を交差させることが本質的に存在する。例えば、フォトニックプロセッサの場合、部分積Mijxjを求めることは、xjを複数の行iに一斉送信することを伴う。この時点では、交差は、必要ない。しかし、単一の行内の異なる列の合算、すなわちΣjMijxjを実行するために、フォトニック交差又は電気交差が必要になる。
【0050】
2つのフォトニック導波路間の交差は、同じ半導体層内でマルチモード干渉計(MMI:multi-mode interferometer)交差を使用するか、又は半導体基板の別の層を使用することによって物理的に実現することが可能である。電気交差とは対照的に、フォトニック交差は、システムの帯域幅に悪影響を及ぼす可能性のある回路の全体的な静電容量を減らすことができるため、フォトニック交差が望ましい。しかしながら、MMIベースの交差は、光信号に対して重大なクロストーク及び損失を誘発する可能性がある。
【0051】
値xjを一斉送信するために使用される2分木の性質は、実際、必要な交差の数を減らすのに適している。例えば、値xjがN回に分割される場合(N×N型の行列と、サイズNのベクトルとの間の乗算の場合)を考察する。分割が単一の1対Nスプリッタを用いて実行される場合、およそN/2個程度のフォトニック交差が必要になる場合がある。他方では、ツリー状に間隔を空けて配置されたバイナリ1対2スプリッタを用いて分割が実行される場合、一斉送信する導波路をクリアするために、およそN個程度のフォトニック交差が必要になる場合がある。
【0052】
いくつかの実施形態では、フォトニック導波路の交差の数が原因でクロストーク及び損失が大きくなる場合、余分な静電容量という犠牲を払って電気ドメインで交差を設計することが望ましい場合がある。電気ドメインでの交差は、2つの信号を同じ半導体基板の2つの異なる金属層でルーティングすることで構成される。電気交差は、光検出器の出力に配置することができる。
【0053】
図3Aは、本明細書に記載の技術のいくつかの実施形態による、行列-ベクトル演算を実装するための線形フォトニックプロセッサ300aの説明のための一例のブロック図である。線形フォトニックプロセッサ300aは、
図2に関連して説明した線形フォトニックプロセッサ200に類似し、同じ行列-ベクトル乗算演算
【0054】
【数8】
を実行するように構成され、式中、wは、入力PxQ型の行列であり、
【0055】
【数9】
は、Q個の要素を有する入力ベクトルであり、
【0056】
【数10】
は、P個の要素を有する出力ベクトルである。
【0057】
いくつかの実施形態では、線形フォトニックプロセッサ300aは、光信号を出力するように構成された単一の光源302を含むことができる。光源302は、干渉性光光源(例えば、レーザ)又は非干渉性光光源(例えば、熱型光、スーパールミネッセントダイオード、LED等)であり得る。いくつかの実施形態では、光源302によって出力された光信号は、光信号をQ個の光信号に分割するように構成されたビームスプリッタ304を通過し、各光信号を第1の振幅変調器306に送信することができる。
【0058】
図2の線形フォトニックプロセッサ200の場合のように、第1の振幅変調器306は、入力ベクトルの要素を光源302から受信された光信号の振幅に符号化するように構成することができる。第1の振幅変調器306は、DAC(描かれていない)によって制御された可変減衰器又は任意の他の適切な振幅変調器であり得、それは、コントローラ(例えば、
図1のコントローラ102)によってさらに制御することができる。いくつかの振幅変調器が電気通信用途で知られており、いくつかの実施形態で使用することができる。いくつかの実施形態では、可変ビームスプリッタを第1の振幅変調器204として使用することができ、この場合、可変ビームスプリッタの1つの出力のみが維持され、他の出力は、廃棄又は無視される。いくつかの実施形態で使用することが可能な振幅変調器の他の例には、進行波変調器、キャビティベースの変調器、フランツ-ケルディシュ変調器、プラスモンベースの変調器、2D材料ベースの変調器及びナノオプト電気機械スイッチ(NOEMS)が含まれる。
【0059】
次に、第1の振幅変調器306は、入力ベクトルの要素を第1の光信号の振幅(例えば、強度)で表す第1の光信号を出力することができる。第1の光信号は、第1の光スプリッタがP回に分割されるように、追加のビームスプリッタ304を通して送信することができる。次に、分割された第1の光信号は、P個の第2の振幅変調器308に送信することができる。
【0060】
いくつかの実施形態では、第2の振幅変調器308は、それぞれ行列wの1つの要素の1つの値を符号化するように構成することができる。第2の振幅変調器308は、第1の振幅変調器306と同じ種類の変調器であり得るか、又は代わりに第1の振幅変調器306と異なる種類の変調器であり得る。受信された第1の光信号は、第2の振幅変調器208によって変調されて、行列要素wpjとベクトル要素xjとの乗算を出力第2光信号の振幅で表す強度を有する第2の光信号を生成することができる。
【0061】
いくつかの実施形態では、それぞれの第2の振幅変調器308によって出力される出力第2光信号を光検出器310に送信し、この光検出器を使用して検出することができる。光検出器310は、例えば、検出器に入射する光の強度に比例する光電流を生成するように構成された光検出器であり得る。
【0062】
いくつかの実施形態では、光検出器310のいくつかの出力は、電気合算回路312に送信することができる。
図3Aの例に示されるように、行列の行(例えば、要素w
11、w
12及びw
13)を表すように構成された第2の振幅変調器308に結合される光検出器310の出力は、同じ電気合算回路312に送信される。このような実施形態では、電気合算回路312は、電気合算回路312からの出力電気信号が入力ベクトルと行列の行との積を表すように、光検出器310から受け取った光電流を加えるように構成された回路類を含むことができる(例えば、行列wの第1の行の場合、x
1w
11+x
2w
12+x
3w
13を電気的に表す)。
【0063】
いくつかの実施形態では、電気合算回路312は、電圧合算器回路を含むことができる。例えば、電気合算回路312は、抵抗器ネットワーク及び増幅回路を含むことができる。いくつかの実施形態では、光検出器310によって出力された電気信号は、出力ノードを結束するのみで合算することができる。出力結果を読み出す前にこの電気合算を実行することには、2つの利点がある。第1に、このように先に合算することにより、(
図2の線形フォトニックプロセッサ200の例の場合の回路類のように合計P×Q個ではなく)P個の読み出し回路類構成部品のみがアーキテクチャで使用されるように、フォトニック処理アーキテクチャで使用される混合信号の読み出し回路類の数を減らすことができる。第2に、先に合算することにより、読み出し回路による検出の対象となる光電流のサイズが大きくなる。光信号がそれぞれの第2の振幅変調器308に達する前に、光信号は、P通りに分割される。Q個の異なる光検出器から生成された光電流を組み合わせると、分割による強度の低下を相殺することが可能である(Q≧Pの場合)。
【0064】
図3Bは、本明細書に記載の技術のいくつかの実施形態による、電気経路の長さを最小にするように構成されたレイアウトを有する線形フォトニックプロセッサ300bの一例を図示するブロック図である。電線は、寄生抵抗、インダクタンス及び静電容量を受けるため、(例えば、電気トレース長さを最小にすることによって)これらの寄生効果を最小にするように、このような電線のレイアウトを設計することが有用な場合がある。光検出器310によって出力された電気信号は、電流であり、これらの電流が切り替わることができる速度は、上記の電気的な寄生によって決まる場合がある。高速動作を可能にするために、これらの電気的な寄生を最小限に抑えなければならない。
【0065】
線形フォトニックプロセッサ300bは、
図3Aの例の線形フォトニックプロセッサ300aと同じ構成部品を有する。ただし、ビームスプリッタ304は、理解し易いように示されていない。しかしながら、
図3Bの例では、光検出器310は、電気合算回路312を中心にリング構成で設けられる。このリング構成により、光検出器310と電気合算回路312との間の電気トレースの長さが最小になり、これにより抵抗、インダクタンス及び静電容量などの電気的な寄生が最小になる。
【0066】
I.符号と信号との間の非線形関係
アナログコンピュータは、通常、ビットストリングを入力とし、それを何らかの物理的なプロセス(例えば、電気的プロセス、フォトニックプロセス)に変換し、そこで計算を実行することができる。次に、コンピュータは、これらの物理的なプロセスの1つ又は複数の測定値に基づいてビットストリングを出力する。
【0067】
いくつかの実施形態では、入力ビットストリングと、変調された信号との間の関係と同様に、出力信号と出力ビットストリングとの間の関係も線形である必要はない。実際、非線形の信号対符号の関係は、特定のアルゴリズムに有利な場合がある。例えば、画像分類に関するいくつかのディープラーニングアルゴリズムでは、複数の小さい値を区別することは、より価値が高い場合もある一方、複数の大きい値を区別することは、それほど価値がないか又は不必要である場合がある。したがって、このようなアルゴリズムは、コードブックの大きい割合でゼロ付近の値を符号化し、コードブックの小さい割合で最大入力/出力付近の大きい値を符号化する入力DAC及び出力ADCを用いて実行することができる。入力及び出力の有効なダイナミックレンジは、非線形マッピングによって拡大することができる。
【0068】
II.
エラー訂正
アナログコンピュータは、計算中にエラーが発生する場合がある。電子機器を使用するアナログコンピュータでは、基本的にジョンソン-ナイキストノイズ及び電気的ショットノイズが発生し、読み出しプロセス中にエラーを引き起こす可能性がある。出力読み出し回路類のノイズフロアに接近して動作する場合、電気的ノイズは、出力の最下位ビット(LSB:least-significant bit)でビット反転を引き起こす確率が低い場合がある。LSBが反転する確率は、読み出し回路の帯域幅が高いほど高くなる。これらのLSB反転エラーは、デジタル計算回路(例えば、積和演算部)におけるゲートエラーと同義であるが、LSBにのみ影響する。したがって、LSB反転エラーが生じる場合、それらは、正しい出力から数パーセントの誤差にとどまる。例えば、Nビットの出力の場合、LSBのビット反転エラーは、ほぼ1/2
N×100%の相対誤差に対応する。これは、ゲートエラーが、起こりそうもないとはいえ、デジタル回路がすべてのビットを等しく処理するため、最上位ビット(MSB:most significant bit)でエラーを引き起こす可能性があるデジタル計算回路とは対照的である。
図2、
図3A及び
図3Bの線形フォトニックプロセッサなどのアナログ処理システムでは、LSBは、ノイズパワーに近い信号パワーを有する一方、より多くの有意ビットは、ノイズパワーよりも指数関数的に強力な信号パワーを有する。その結果、LSBと比較すると、上位ビットの方が、ビット反転エラーを許容する可能性が指数関数的に低くなる可能性がある。
【0069】
ビット反転エラーを軽減する1つの方法は、計算時にエラー訂正を実行することである。実行可能な最も単純なエラー訂正アルゴリズムは、同じ計算を複数回(例えば、少なくとも3回)実行することによって冗長性を高め、多数決を実行して、より高い確率で正しい結果を決定することである。LSBに影響を及ぼすアナログコンピュータのエラーの性質上、出力ビットストリング全体に対して票決を行う必要はない。より正確に言えば、票決は、そのLSB又は少なくとも数個のLSBに対して行うのみでよい。
【0070】
人工ニューラルネットワーク又は常微分方程式求解機など、小さいエラーに対してロバストなアルゴリズムを実行する場合、エラーに対する上位ビットの回復力は、アナログプロセッサに利点をもたらす。本発明者らは、LSBのビット反転エラーの確率が高くなるという犠牲を払うが、高速アナログプロセッサを使用して、より回復力の高いアルゴリズムを求めることが可能であることを認識している。一部のディープラーニングアルゴリズム(例えば、画像分類用)では、小さいエラーは、単に予測の信頼度を低下させるのみであるが、必ずしも予測正確度を低下させるわけではない。
【0071】
図2、
図3A及び
図3Bの線形フォトニックプロセッサなど、強度に基づく光学系を使用することには、温度変動に対する過敏性及び製造上の不具合を大幅に低減することを含めて多くの利点がある。磁場ベースのフォトニックシステムは、確実に機能するために、多くの場合、大幅な安定化及びトリミングが必要である。上記の提案されるアーキテクチャは、このような位相エラー及び変動に対してほとんど影響を受けない。さらに、強度に基づくアーキテクチャは、計算時に位相情報を使用しないため、位相変調が結合された強度変調方式に適している。
【0072】
III.部分積及びその和
いくつかの実施形態では、行列要素wij及びベクトル要素xjは、固定小数点数表現を用いて表される。この表現において、
【0073】
【0074】
【数12】
が符号なしのm
2ビット数である場合、合計m
1+m
2+log
2(n)ビットを使用して、結果として得られるベクトル要素
【0075】
【数13】
を完全に表すことができ、ここで、nは、行列wの列の数である。概して、行列-ベクトル積の結果を表すためのビットの数は、演算の入力を表すためのビットの数よりも大きい場合がある。フォトニックプロセッサから値を読み出すために使用されるアナログ-デジタル変換器(ADC)が完全な精度で出力ベクトルを読み出すことができない場合、出力ベクトル要素は、ADCの精度に近い概数にすることができる。
【0076】
光信号の形態で入力ベクトルがフォトニック処理システムを通して送られる速度に対応する帯域幅で高いビット精度を有するADCを構築することは、困難な課題となり得る。したがって、ADCのビット精度は、完全に正確な計算が望まれる場合、通常、行列要素wij及びベクトル要素xjが表されるビット精度を制限する場合がある。そのため、本発明者らは、下記に説明するような部分積及び和を計算することにより、任意に高くすることが可能な完全な精度で出力ベクトルを得る方法を開発した。理解し易いように、wij又はxjのいずれかを表すために必要なビットの数は、同じである、例えばm1=m2=mであると仮定する。
【0077】
まず、行列要素wij及びxjのビットストリング表現は、d個の区分に分けることができ、各区分がk=m/dビットを含む。その結果、行列要素wijは、wij=wij
[0]2k(d-1)+wij
[1]2k(d-2)+・・・+wij
[d-1]20と記述され得る。なお、wij
[a]は、wijの最上位a番目のkビットストリングのkビット値である。ビットストリングの点で、wijは、wij=wij
[0]wij
[1]・・・wij
[d-1]と記述され得る。同様に、xjもxj=xj
[0]2k(d-1)+xj
[1]2k(d-2)+・・・+xj
[d-1]20と記述され得る。なお、ベクトル要素xjは、そのビットストリングの点でxj=xj
[0]xj
[1]・・・xj
[d-1]・・・xj
[d-1]と記述され得る。乗算
【0078】
【数14】
は、これらの区分の点から以下のように分解することができる。
【0079】
【数15】
式中、集合S
pは、a+b=pの場合、a及びbのすべての値の集合である。
【0080】
次に、線形フォトニックプロセッサは、いくつかの実施形態では、それぞれkビット精度のみである行列wij
[a]及び入力ベクトルxj
[b]を実装するようにプログラムすることができる。行列ベクトル乗算は、以下の中間結果を生成する。
【0081】
【数16】
次に、出力ベクトルy
i
[a,b]は、2k+log
2(n)ビットまでの精度で格納することができる。この乗算は、集合S
p内の異なる値a、bに関して繰り返される。最終結果は、次に、以下の和
【0082】
【数17】
を(例えば、コントローラ又は他の場所にある)デジタル電子機器を用いて、a及びbの異なる反復に関して実行することによって計算することができる。
【0083】
上述した方法により、利用可能なADCが完全な精度で即座に取り込むことができない場合でも、ユーザは、部分積及びそれらの和を処理することにより、完全に正確な計算を得ることが可能になる。
【0084】
IV.
直列化によるテンソルを用いたGEMMへの一般化
本明細書に(例えば、
図2、
図3A及び
図3Bに関連して)記載された線形フォトニックプロセッサは、いくつかの実施形態では、行列-ベクトル乗算演算から行列-行列乗算まで拡張することができる。I×J型の行列A及びJ×K型の行列Bを与えられれば、線形フォトニックプロセッサは、I×K型の行列C=ABを生成するように構成することができる。行列Aは、フォトニックプロセッサにおいて第2の振幅変調器(例えば、第2の振幅変調器208又は308)に符号化することができ、行列Bの列b
kは、第1の振幅変調器(例えば、第1の振幅変調器204又は306)に符号化することができる。各行列-ベクトル乗算の結果は、行列Cの列c
kである。b
kの異なる列に対して乗算を実行し、結果を(例えば、コントローラ102の)メモリに格納することにより、行列Cを一列ずつ構築することができる。同様に、行列Bは、フォトニックプロセッサにおいて第2の振幅変調器に符号化することができ、行列Aの行a
iは、第1の振幅変調器に符号化することができる。行列-ベクトル乗算の結果は、この場合、行列Cの行c
iであり、出力行列Cを一行ずつ構築することができる。
【0085】
いくつかの実施形態では、行列が大きすぎて、フォトニックプロセッサにおいて符号化することができない可能性がある。この場合、行列-行列乗算は、第1の大きい入力行列の一部と、第2の大きい入力行列の一部との間で実行することができる。この乗算の結果は、メモリに格納される。続いて、第1の大きい入力行列の第2の一部は、フォトニックプロセッサにおいて符号化することができ、第2の大きい入力行列の一部とともに第2の行列-行列乗算を実行することができる。この大きい行列の「タイリング」は、2つの大きい行列のすべての部分に対して乗算プロセスが実行されるまで継続することができる。次に、乗算プロセスの結果を組み合わせて、2つの大きい行列の乗算の最終結果を生成することができる。直列化というこの考え方は、テンソルのスライスを一度に処理し、結果をメモリに格納し、次に後に結果を組み合わせて出力テンソルを形成することにより、テンソル-テンソル乗算に適用することができる。
【0086】
V.
ニューラルネットワーク及びディープラーニングへの適用
本明細書に(例えば、
図2、
図3A及び
図3Bに関連して)記載の線形フォトニックプロセッサは、様々なGEMM演算を加速し、電力効率を高めることができるため、適用可能性が広い。現在、GEMMは、固有値分解、特異値分解又は逆行列の実行などの線形代数計算で使用される。GEMMの重要な用途の1つは、人工ニューラルネットワークである。
【0087】
深層人工ニューラルネットワークは、その最も基本的なレベルにおいて、複数の層、最大で数百層のテンソル-テンソル乗算を伴い、各層の線形変換後に非線形活性化関数が続く。次元数Dを有するニューラルネットワークを考察する。O(ND)個の要素を有する入力テンソル及びO(ND)個の要素を有する重みテンソルの場合、テンソル-テンソル乗算を実行するために必要な計算量は、O(N2D-1)である一方、活性化関数を実行するために必要な計算量は、O(ND)である。したがって、深層ニューラルネットワーク計算では、通常、テンソル-テンソル乗算が支配的であり、そのため、本明細書で提案するフォトニックプロセッサを使用して人工ニューラルネットワーク計算を高速化することができる。
【0088】
人工ニューラルネットワークの訓練は、通常、逆伝播アルゴリズムの実行を伴う。重み行列w及びバイアスベクトルを有する単層の深層人工ニューラルネットワーク
【0089】
【0090】
【数19】
の場合、ニューラルネットワークのこの層の出力結果は、y
i=f((wx)
i+b
i)である。なお、f(.)は、要素ごとに適用される非線形関数である。従来の確率的勾配降下法を用いた逆伝播では、重み行列は、時間t+1での重み行列が、時間tでの重み行列の関数及び重み行列の重みに関する損失関数の導関数として、以下のように定義されるように反復して調節される。
【0091】
【数20】
ここで、ηは、学習率であり、(a,b)は、それぞれ重み行列wのa番目の行及びb番目の列のエントリを表す。
【0092】
微積分の連鎖律を適用して、この単一の入力ベクトルxに関連付けられた重み行列(ここで、表現の便宜上、以下の定義
【0093】
【数21】
が使用される)内のパラメータのいずれかに関する損失関数の勾配を計算することができる。
【0094】
【数22】
w
abに関してzの導関数を計算すると、その結果、∂z
j/∂w
ab=δ
jax
bが得られる。次に、損失関数の勾配を表す和は、以下のように書き直すことができる。
【0095】
【数23】
次に、第1の和を逆伝播誤りベクトルとして定義することができる。
【0096】
【0097】
【数25】
は、入力ベクトルであり、以下の最終的な式となる。
【0098】
【数26】
これは、誤りベクトルと入力ベクトルとの間の外積である。非テンソル表記では、式は、以下のように記述することができる。
【0099】
【数27】
通常、勾配更新のノイズ(モデルパラメータを頻繁にジャンプさせる原因となり得る)を低減させるために、更新△w=∂E/∂wは、単一のデータサンプル(例えば、単一の入力ベクトルx及び単一の誤りベクトルe)から取得されない。実際には、平均的な更新は、訓練データセットのバッチ全体又は訓練データセットのバッチの一部から計算される。
【0100】
【0101】
【数29】
は、合計Q個の訓練例を有する訓練データセットのバッグからのq番目の入力ベクトル及び誤りベクトルであるとする。更新△wは、以下のように計算することができる。
【0102】
【0103】
【数31】
は、2つの行列M
e及びM
x間の行列-行列積を使用して効率的に計算することができる。誤りベクトルは、P個の要素の長さであり、入力ベクトルは、R個の要素の長さであると仮定すると、M
eは、その列が誤りベクトル
【0104】
【数32】
であるP×Q型の行列であり、M
xは、その行が転置された入力ベクトル
【0105】
【数33】
であるQ×R型の行列である。2つの行列を乗算すると、更新
【0106】
【数34】
が得られる。提案される線形フォトニックプロセッサは、本来ユークリッド空間で動作するため、この行列更新△wを効率的に計算するために使用することができる。本明細書に記載の線形フォトニックプロセッサは、そのため、深層人工ニューラルネットワークの順伝播(評価)だけでなく、逆伝播(訓練)にも適している。上記の導出は、wx+bの形式の全結合型層に当てはまるが、非線形性が後続する線形変換で構成される他のいかなる層でも同様の方法でその勾配を計算させることができる。
【0107】
VI.帯域幅と信号との間のトレードオフ
本発明者らは、本明細書に記載の線形フォトニックプロセッサのアーキテクチャが、現在のドメインにおいて、部分積間(例えば、
【0108】
【数35】
のj個の要素間)で和を実行することが可能であることをさらに認識している。現在のドメインでこの和を実行すると、積分時間の長さと、収集される信号の量との間のトレードオフが可能になる。出力サンプリング回路によって収集される信号の量は、光検出器によって収集される光の強度に比例し、入力光パワーと、フォトニックプロセッサを通る光伝播損失との関数である。フォトニックプロセッサがシステムのノイズフロアに接近して動作する場合、信号対ノイズ比(SNR:signal-to-noise ratio)は、選択する積分時間を長くすることにより向上させることができる。この積分時間が長いほど、フォトニックプロセッサの出力に蓄積される電荷の量が多くなり、これらの電荷が出力サンプリング回路で読み出しされるため、出力信号が大きくなる。出力サンプリング回路は、出力サンプリング回路によって感知された電荷の量を記述するビットストリングを出力するアナログ-デジタル変換器(ADC)に接続することができる。このビットストリングを信頼できるものとする(例えば、複数の測定で同じ出力ビットストリングが生成される)ために、フォトニックプロセッサのSNRは、出力の有効ビット数(ENOB:effective number of bit)をサポートするのに十分な高さであることが必要な場合がある。したがって、フォトニックプロセッサの速度は、システムのSNRが出力ビットストリングの所望のビット幅にとって十分な高さであるように選択することができる。
【0109】
VII.再スケーリング
行列処理のためのアナログ計算システムは、物理的なノイズ制限(例えば、ショットノイズ、熱的なノイズ等)又はアーキテクチャに基づく制限によって制限された有限のダイナミックレンジを有する。散逸(例えば、光又は電力の散逸)に基づく計算方式では、この散逸は、基本的にリンクバジェット、SNR及びプロセッサの精度に影響を及ぼす。これらの制限を回避し、システムを通して送信される信号の量を増やすために、本発明者らは、所望の計算に正比例する計算を実行し続けながら、散逸を最小限にするために、行列の行を再スケーリングすることが可能であることを理解している。行列mは、1行ごとに再スケーリングすることができる。以下では、行列mにベクトルxを乗算する。mの各行は、異なるスケール係数αiと関連付けることができる。これらのスケール係数は、例えば、0~無限大の範囲の連続変数又は2の累乗のいずれかであり得る。デジタルコンピュータを使用して再スケーリングが実行されるいくつかの実施形態では、スケーリング及び再スケーリング動作は、浮動小数点数又は固定小数点数のいずれかを使用して実行することができる。行列mは、タイルごと又は行列ごとに再スケーリングすることも可能である。タイルごとのスケーリングを得るために、単に同じ値に異なる行スケール係数を設定するのみでよく、行列ごとのスケーリングを得るために、同じ値に異なるタイルスケール係数を設定することができる。
【0110】
【数36】
この行ごとの再スケーリングを実行した後、スケール係数α
iは、行列計算の結果をスケール係数で除算することによって除去することができる。スケール係数が2の累乗である場合、例えば、スケール係数は、電子機器のエネルギー効率の高いビットシフト演算を使用して除去することができる。行のスケール係数が2の累乗でない場合、除算を実行することができる。いくつかの実施形態では、振幅変調器のダイナミックレンジが有限であるため、エントリm
ijを正規化することができる。αm
ij>1の場合、エントリは、1で飽和する。例えば、m
i=(0.1 0.1 1 0.1)とする。α=10とすると、αm
i=(1 1 10 1)となる。しかしながら、値1で振幅変調器が飽和すると、値10は、光学的に表すことができず、光学的に、ベクトルは、αm
i=(1 1 1 1)と表されることになる。そのため、ベクトルαm
iの要素の最大値が1以下であるように、スケール係数の値を選択することができる。
【0111】
VIII.正のみを対象とするプロセッサを用いた実数値行列の計算
本発明者らは、アナログプロセッサが、多くの場合、正の値の行列及びテンソルのみを符号化できることを認識している。例えば、非干渉性光光源を使用する場合、フォトニックプロセッサは、光信号の強度のみを変調し、位相は、変調しない場合がある。物理的に、強度は、非負の数である。本発明者らは、ほとんどの用途で、フォトニックプロセッサが、正の値及び/又は負の値の要素を含み得る行列とベクトルとの間で乗算を実行することになることを認識している。したがって、本発明者らは、数直線のオフセット及び/又は再スケーリングによる振幅変調のみを使用して、実数値行列と実数値ベクトルとの間で行列-ベクトル乗算演算を実行するための方法を開発した。
【0112】
元の実数値行列をMとし、その要素をMij∈Rとし、元の実数値ベクトルをxとし、その要素をxj∈Rとする。元の行列の各エントリは、定数値cMによってオフセットして、Mij’=Mij+cM≧0であるように、新たな行列M’を生成することができる。定数値cMは、行列の最大の負のエントリの絶対値、例えば、
【0113】
【数37】
であるように、又はこの値が特定の行列Mで観察されない場合でも行列の最大可能な負のエントリの絶対値であるように選択することができる。同様に、ベクトル要素は、定数値c
xによってオフセットして、x’=x+c
x≧0であるように、新たなベクトルx’を生成することができる。定数c
vは、この場合にも、ベクトルの最大の負のエントリの絶対値又はベクトルの最大可能な負の要素の絶対値であるように選択することができる。
【0114】
出力ベクトル
【0115】
【数38】
は、次に、新たな行列M’及びベクトルx’を使用して、以下のように計算することができる。
【0116】
【0117】
【0118】
【0119】
【0120】
【数43】
は、フォトニックプロセッサを使用して求めることができる。なお、値M’
ijは、第2の振幅変調器を使用して符号化することができ、値x’
jは、第1の振幅変調器を用いて符号化することができる。第2項
【0121】
【0122】
【数45】
は、デジタルベクトルプロセッサによって求めることができる。第3項の計算には、O(IJ)演算のコストが発生するが、I×J型の行列であると仮定すると、コストは、フォトニックプロセッサによって計算されることになる異なるベクトルの数で割って償却することができる。この数が十分に大きい場合、フォトニックプロセッサを使用して第3項の計算及び行列の乗算をパイプライン処理することを選択できる。
【0123】
第1の振幅変調器が負の数を符号化することが可能である(しかし、第2の振幅変調器では可能ではない)場合、第2項
【0124】
【数46】
は、フォトニックプロセッサの行数を1つ拡張し、この新たな最終行(行番号I+1)のすべての第2の振幅変調器を1単位に設定する(例えば、すべてのjに関してM
I+1,j=1とする)ことによって計算することも可能である。この場合に関して、c
xの値は、c
x=0であるように設定され得るか、又は後述するADC及び読み出し回路類のダイナミックレンジなどの他の理由でこの定数オフセットを維持し得ることに留意されたい。同様に、第2の振幅変調器が負の数を符号化することが可能である(しかし、第1の振幅変調器では可能ではない)場合、第3項
【0125】
【数47】
は、値が1である要素を有するベクトルを用いて行列-ベクトル乗算を計算することによって求めることができる。この場合にも、c
Mは、c
M=0であるように選択され得るか、又は他の理由で定数オフセットを維持し得る。
【0126】
本発明者らは、フォトニックプロセッサにおいて負の数を符号化する必要がないこの方法により、要素がフォトニックプロセッサの符号化範囲外である新たな行列Mij’又は新たなベクトルxj’を生成することが可能であることをさらに理解している。一般性を失うことなく、入力行列及び入力ベクトルは、各エントリが符号化範囲内にあるように正規化することができる。例えば、元の行列要素及び元のベクトル要素は、-1~1の値を有する、例えばMij∈[-1,1]且つxj∈[-1,1]であると仮定する。定数オフセットcM及びcxを加算することは、修正済の行列要素値が新たな範囲Mij’∈[-1+cM,1+cM]≧0にあり、同様に修正済のベクトル要素値が新たな範囲xj’∈[-1+cx,1+cx]≧0にあることを意味する。フォトニックプロセッサ変調器が0~1の値のみを符号化することができるのであれば、いくつかの実施形態では、スケール係数αM及びαxを導入することができる。このような実施形態では、αM及びαxは、フォトニックプロセッサの可能な値の範囲内において、αM=1/(1+cM)且つαx=1/(1+cx)であり、αMMij’∈[(-1+cM)/(1+cM),1]且つαxxj’∈[(-1+cx)/(1+cx),1]であるように選択することができる。換言すれば、上述したようにyjを計算する代わりに、
【0127】
【数48】
を計算することができ、ここで、係数α
Mα
xは、後処理段階で除去することができる。
【0128】
上述したオフセット及びスケーリング方法により、プロセッサの第1の振幅変調器及び第2の振幅変調器で負の数を符号化する必要がなくなる。この方法により、出力での信号の蓄積が増えるという追加の恩恵がまたもたらされる。符号化された行列及び符号化されたベクトルは、非負の要素を有するため、出力で合算された電流の流れは、同じ向きを有し、蓄積される電荷量の増加につながり、これが出力サンプリング回路によってサンプリングされることになる。これにより、出力ベクトルyを符号化する出力での信号が大きくなる。本発明者らは、典型的には、ジョンソン-ナイキストノイズ、電子的ショットノイズ、フォトニックショットノイズで構成された電子的ノイズフロアに接近して動作するプロセッサにとって信号出力を大きくすることが重要であることを認識している。
【0129】
VIII.
ゼロ値の損失ベースの変調及び光学表現
図4A~
図4Cは、本明細書に記載の技術のいくつかの実施形態による、
図2、
図3A及び
図3Bの例に関連して説明したような、第1の振幅変調器及び/又は第2の振幅変調器としていくつかの実施形態で使用し得る振幅変調器の説明のための例を示す。
図4Aは、不完全な振幅変調器又は位相変調器404及び408を使用して、干渉計構成で「良好な」ゼロ値を実現する変調器400aを示す。ビームスプリッタ402及び410は、変調器400aを通過する光信号をそれぞれ分割し、再結合する。消光比を高めるために、移相器406を追加して干渉計にバイアスをかけることができ、変調器408は、損失整合のために使用される。いくつかの実施形態では、変調器400aは、プッシュプルモードで使用され得る。
図4Bは、いくつかの実施形態において、完全な消光電子吸収変調器412を使用して、変調器の消光比を高める変調器400bを示す。
図4Cは、リング共振器414又は非共振状態に調節された空洞を使用する変調器400cを示す。いくつかの実施形態では、リング共振器414は、光の1/2
bの部分が共振状態で通過するように非共振状態に調節することができる。なお、bは、所望の計算精度である。
【0130】
このような振幅変調器の目標は、光強度を変調することのみであるため、ほとんどすべての強度変調方法(例えば、結合位相変調を含む)を振幅変調に使用することができる。より正確に実行するために、振幅変調器の消光比は、可能な限り大きくしなければならない。いくつかの実施形態では、変調器を連鎖(例えば、変調器を直列に配置)させて、消光比又は位相シフトを高めることが望ましい場合がある。しかしながら、下記で説明するように、この正確度は、結果として生じる出力の実効挿入損失と引き換えに得ることが可能である。
【0131】
強度変調のいずれかを、
図4A~
図4Cに示されるような損失ベースの変調から利得ベースの変調に切り替えた場合にも、同じ行列-ベクトル乗算アーキテクチャが適用されることになる。これは、半導体光増幅器を含む光集積回路プラットフォーム(例えば、リン化インジウム(InP)又は他のIII-V族半導体のプラットフォーム)にも同じアーキテクチャが機能することを示唆する。いくつかの実施形態では、損失ベースの変調と利得ベースの変調との組み合わせを選択することが有利な場合がある。損失ベースの変調は、電力効率を高めることができ、利得ベースの変調は、回路の損失対策のために使用することができる。
【0132】
損失ベースの変調方式のみを使用する場合、入力行列のエントリ及び入力ベクトルのエントリは、光の強度のみが下がる可能性がある。数学的には、これは、値が1未満のエントリ、すなわちxj≦1且つwpj≦1を有することによって記述される。これを実現するために、入力行列及び入力ベクトルが正規化される。
【0133】
【0134】
【数50】
であるような定数係数が引き出され、ここで、||A||
maxは、要素ごとの最大ノルム(例えば、Aの最大絶対値のエントリ、すなわち行列の場合、
【0135】
【0136】
【0137】
【数53】
を計算するために使用することができ、デジタル回路類は、出力ベクトル
【0138】
【0139】
【数55】
とを乗算することによって元に戻すために使用することができる。
【0140】
信号は光の強度に符号化されるため、上述した行列-ベクトル乗算は、非負の値の行列及び非負の値のベクトルにのみ適用されることになる。アルゴリズムは、4つの乗算を使用して、任意の実数値の行列と、実数値のベクトルとの間で行列-ベクトル乗算を計算することによって増強させることができる。これを行うために、入力行列を正の成分と負の成分とに分割することができる。例えば、w=w+-w-であり、ここで、w+(w-)は、正の(負の)成分のみを含む行列に対応する。同様に、入力ベクトルを正の成分と負の成分とに分割することができる。例えば、
【0141】
【0142】
【数57】
は、正の(負の)成分のみを含むベクトルに対応する。乗算
【0143】
【0144】
【0145】
【数60】
は、個別に実行することができ、結果は、それに応じて合算及び/又は減算することができる。この方法は、「微分行列乗算」(DMM:Differential Matrix Multiplication)という名称で記載される場合がある。
【0146】
振幅変調器は、概して、(1)光を完全に消滅させること、及び(2)光を完全に通すことができない。しかしながら、これらの2つの特性は、振幅変調器の重要なパラメータである。前者の特性は、消光比と関係があり、後者の特性は、変調器の挿入損失と関係がある。一見すると、本明細書に記載の技法は、w及びxを符号化する振幅変調器が光を完全に消滅できること(例えば、任意の高消光比を有する変調器)が必要である。しかしながら、w及びx変調器での不完全な消光の結果として生じるこの「コモンモードオフセット」を減算するために、4つの項
【0147】
【数61】
を計算して利用することができる。
図4A~
図4Cに示されるように、強度又は位相変調器が不完全な場合でも、干渉計測定方式を使用して高消光比を実現することも可能である。
【0148】
上述したDMM法により、消光比が悪く、ゼロ付近の値を符号化できない振幅変調器を用いて一般的な行列乗算が可能になる。j番目の振幅変調器「AM」が強度変調範囲xj∈[xj
min>0,xj
max<1]を有するとする。この変調器の消光比は、有限値を有するxj
max/xj
minである。この変調器を駆動する電子回路類は、デジタル-アナログ変換器を含むが、この電子回路類は、範囲をxj
min~xj
maxで離散化する。同様に、p番目の列及びj番目の行の振幅変調器「M」がwpj∈[wpj
min>0,wpj
max<1]の強度変調範囲を有するとする。この変調器の消光比は、wpj
max/wpj
minである。この変調器を駆動する回路類も、範囲をwpj
min~wpj
maxで離散化する。
【0149】
新たな変調範囲x’j≡xj-xj
minは、第1の振幅変調器に対して、x’j∈[0,xj
max-xj
min]の範囲の値で定義することができる。また、新たな変調範囲w’pj≡wpj-wpj
minも第2の振幅変調器に対してw’pj∈[0,wpj
max-wpj
min]の範囲の値で定義することができる。次に、行列-ベクトル積を以下のように計算することができる。
【0150】
【0151】
【0152】
【0153】
【数65】
これは、行列及びベクトルの正の部分及び負の部分のいずれも、同じ最小値を有する同じ変調器によって変調されるからである。したがって、これらのDMM法を使用してコモンモードオフセットを打ち消すことにより、第1の振幅変調器及び第2の振幅変調器のいずれも、完全な消光比を有するかのように行列-ベクトル乗算を実行することができる。これにより、使用される変調メカニズムの範囲が広がり、高消光比を必要とするときに実現できるよりも、ベクトル要素及び行列要素の両方をより高速に変調することが可能になる。トレードオフは、結果として生じる光電流の範囲が狭くなることであり、これは、出力のビット精度の制限要因になる場合もあれば又はならない場合もある。
【0154】
IX.
波長分割多重
図5は、本明細書に記載の技術のいくつかの実施形態による、波長分割多重方式(WDM)を含む線形フォトニックプロセッサ500の一例を図示するブロック図である。線形フォトニックプロセッサ500は、
図2、
図3A及び
図3Bの例の線形フォトニックプロセッサに類似しているが、WDM回路506及び512で増強されている。代わりに、いくつかの実施形態では、これらのWDM回路506及び512は、偏光多重分離回路であり得る。線形フォトニックプロセッサ500は、いずれの光路間の干渉も伴わないため、完全に広帯域のフォトニック素子から組み立てられることを促進し、WDMに使用される波長領域の制約を緩和する。
【0155】
図5の線形フォトニックプロセッサ500の例は、3つの3要素ベクトルx
ir、x
ig及びx
ibを有する3×3型の行列wを多重化するように構成される。線形フォトニックプロセッサ500は、異なる波長を有する光信号を生成するように構成された複数の光源502a、502b及び502cを含むことができる。例えば、光源502a、502b及び502cは、それぞれ赤色光、緑色光及び青色光である光信号を生成するように構成することができる。ベクトルの各要素であるx
ir、x
ig及びx
ibは、したがって、第1の振幅変調器504によって異なる波長を有する光信号の振幅に符号化することができる。
【0156】
第1のWDM回路506を通過した後、第1の光信号は、ビームスプリッタ508によって分割され、行列-ベクトル要素積を出力第2光信号に符号化するように構成された第2の振幅変調器510に送信することができる。これらの出力第2光信号は、第2のWDM512によって受信され、その後、光検出器514によって検出され、電気信号に変換することができる。電気信号は、本明細書で前述したように合算及び/又は読み出すことができる。
【0157】
X.
符号付き値の実装
いくつかの実施形態では、負の行列及び/又はベクトル値は、回路類を使用して実現することができる。例えば、
図6Aは、本明細書に記載の技術のいくつかの実施形態による、負の値及び正の値を実装するための回路600aの概略図である。光検出器606は、第1の端子及び第2の端子(例えば、
図6Aに描かれるような光検出器606がフォトダイオードを含む実施形態ではカソード及びアノード)を有することができる。第1の端子は、スイッチ604を通してレール電圧602又は合算ノードのいずれかに結合することができる。第2の端子は、スイッチ605を通して基準電圧608(例えば、接地)又は合算ノードのいずれかに結合することができる。スイッチ604及び605は、例えば、トランジスタスイッチであり得る。スイッチ604及び605を使用して、第1の端子又は第2の端子のいずれかを合算ノードに接続することにより、光検出器606から出力される電流の方向は、(例えば、正又は負の)標識(signage)が実装されるように変更することができる。トランジスタスイッチのスイッチ状態は、フォトニックプロセッサの追加の制御回路類及び/又はフォトニックプロセッサに結合されたコントローラの追加の制御回路(描かれていない)によって制御することができる。
【0158】
加えて、
図6Bに示されるように、XOR演算を使用して符号付きの行列及び/又はベクトル値を実装して、計算の符号を事前に計算し、次に光検出器606の出力電気信号の符号を設定することが可能である。いくつかの実施形態では、回路600bは、XOR演算610を含むことができる。カソードの向き(例えば、光検出器606の向き)は、入力ベクトル要素x
jの符号及び行列要素w
ijの符号を得て、これらの信号に対してXOR演算を実行することによって計算することができる。出力カソードの方向ビットは、光検出器から到来する電流が正であるとしても又は負であるとしても、いずれにしても設定することができる(例えば、出力カソードの方向ビットは、回路600aのスイッチ604及び605の構成又は設定の変更をトリガすることができる)。
【0159】
本発明者らは、フォトニックプロセッサの全体にわたってこれらの「符号ビット」を分配するための方法をさらに開発した。各ベクトル要素の符号ビットは、ベクトル要素値を符号化するように構成された各第1の振幅変調器の近くに移送することができ、そこで、このベクトル符号ビットと行列符号ビットとの間でXOR演算を実行した後、符号ビット信号を使用して、検出器の電流の流れを制御することができる。
【0160】
代わりに又は加えて、電気通信を使用すると、符号ビットを分配することが可能な場合がある。この通信は、スキュー及びジッタを最小限に抑えるために、標準的なデジタル設計手法を使用して実行することができる。例えば、ツリー型又はメッシュ型トポロジを使用して、単一ビットを多くの場所に同時に分配することができる。このツリー型の時間遅延は、プロセッサのベクトルレートを上回る可能性があり、その時点で複数の符号が同時に変調器に送信されることになる。
【0161】
本発明者らは、符号ビットが光子的に分配され得ることをさらに認識している。例えば、追加の導波路を使用すると、符号ビットを符号化し、送信することが可能な場合がある。しかしながら、符号ビットは、未使用の自由度の光信号を使用しても送信され得る。例えば、光信号を別の偏光又は別の波長で変調して、符号ビットを符号化及び分配し得る。符号ビットは、偏光又は波長の論理的な選択にも符号化され得る。例えば、フォトニックプロセッサは、ベクトル符号ビットが正である場合、波長λ1の光を使用することができ、また、フォトニックプロセッサは、ベクトル符号ビットが負である場合、波長λ2の光を使用することができる。フォトニック符号ビットの分配により、多くの利点がもたらされる。第1に、符号ビット信号及び行列-ベクトル積信号は、同じ伝播速度で伝播することができる。第2に、符号ビット信号及び行列-ベクトル積信号は、同じ光導波路内に伝播するため、システムで追加の導波路を使用できないようにすることができる。
【0162】
図7は、本明細書に記載の技術のいくつかの実施形態による、フォトニックプロセッサ内の符号ビット分配の偏光に基づく方式を示す。第1のビームスプリッタ702は、入力光信号を分割することができ、ベクトル要素値は、第1の振幅変調器704での光の振幅に符号化することができる。符号ビットは、偏光回転子706及び符号変調器708を使用して、光信号の偏光に符号化することができる。次に、2つの光信号は、偏光ビームスプリッタ710を使用して再結合することができる。偏光ビームスプリッタを使用して、(1)2つの異なる偏光の入力光をそれらの偏光によって2つの出力経路に分割し、(2)2つの入力経路からの、それぞれ自らの偏光を有する光を2つの異なる偏光の単一の出力光に結合させることが可能であることが理解され得る。
【0163】
再結合された光信号を分割し、ベクトル要素-行列要素積を表す第2の光信号を出力するように構成された第2の振幅変調器712に送信することができる。第2の光信号は、符号716と値718との分離を可能にする追加の偏光ビームスプリッタ716を通過することができる。
【0164】
図8は、本明細書に記載の技術のいくつかの実施形態による、符号付き値を実装するためのプロセス800を図示するフローチャートである。プロセス800は、任意の適切な計算装置によって実行することができる。例えば、いくつかの実施形態では、プロセス800は、フォトニックプロセッサに結合されたコントローラ(例えば、
図1に関連して説明したようなコントローラ102)によって実行することができる。いくつかの実施形態では、プロセス800は、フォトニックプロセッサから遠隔して(例えば、クラウド計算システムの一部として)位置する1つ又は複数のプロセッサによって実行することができる。
【0165】
プロセス800は、動作802から始まり、そこで、光検出器は、受信された光信号を第1の電気信号に変換することができ、この光信号は、フォトニックプロセッサの一部によって出力される。光検出器は、第1の端子及び第2の端子を含むことができる。例えば、光検出器は、フォトダイオードを含むことができ、第1の端子及び第2の端子は、それぞれアノード及びカソードであり得る。いくつかの実施形態では、第1の電気信号は、光電流であり得る。
【0166】
いくつかの実施形態では、動作802後、プロセス800は、動作804に進むことができ、そこで、光プロセッサに結合された少なくとも1つの従来のプロセッサは、第1の電気信号が正の符号付き数値を表すか又は負の符号付き数値を表すかを判定することができる。少なくとも1つの従来のプロセッサは、第1の電気信号の標識が入力ベクトル要素の符号及び入力行列要素の符号に少なくとも部分的に基づいていると判定することができる。例えば、少なくとも1つの従来のプロセッサは、
図6Bに関連して説明したように、XOR演算を使用して第1の電気信号の標識を判定することができる。
【0167】
動作802後、プロセス800は、動作806に進むことができ、そこで、フォトニックプロセッサの制御回路類は、第1の電気信号が正の符号付き数値を表すか又は負の符号付き数値を表すかの判定に応答して、光検出器の第1の端子に結合された第1のスイッチ及び光検出器の第2の端子に結合された第2のスイッチの設定を調整することができる。例えば、いくつかの実施形態では、第1のスイッチ及び/又は第2のスイッチは、トランジスタスイッチを含むことができ、第1のスイッチ及び/又は第2のスイッチの設定を調整することは、ゲート電圧を印加するか又は除去して、第1のスイッチ及び/又は第2のスイッチを有効にすることを含むことができる。
【0168】
動作806は、2つの副動作806a及び806bにさらに進むことができる。副動作806aでは、制御回路類は、少なくとも部分的に、第1の端子を基準電圧に結合するように第1のスイッチを設定し、且つ第2の端子をノード(例えば、出力ノード)に結合するように第2のスイッチを設定することにより、正の符号付き数値出力を生成することができる。第1のスイッチ及び第2のスイッチをこのように設定することにより、光検出器に正の電流を出力させることができる。副動作806bでは、制御回路類は、少なくとも部分的に、第1の端子をノードに結合するように第1のスイッチを設定し、且つ第2の端子を電圧レールに結合するように第2のスイッチを設定することにより、負の符号付き数値出力を生成することができる。第1のスイッチ及び第2のスイッチをこのように設定することにより、光検出器に負の電流を出力させることができる。
【0169】
動作806後、プロセス800は、動作808に進むことができ、そこで、光検出器は、第1の電気信号が第1のスイッチ又は第2のスイッチのいずれかを通過するように、第1の電気信号を出力することができる。第1の電気信号の経路は、先の第1の電気信号が正の符号付き数値を表すか又は負の符号付き数値を表すかの判定に基づく。
【0170】
XI.部分行列処理アーキテクチャ
行列-行列、行列-ベクトル及びテンソル-テンソル乗算演算は、性質上、再帰的である。行列M=[[M11,M12],[M21,M22]](パイソニック(Pythonic)表記)と、ベクトルx=[x1,x2]との間の乗算を考察する。出力y1=M11x1+M12x2と、y2=M21x1+M22x2との乗算は、部分行列M11,M12,M21,M22と、部分ベクトルx1,x2との間の乗算と見なすことができる。この論理は、要素M11,M12,M21,M22及びx1,x2がスカラー要素になるまで再帰演算することができる。上述したこのような再帰は、サイズ2N×2N型の行列と、サイズ2Nのベクトルとの乗算に作用する。なお、ここで、Nは、整数である。任意のサイズの行列を与えられれば、これらのサイズ要件を満たすために、必要に応じてゼロを追加することができる。しかしながら、行列を2行及び2列に分ける必要はないことを理解されたい。行列は、R行及びC列に分けることができ、その結果、異なるスケーリングになる。
【0171】
行列プロセッサは、部分行列バンクを使用して、この再帰的な方法で構成することも可能である。
図9A~
図9Dは、本明細書に記載の技術のいくつかの実施形態による、部分マトリクスプロセッサに配列されたフォトニックプロセッサ900を図示する概略図である。各部分行列プロセッサ902は、符号M
(ij)が付され、ベクトル904は、符号x
(j)が付されている。
図9A~
図9Dの例では、i,j∈{1,2,3,4}であるが、いくつかの実施形態では、部分行列及びベクトルは、他のサイズであり得ることが理解され得る。部分ベクトルは、分割され、該当する部分行列プロセッサに送信される。行列-ベクトル乗算は、各部分行列プロセッサにおいて、振幅変調器906で部分行列と部分ベクトルとの間で実行される。次に、行列-ベクトル乗算は、光検出器908に光学的に送信される。光検出器908は、受信された光信号を電気信号に変換するように構成される。次に、該当する部分ベクトル電気信号は、異なる部分行列プロセッサ間で一緒に合算することができる。
図10A~
図10Bでは、いくつかの実施形態によるフォトニックプロセッサ1000の別の実施形態が示される。部分ベクトル出力は、ADC1010をローカルに使用してビットストリングに変換され、最終出力は、デジタル回路類(図示せず)を使用して加算される。
【0172】
XII.
複数の波長の光を用いたフォトニック処理
これまで、電子回路類を使用して合算を実行する線形フォトニックプロセッサのアーキテクチャについて説明してきた。
図11は、本明細書に記載の技術のいくつかの実施形態による、光学ドメインで合算を実行し、且つ複数の波長を有する入力光を使用するように構成された線形フォトニックプロセッサ1100の代替的な一実施形態を図示する概略図を示す。
図11の例では、それぞれの第1の振幅変調器1102は、異なる波長の光、λ
1、λ
2、・・・、λ
Qを受け取る。線形フォトニックプロセッサ1100におけるベクトル変調方法及び行列変調方法は、
図2、
図3A及び
図3Bの線形フォトニックプロセッサによって実行される方法に類似している。しかしながら、線形フォトニックプロセッサ1100では、光信号は、第2の振幅変調器1104によって変調された直後に検出されない。より正確に言えば、光信号は、光検出器1108によって検出される前に光コンバイナ回路1106に送給することができる。したがって、前述した
図2、
図3A及び
図3Bの線形フォトニックプロセッサにある合計P×Q個の光検出器と比較すると、
図11の実施形態ではわずかP個の光検出器1108のみがある。
【0173】
図12Aは、本明細書に記載の技術のいくつかの実施形態による、複数の波長の光で使用するために構成された光コンバイナ1106の概略図である。光コンバイナ1106は、アド-ドロップリングフィルタ1210を含むことができる。リングと共振し、入力1から受信される(例えば、第2の振幅変調器1104からの)光信号は、出力バス導波路に取り出すことができ、リングと共振せず、入力2から受信される(例えば、バスからの)光信号は、出力バス導波路にリング通過する。したがって、リングは、対応する第2の振幅変調器1104に到達する光の波長に共振するように調節されるが、プロセッサで使用される他のいずれの波長にも共振しない。このため、リングフィルタは、少なくともいくつかの実施形態では、単一の自由スペクトル範囲(FSR)内で合計少なくともQ個の共振をサポートするのに十分な大きさのFSRを有することができる。
【0174】
図12Bは、本明細書に記載の技術のいくつかの実施形態による、
図12AのコンバイナのFSRの説明のためのプロットである。リングフィルタは、大きい自由スペクトル範囲(FSR)を有するが、第2の振幅変調器からの入力の多くの共振ピークが捕捉されるように、十分に高い品質因子を有するように設計することができる。
【0175】
図12Cは、本明細書に記載の技術のいくつかの実施形態による、
図12Aのコンバイナの数個の波長の関数としての伝送の説明のためのプロットである。光の1つの波長のみが(例えば、第2の振幅変調器1104からの)入力1から出力に取り出されるように、各コンバイナは、互いに離調することができる。y-コンバイナ又は方向性結合器のような他の非共振のマルチ波長コンバイナを使用して、いくらかの光損失という犠牲を払って異なる波長の出力光を結合させることも可能である。
【0176】
XIV.
疎行列及び/又はベクトルの実施形態
疎行列(例えば、非ゼロ要素がわずかにのみある行列)は、計算分野の多くでよく見られる。いくつかの実施形態では、
図13A~
図13Cの例に示されるように、疎なエントリは、プロセッサのアーキテクチャ内に配置された電気スイッチ又は光スイッチを使用することにより、行列w又はベクトルxで実装することができる。線形フォトニックプロセッサ1300a、1300b及び1300cは、
図3に関連して説明したような線形フォトニックプロセッサ300aに類似し、光源1302と、第1の振幅変調器1306と、第2の振幅変調器1308と、光検出器1310と、電気合算回路1312とを含む。しかしながら、線形フォトニックプロセッサ1300a、1300b及び1300cは、疎な行列又はベクトルのエントリを実施するために追加の電気スイッチ又は光スイッチを含む。
【0177】
図13Aの線形フォトニックプロセッサ1300aのように、光検出器1310の後に電気スイッチ1311を配置することにより、行列wの疎なエントリを実施することができる。代わりに又は加えて、
図13Bの線形フォトニックプロセッサ1300bに示されるように、行列wに疎な行を実施するために、電気スイッチ1313は、電気合算回路1312の後に配置することができる。代わりに又は加えて、
図13Cの線形フォトニックプロセッサ1300cに示される光スイッチ1314は、ベクトルxに疎なエントリを実施するために、第1の振幅変調器1306の後に配置することができる。スイッチ1311、1313及び1314の任意の組み合わせを線形フォトニックプロセッサで使用して、疎な行列及び/又はベクトルのエントリを実施できることが理解され得る。ゼロ値が必ず第2の振幅変調器1308のデフォルト状態に対応するようにすることにより、疎な行列のエントリのためのエネルギーを節約することが可能である。こうすることで、エネルギーをゼロの適用に費やすことがなくなる。
【0178】
代わりに又は加えて、事前計算を使用すると、疎な部分行列又は単位部分行列を実施することが可能になる場合がある。アナログプロセッサは、通常、極めて計算量の多い密な(非疎な)演算から利点を得る。行列M及びベクトルxを仮定する。行列Mの行が疎である場合、デジタル計算システム上で個別に演算を実行することが有益な場合がある。例えば、Mの行i全体にゼロエントリが含まれる場合、コンピュータは、計算を行わず、単にそのベクトルエントリxiに対してゼロを出力するのみでよい。別の極端な例では、行列全体が単位行列である場合、コンピュータは、単にベクトルxを返すのみでよい。いずれの例も、計算を必要とせず、入力と出力との間の単純なマッピングを必要とするが、これは、デジタル回路を使用して効率的に行うことができる。フォトニックプロセッサの外部のコンパイラシステムを実装して、先の事例のようにデジタル回路類を使用して又はアナログプロセッサを使用して、行列Mの行とベクトルxとの間で特定の乗算を計算するかどうかを判定することができる。
【0179】
図14は、本明細書に記載の技術のいくつかの実施形態による、疎なベクトル及び/又は行列を含む行列-ベクトル演算を実行するプロセスを図示するフローチャートである。プロセス1400は、任意の適切な計算装置をフォトニックプロセッサと組み合わせることによって部分的に実行することができる。例えば、いくつかの実施形態では、プロセス1400は、フォトニックプロセッサに結合されたコントローラ(例えば、
図13A~
図13Cに関連して説明したようなフォトニックプロセッサに結合された、
図1に関連して説明したようなコントローラ102)によって実行することができる。
【0180】
いくつかの実施形態では、プロセス1400は、動作1402から始まり、そこで、入力光信号は、第1の光変調器を使用して変調することができる。入力光信号は、例えば、光源(例えば、
図13A~
図13Cの光源1302)によって供給することができる。入力光信号は、第1の光変調器によって変調されて、第1の光変調器によって出力される第1の光信号におけるベクトルの要素を光学的に表現することができる。例えば、第1の光変調器は、入力光信号の振幅(例えば、強度)を変調し、ベクトルの要素の値を光の振幅に符号化するように構成することができる。
【0181】
プロセス1400は、動作1404に進むことができ、そこで、第2の光変調器によって第1の光信号を変調することができる。第1の光信号は、(例えば、ビームスプリッタを使用して)分割し、複数の第2の光変調器に送信することができる。第2の光変調器は、行列の行の要素でプログラムすることができる。第2の光変調器は、第1の光信号の振幅を変調することにより、被加数の値(例えば、ベクトルの要素と行列の行の要素との積)を光学的に表現する第2の光信号を生成することができる。被加数は、一緒に合算されると、ベクトルの要素と行列の行との間の積を表すことができる。
【0182】
動作1404後、プロセス1400は、動作1406に進むことができ、そこで、光検出器によって第2の光信号を複数の被加数の電気信号に変換することができる。いくつかの実施形態では、各光信号は、受け取った光の振幅を電気信号に変換するように構成された光検出器によって受信することができる。例えば、光検出器は、光検出器が受け取った光の強度に比例した大きさを有する光電流を出力するように構成された光検出器を含むことができる。いくつかの実施形態では、複数の第2の光信号は、単一の光検出器によって(例えば、同時に又は異なる時間に例えば時分割多重化によって)受信することができる。
【0183】
次に、動作1400は、動作1408に進むことができ、そこで、第1の光変調器の出力に結合されたスイッチ及び/又は光検出器の出力に結合されたスイッチは、1つ又は複数の信号の送信を防止することができる。例えば、いくつかの実施形態では、ベクトルの要素の値がゼロに等しい場合、光スイッチを第1の光変調器の出力に結合して、第1の光信号の、第2の光変調器への送信を防止することができる。光スイッチは、例えば、第1の光信号の送信を防止するために開放することができる。こうすることで、真のゼロ値は、フォトニックプロセッサを通して伝播させることができる。代わりに又は加えて、光検出器の出力に結合された1つ又は複数のスイッチは、行列の行の1つ又は複数の要素の値がゼロに等しい場合、被加数の電気信号の送信を防止することができる。例えば、行列の行の対応する要素の値がゼロに等しい場合、光検出器の出力に結合された電気スイッチを開放させることができる。いくつかの実施形態では、複数の光検出器の出力に結合された(例えば、電気合算回路1312の出力に結合された)追加のスイッチは、行列の行全体の値がゼロに等しい場合、合算された電気信号の送信を防止するように構成することができる。
【0184】
XIV.
信号読み出し方法
大きい行列の場合、検出器の出力を電気的に結束することにより、行列の行の電流を一緒に加える上記の方法は、かなりの寄生容量が発生する可能性がある。これらの寄生容量により、受信機回路に負荷がかかり、高速動作が困難になる可能性がある。これを回避するために、本発明者らは、
図15A~
図15Dに示されるような、本明細書に記載のいくつかの実施形態によるいくつかの信号読み出し方法を開発した。
【0185】
図15Aは、いくつかの実施形態による、光-電子-光変換に基づく説明のための読み出しシステム1500aを示す。この説明のための読み出しシステム1500aでは、行列-ベクトル要素乗算は、第1の振幅変調器1502及び第2の振幅変調器1504を使用して、光信号を変調することによって光学的に実行される。第2の振幅変調器1504からの光信号は、光検出器1506によって電気信号に変換することができ、次に電流ドメインで加えることができる。合算された電気信号は、トランスインピーダンス増幅器(TIA)1508を使用して増幅された電圧に変換し、次に光変調器1510を駆動することができる。光変調器1510からの信号は、光検出器1512に送信し、電気信号に変換することができる。これらの電気信号は、次に、TIA1514を使用して電圧に変換し、次にアナログ-デジタル変換器(ADC)1516を使用してデジタルストリングとして読み出すことができる。このような実施形態により、大きい寄生容量を生じることなく、(例えば、電気ドメインで信号をルーティングするのではなく、光変調器1510と光検出器1512との間でフォトニック導波路を使用して信号をルーティングすることによって)部分群信号の長距離ルーティングが可能になる場合がある。
【0186】
図15Bは、本明細書に記載のいくつかの実施形態による、部分群電流増幅に基づく説明のための読み出しシステム1500bを示す。この部分群電流増幅は、例えば、カレントミラー回路1518を使用して実行することができる。増幅された電流は、次に、TIA1514を使用して電圧に変換し、ADC1516を使用してデジタルストリングとして読み出すことができる。
【0187】
図15Cは、本明細書に記載のいくつかの実施形態による、電流ドメインでの部分群内加算及び電圧ドメインでの部分群加算に基づく説明のための読み出しシステム1500cを示す。光検出器1506の部分群内出力は、電流ドメインで実行することができる。部分群内出力は、TIA1508を使用して電圧に変換することができる。より大きい部分群加算は、例えば、複数の抵抗器(例えば、R1、R2)に入力として結合された演算増幅器を使用して、その後、実行することができる。合算された電圧信号は、ADC1522を使用してデジタルストリングとして読み出すことができる。
【0188】
図15Dは、本明細書に記載のいくつかの実施形態による、デジタル加算に基づく説明のための読み出しシステム1500dを示す。光検出器1506の部分群内出力は、電流ドメインで実行し、次にTIA及びADC1524を使用してデジタル電圧信号に変換することができる。デジタル加算は、次に、デジタル加算器1526を使用することによって実行することができる。
【0189】
半導体基板でのフォトニックプロセッサのレイアウトは、プロセッサの性能(例えば、スピード及び/又はパワー)の点で大きい効果を有する可能性がある。読み出し回路類(例えば、TIA及びADCを含む)の静電容量を低減させるための一般的な方法の1つは、互いに近接した光検出器及び読み出し回路をグループ化して、電気接続の長さを短くすることである。電気接続(例えば、電線を介した)は、出力読み出し回路に追加の静電容量を発生させ、読み出し回路類の利得又は帯域幅を制限する可能性がある。
【0190】
一方、フォトニック接続(例えば、フォトニック導波路を介した)は、システムに静電容量が追加されない。このため、装置が通常2次元平面にレイアウトされる半導体基板にフォトニックプロセッサをレイアウトする別の方法は、
図16A~
図16Dのレイアウト1600に示されるように、それぞれ互いにx軸及びy軸に沿って鏡映の関係にある4つの独立したブロックを有することである。光変調器1602及び1604は、導波路1606を通して光検出器1608に接続することができる。鏡映の関係にあるブロックにより、光検出器1608を互いに近接してクラスター化し、接続が電気的になされる場合にシステムに加えられることになる追加の静電容量の量を減らすことが可能になる。
【0191】
システムを(先進的な将来の半導体基板に)三次元ブロックにレイアウトすることができる場合、それぞれx軸、y軸及びz軸(図示せず)に沿って鏡映の関係にある8つの独立したブロックにシステムを分けることが有利な場合がある。出力光検出器は、互いに隣接してクラスター化することができる。概して、システムをN次元のブロックにレイアウトすることができる場合、出力光検出器が互いに隣接してクラスター化されるように、それぞれ可能なN次元の1つの軸に沿って鏡映の関係にある2N個の独立したブロックを有することが有利である。
【0192】
XV.
行列-行列演算
図17は、本明細書に記載の技術のいくつかの実施形態による、行列-行列演算を実装するように構成されたフォトニックプロセッサ1700のブロック図である。フォトニックプロセッサ1700は、2つの行列-ベクトルサブプロセッサを含む。これらの行列-ベクトルサブプロセッサは、
図3に関連して説明したような線形フォトニックプロセッサ300と類似したアーキテクチャを有する。行列サブプロセッサの両方は、光源1702と、ビームスプリッタ1704と、第1の振幅変調器1706とを含む。第1の振幅変調器1706によって出力された第1の光信号は、追加のビームスプリッタ1704によって分割し、第2の振幅変調器1708に送信することができる。第2の振幅変調器1708によって出力された光信号は、光検出器1710によって検出し、電気信号に変換することができる。光検出器1710によって出力された電気信号は、電気合算回路1717によって合算することができる。しかしながら、フォトニックプロセッサ1700は、第1のサブプロセッサの電気出力を第2のサブプロセッサへの入力として使用する。いくつかの実施形態では、第1のサブプロセッサの電気出力は、第2の行列サブプロセッサに送信される前に増幅器1714によって増幅することができる。
【0193】
出力行列C=ABの場合の2つの行列A及びB間の乗算を考察する。行列Bは、第1の行列-ベクトルプロセッサの第2の振幅変調器1708にプログラムすることができ、行列Aは、第2の行列-ベクトルプロセッサの第2の振幅変調器1708にプログラムすることができる。結果として生じる行列Cを読み出すために、ワンホットベクトル(例えば、1つのエントリの値が1であり、他のすべてのエントリの値がゼロであるベクトル)は、任意の単一の時点で1つの変調器のみがオンになるように、第1の部分行列ベクトルの第1の振幅変調器1706にプログラムすることができる。
【0194】
いくつかの実施形態では、ワンホットベクトルは、フォトニックプロセッサ1700を通して伝播する。ワンホットベクトルが第1の行列サブプロセッサの第2の振幅変調器1708を通して伝播するとき、それらは、行列Bの列を表す情報を伝える。行列Bの列は、第2の行列プロセッサの第1の振幅変調器1706に送信し、プログラムすることができる。次に、光源1702からの光信号は、行列Aの要素でプログラムされる第2の行列サブプロセッサの第2の振幅変調器1708に行列Bの列を送信することができる。出力ベクトルは、最終行列Cの列に対応する。より具体的には、ユーザがベクトルei(i番目の要素が1である以外、すべてがゼロであるベクトル)を送ると、出力は、Cのi番目の列になる。例えば、e1=(1 0 0 0 ...)を送ると、Cの第1の列が返される。このように、行列Bの列と行列Aの要素との間の乗算は、(例えば、外部のメモリによって)デジタル的に実行及び格納することができる。フォトニックプロセッサ1700を通して異なるワンホットベクトルを伝播させることにより、行列-行列乗算演算全体を実行することができる。
【0195】
図18は、本明細書に記載の技術のいくつかの実施形態による、フォトニックプロセッサを使用して行列-行列演算を実行するプロセスを図示するフローチャートである。プロセス1800は、任意の適切な計算装置をフォトニックプロセッサと組み合わせることによって部分的に実行することができる。例えば、いくつかの実施形態では、プロセス1800は、フォトニックプロセッサに結合されたコントローラ(例えば、
図17に関連して説明したようなフォトニックプロセッサに結合された、
図1に関連して説明したようなコントローラ102)によって実行することができる。
【0196】
いくつかの実施形態では、プロセス1800は、動作1802から始めることができ、そこで、第1の行列を第1の光サブプロセッサにプログラムすることができる。例えば、第1の行列は、第1の光サブプロセッサの第2の振幅変調器(例えば、第2の振幅変調器1708)にプログラムすることができる。第1の行列は、例えば、外部のコントローラから受け取ったビットストリングに基づいて、第2の振幅変調器にプログラムすることができる。第1の行列の個々の要素は、それぞれ第2の振幅変調器の個々の振幅変調器にプログラムすることができる。例えば、値が1である第1の行列要素は、第2の振幅変調器の第1のものにプログラムすることができ、これにより、第2の振幅変調器の第1のものは、受信された光信号の強度を変更せずに振幅変調器を通過可能にすることができる。値がゼロである第2の行列要素は、第2の振幅変調器の第2のものにプログラムすることができ、これにより、振幅変調器の第2のものは、受信された光信号の強度を消滅させることができるようにし、ゼロ又はゼロ付近の振幅を有する光信号を出力することができる。
【0197】
いくつかの実施形態では、プロセス1800は、次に、動作1804に進むことができ、そこで、第2の行列を第2の光サブプロセッサにプログラムすることができる。第2の行列は、第2の光サブプロセッサの第2の振幅変調器(例えば、第2の振幅変調器1708)にプログラムすることができる。第2の行列は、例えば、外部のコントローラから受け取ったビットストリングに基づいて、第2の振幅変調器にプログラムすることができる。第1の行列の場合のように、第2の行列の個々の要素は、第2の光サブプロセッサの第2の振幅変調器の個々の振幅変調器にプログラムすることができる。いくつかの実施形態では、第2の光サブプロセッサは、第1の光サブプロセッサの出力に結合された入力を含むことができる。
【0198】
動作1804後、プロセス1800は、動作1806に進むことができ、そこで、複数のワンホットベクトルが第1の光サブプロセッサに入力される。例えば、複数のワンホットベクトルは、第1の光サブプロセッサの第1の振幅変調器1706にプログラムすることができる。第1の振幅変調器を通して、光源から、第1の行列でプログラムされる第2の振幅変調器まで光信号を伝播させる(例えば、ワンホットベクトルを伝播させる)ことにより、第1の光サブプロセッサは、第1の行列要素のセット(例えば、行列の行、行列の列)を第2の光サブプロセッサに伝播させることができる。例えば、第1の光サブプロセッサから出力された光信号を使用して、第1の行列の第1の行列要素のセットを第2の光サブプロセッサの第1の振幅変調器にプログラムすることができる。第2の光サブプロセッサの第1の振幅変調器及び第2の振幅変調器を通して、(例えば、光源から発生する)別の光信号を伝播させることにより、第1の行列の行列要素の第1のセットと、第2の行列の要素との間で乗算を実行することができる。
【0199】
いくつかの実施形態では、続いて動作1808において、第2の光サブプロセッサは、第1の行列と第2の行列との乗算の一部を表す出力ベクトルを出力することができる。例えば、第2の光サブプロセッサは、(例えば、電気合算回路1712からの)合算された、第1の行列の要素と第2の行列の要素との積を表す電気信号を出力することができる。
【0200】
本技術の少なくとも1つの実施形態のいくつかの態様をこのように説明してきたが、当業者であれば、様々な変更形態、修正形態及び改良形態を容易に想到するであろうことを理解されたい。
【0201】
本明細書に記載の技術の上記の実施形態は、多くの方法のいずれにおいても実装することができる。例えば、実施形態は、ハードウェア、ソフトウェア又はそれらの組み合わせを使用して実装することができる。ソフトウェアで実装される場合、ソフトウェアコードは、単一のコンピュータに設けられるか又は複数のコンピュータ間に分散されるかにかかわらず、任意の適切なプロセッサ又はプロセッサの集合において実行することができる。このようなプロセッサは、集積回路として実装することができ、当技術分野においてCPUチップ、GPUチップ、マイクロプロセッサ、マイクロコントローラ又はコプロセッサなどの名称で知られている市販の集積回路部品を含む集積回路部品において1つ又は複数のプロセッサを有する。代わりに、プロセッサは、ASICなどのカスタム回路類又はプログラマブル論理デバイスの構成に起因するセミカスタム回路類において実装することができる。またさらなる代替形態として、プロセッサは、市販、セミカスタム又はカスタムであるかにかかわらず、より大きい回路又は半導体装置の一部であり得る。具体的な例として、いくつかの市販のマイクロプロセッサは、複数のコアを有することで、それらのコアの1つ又はサブセットがプロセッサを構成することができるようになっている。ただし、プロセッサは、任意の適切なフォーマットで回路類を使用して実装することができる。
【0202】
また、本明細書において概説される様々な方法又はプロセスは、多様なオペレーティングシステム又はプラットフォームのいずれか1つを実行する1つ又は複数のプロセッサ上で実行可能なソフトウェアとしてコード化することができる。このようなソフトウェアは、スクリプト言語及び/又はスクリプトツールを含む、複数の適切なプログラミング言語及び/又はプログラミングツールのいずれかを使用して記述することができる。いくつかの事例では、このようなソフトウェアは、フレームワーク又は仮想機械上で実行される実行可能機械語コード又は中間コードとしてコンパイルすることができる。加えて又は代わりに、このようなソフトウェアを解釈実行することができる。
【0203】
本明細書に開示される技法は、非一時的コンピュータ可読媒体(又は複数のコンピュータ可読媒体)(例えば、コンピュータメモリ、1つ又は複数のフロッピーディスク、コンパクトディスク、光ディスク、磁気テープ、フラッシュメモリ、フィールドプログラマブルゲートアレイ若しくは他の半導体装置内の回路構成又は他の非一時的有形コンピュータ記憶媒体)として具体化することができ、この非一時的コンピュータ可読媒体は、1つ又は複数のプロセッサ上で実行されるとき、上述した本開示の様々な実施形態を実装する方法を実行する1つ又は複数のプログラムで符号化される。コンピュータ可読媒体又は複数のコンピュータ可読媒体は、可搬であり得るため、その媒体に格納されたプログラム又は複数のプログラムを1つ又は複数の異なるコンピュータ又は他のプロセッサ上にローディングして、上述した本開示の様々な態様を実装するようになっている。
【0204】
計算装置は、入力装置及び出力装置を含む1つ又は複数の部品及び周辺機器を追加で有することができる。これらの装置は、とりわけ、ユーザインタフェースを提示するために使用することができる。ユーザインタフェースを提供するために使用することができる出力装置の例としては、出力を視覚的に提示するためのプリンタ又は表示画面及び出力を可聴式的に提示するためのスピーカ又は他の音響生成装置が挙げられる。ユーザインタフェースに使用することができる入力装置の例としては、キーボード並びにマウス、タッチパッド及びデジタル化タブレットなどのポインティングデバイスが挙げられる。別の例として、計算装置は、音声認識を通して又は他の可聴形式で入力情報を受け取ることができる。別の例として、計算装置は、カメラ、ライダー又は画像データを生成する他の装置から入力を受け取ることができる。
【0205】
計算装置の実施形態は、本明細書に記載されるようなフォトニックプロセッサも含み得る。計算装置のプロセッサは、1つ又は複数のインタフェースを介してフォトニックプロセッサと情報をやり取りすることができる。やり取りされる情報は、フォトニックプロセッサの検出器の設定及び/又はフォトニックプロセッサの検出器からの測定結果を含むことができる。
【0206】
「プログラム」又は「ソフトウェア」という用語は、本明細書では、1つ又は複数のプロセッサをプログラムして、上述したような本開示の様々な態様を実装するために用いることができる任意のタイプのコンピュータコード又はコンピュータ実行可能命令のセットを指すために使用される。さらに、本実施形態の一態様によれば、実行されるとき、本開示の方法を実行する1つ又は複数のコンピュータプログラムは、単一のコンピュータ又はプロセッサ上に存在する必要はなく、複数の異なるコンピュータ又はプロセッサ間にモジュール方式で分散させて、本開示の様々な態様を実装することが可能であることを理解されたい。
【0207】
コンピュータ実行可能命令は、1つ又は複数のコンピュータ又は他の装置によって実行されるプログラムモジュールなどの多くの形態であり得る。プログラムモジュールは、特定のタスクを実行するか又は特定の抽象データタイプを実装するルーチン、プログラム、オブジェクト、コンポーネント、データ構造等を含むことができる。プログラムモジュールの機能性は、様々な実施形態において、必要に応じて組み合わされるか又は分散され得る。
【0208】
また、データ構造は、任意の適切な形態でコンピュータ可読媒体に格納することができる。例示を分かり易くするために、データ構造は、データ構造内の場所を通して関係付けられたフィールドを有するように示すことができる。同様に、このような関係は、フィールド間の関係を伝達するコンピュータ可読媒体内の場所にフィールドのための記憶装置を割り当てることによって実現することができる。しかしながら、ポインタ、タグ又はデータ要素間の関係を確立する他のメカニズムを使用するなど、任意の適切なメカニズムを使用して、データ構造のフィールド内の情報間の関係を確立することができる。
【0209】
本明細書に記載される技術の様々な態様は、単独で、組み合わせて又は前述の実施形態に具体的に記載されていない多様な構成で使用することができ、したがって、その適用において、前述の説明に記載された又は図面に図示される構成要素の詳細及び構成に限定されない。例えば、一実施形態に記載される態様は、他の実施形態に記載される態様と任意の方法で組み合わせることができる。
【0210】
また、本明細書に記載の技術は、それらの例が
図8、
図15及び
図19に関連するものを含め、本明細書に提供される方法としても具体化することができる。この方法の一部として実行される動作は、任意の適した方法で順序付けることができる。そのため、動作が図示されるものと異なる順序で実行される実施形態を構成することができ、それは、たとえ説明のための実施形態で逐次的な動作として示されたとしても、いくつかの動作を同時に実行することを含み得る。
【0211】
また、本明細書で使用される語法及び用語は、説明する目的のためであり、限定するものと見なさないものとする。「包含する」、「含む」又は「有する」、「含有する」、「伴う」及びそれらの変形の使用は、本明細書では、その後に列挙された項目及びそれらの均等物だけでなく、追加の項目も包含することを意味する。
以下に、上記実施形態から把握できる技術思想を付記として記載する。
[付記1]
符号付き数値を実装するための装置であって、
第1の端子及び第2の端子を含む光検出器と、
前記光検出器の前記第1の端子をノード又は基準電圧のいずれかに結合する第1のスイッチと、
前記光検出器の前記第2の端子を前記ノード又は電圧レールのいずれかに結合する第2のスイッチと、
制御回路類であって、
前記第1の端子を前記基準電圧に結合するように前記第1のスイッチを設定し、且つ前記第2の端子を前記ノードに結合するように前記第2のスイッチを設定することにより、正の符号付き数値出力を少なくとも部分的に生成することと、
前記第1の端子を前記ノードに結合するように前記第1のスイッチを設定し、且つ前記第2の端子を前記電圧レールに結合するように前記第2のスイッチを設定することにより、負の符号付き数値出力を少なくとも部分的に生成することとを行うように構成された前記制御回路類とを備える装置。
[付記2]
前記光検出器は、フォトダイオードを含み、
前記第1の端子は、アノードを含み、及び
前記第2の端子は、カソードを含む、付記1に記載の装置。
[付記3]
前記第1のスイッチ及び前記第2のスイッチは、それぞれトランジスタスイッチを含む、付記1に記載の装置。
[付記4]
前記基準電圧は、接地である、付記1に記載の装置。
[付記5]
前記制御回路類は、符号方向ビットを出力するように構成された論理ゲートを含み、前記符号方向ビットは、数値出力が正の符号付き数値を含むか又は負の符号付き数値を含むかを示す情報を含む、付記1に記載の装置。
[付記6]
前記論理ゲートは、XORゲートを含む、付記5に記載の装置。
[付記7]
前記論理ゲートは、入力ベクトル要素の値の符号と、入力行列要素の値の符号とを比較するように構成される、付記5に記載の装置。
[付記8]
光学的処理システムであって、
入力光信号を受信し、前記入力光信号を変調し、且つベクトルの要素を表す第1の光信号を出力するようにそれぞれ構成された第1の複数の光変調器と、
前記第1の複数の光変調器のうちの1つの光変調器にそれぞれ光学的に結合され、及び前記第1の光信号を受信し、前記第1の光信号を変調し、且つ前記ベクトルと行列との間の行列-ベクトル乗算の一部を表す第2の光信号を出力するように構成された第2の複数の光変調器と、
前記第2の複数の光変調器のうちの複数の光変調器にそれぞれ光学的に結合され、且つ前記第2の光信号を、前記行列-ベクトル乗算の前記一部を表す電気信号に変換するように構成された複数の光検出器であって、前記複数の光検出器の各光検出器は、第1の端子及び第2の端子を含む、前記複数の光検出器と、
第1の光検出器の前記第1の端子を出力ノード又は基準電圧のいずれかに結合する第1のスイッチと、
前記第1の光検出器の前記第2の端子を前記出力ノード又は電圧レールのいずれかに結合する第2のスイッチと、
制御回路類であって、
前記第1の光検出器の前記第1の端子を前記基準電圧に結合するように前記第1のスイッチを設定し、且つ前記第1の光検出器の前記第2の端子を前記出力ノードに結合するように前記第2のスイッチを設定することにより、正の符号付き数値出力を少なくとも部分的に生成することと、
前記第1の端子を前記出力ノードに結合するように前記第1の光検出器の前記第1のスイッチを設定し、且つ前記第2の端子を前記電圧レールに結合するように前記第1の光検出器の前記第2のスイッチを設定することにより、負の符号付き数値出力を少なくとも部分的に生成することとを行うように構成された前記制御回路類とを備える光学的処理システム。
[付記9]
前記光検出器は、フォトダイオードを含み、
前記第1の端子は、アノードを含み、及び
前記第2の端子は、カソードを含む、付記8に記載の光学的処理システム。
[付記10]
前記第1のスイッチ及び前記第2のスイッチは、それぞれトランジスタスイッチを含む、付記9に記載の光学的処理システム。
[付記11]
前記基準電圧は、接地される、付記9に記載の光学的処理システム。
[付記12]
複数の電気合算回路をさらに備え、
前記複数のうちの第1の電気合算回路は、2つ以上の出力ノードに結合され、前記2つ以上の出力ノードの各出力ノードは、前記第1のスイッチ又は前記第2のスイッチを通して光検出器に結合され、
前記第1の電気合算回路は、前記2つ以上の出力ノードに結合された前記光検出器によって出力される前記行列-ベクトル演算の前記一部の和を表す電気信号を出力するように構成される、付記9の光学的処理システム。
[付記13]
前記制御回路類は、符号方向ビットを出力するように構成された論理ゲートを含み、前記符号方向ビットは、数値出力が正の符号付き数値を含むか又は負の符号付き数値を含むかを示す情報を含む、付記8に記載の光学的処理システム。
[付記14]
前記論理ゲートは、XORゲートを含む、付記13に記載の光学的処理システム。
[付記15]
前記論理ゲートは、入力ベクトル要素の値の符号と、入力行列要素の値の符号とを比較するように構成される、付記13に記載の光学的処理システム。
[付記16]
光プロセッサの光検出器によって出力される符号付き数値を実装するための方法であって、
第1の端子及び第2の端子を含む光検出器を使用して、出力光信号を第1の電気信号に変換するステップと、前記出力光信号は、前記光プロセッサの一部によって出力され、
前記光プロセッサに結合された少なくとも1つの従来のプロセッサを使用して、前記第1の電気信号が正の符号付き数値を表すか又は負の符号付き数値を表すかを判定するステップと、
前記第1の電気信号が前記正の符号付き数値を表すか又は前記負の符号付き数値を表すかを判定することに応答して、前記光プロセッサの制御回路類を使用して、前記第1の端子に結合された第1のスイッチの設定及び前記第2の端子に結合された第2のスイッチの設定を調整するステップと、ここで、前記制御回路類は、
少なくとも部分的に、前記第1の端子を基準電圧に結合するように前記第1のスイッチを設定し、且つ前記第2の端子をノードに結合するように前記第2のスイッチを設定することにより、正の符号付き数値出力を生成することと、
少なくとも部分的に、前記第1の端子を前記ノードに結合するように前記第1のスイッチを設定し、且つ前記第2の端子を電圧レールに結合するように前記第2のスイッチを設定することにより、負の符号付き数値出力を生成することとを行うように構成されており、
前記第1の電気信号が正の符号付き数値を表すか又は負の符号付き数値を表すかの前記判定に基づいて、前記第1の電気信号が前記第1のスイッチ又は前記第2のスイッチのいずれかを通過するように、前記光検出器から前記第1の電気信号を出力するステップとを含む方法。
[付記17]
前記第1のスイッチ及び前記第2のスイッチの設定を調整するステップは、前記制御回路類から前記第1のスイッチ及び前記第2のスイッチに1つ又は複数の電気信号を送ることを含み、前記第1のスイッチ及び前記第2のスイッチは、それぞれトランジスタスイッチを含む、付記16に記載の方法。
[付記18]
第1の光変調器を使用して、第1の光信号内のベクトルの要素を光学的に表すように入力光信号を変調するステップと、
第2の光変調器を使用して、前記出力光信号内の被加数を光学的に表すように前記第1の光信号を変調するステップと、前記被加数は、他の被加数と合算されたとき、前記ベクトルと行列の行との間の積を表し、
前記光検出器を使用して前記出力光信号を検出するステップとをさらに含む、付記16に記載の方法。
[付記19]
第1のスイッチの設定及び第2のスイッチの設定を調整するステップは、論理ゲートを使用して符号方向ビットを生成することをさらに含み、前記符号方向ビットは、前記第1の電気信号が正の符号付き数値を含むか又は負の符号付き数値を含むかを示す情報を含む、付記16に記載の方法。
[付記20]
前記論理ゲートを使用することは、XORゲートを使用することを含む、付記19に記載の方法。
[付記21]
行列-ベクトル乗算演算を実装するための光プロセッサであって、
入力光信号を受信し、前記入力光信号を変調し、且つベクトルの要素を表す第1の光信号を出力するようにそれぞれ構成された第1の複数の光変調器と、
前記第1の複数の光変調器のうちの1つの光変調器に光学的に結合され、及び前記第1の光信号を受信し、前記第1の光信号を変調し、且つ前記ベクトルと行列との間の行列-ベクトル乗算の一部を表す第2の光信号を出力するようにそれぞれ構成された第2の複数の光変調器と、
前記第2の複数の光変調器のうちの複数の光変調器に結合され、且つ前記第2の光信号を、前記行列-ベクトル乗算の前記一部を表す電気信号に変換するようにそれぞれ構成された複数の光検出器と、
前記ベクトル及び/又は行列の値がゼロを含む場合、光信号又は電気信号の送信を防止することにより、前記行列-ベクトル乗算演算でゼロの値を実装するように構成された複数のスイッチであって、前記複数のスイッチのうちのスイッチは、前記第1の複数の光変調器のそれぞれ又は前記複数の光検出器のそれぞれの出力に結合される、前記複数のスイッチとを備える光プロセッサ。
[付記22]
前記複数のスイッチのうちのスイッチは、電気スイッチを含み、且つ前記第1の複数の光検出器の1つの出力に結合される、付記21に記載の光プロセッサ。
[付記23]
前記スイッチは、前記行列の要素の対応する値がゼロである場合、電気信号の送信を防止するように構成される、付記22に記載の光プロセッサ。
[付記24]
前記複数のスイッチのうちのスイッチは、光スイッチを含み、且つ前記第2の複数の光変調器の1つの出力に結合される、付記21に記載の光プロセッサ。
[付記25]
前記スイッチは、前記ベクトルの要素の対応する値がゼロである場合、光信号の送信を防止するように構成される、付記24に記載の光プロセッサ。
[付記26]
前記複数の光検出器の2つ以上の光検出器の出力に結合され、且つ前記2つ以上の光検出器によって出力される前記行列-ベクトル演算の前記一部の和を表す電気信号を出力するようにそれぞれ構成された複数の電気合算部をさらに備える、付記21に記載の光プロセッサ。
[付記27]
前記複数の電気合算部の出力に結合された別の複数のスイッチをさらに備え、前記別の複数のスイッチのうちの前記スイッチは、前記行列の行の要素のすべての値がゼロに等しい場合、前記和を表す前記電気信号の送信を防止するように構成される、付記26に記載の光プロセッサ。
[付記28]
光プロセッサを使用して行列-ベクトル行乗算演算を実行する方法であって、
第1の光変調器を使用して、第1の光信号内のベクトルの要素を光学的に表すように入力光信号を変調するステップと、
第2の光変調器を使用して、第2の複数の光信号内の被加数を光学的に表すように前記第1の光信号を変調するステップと、前記被加数は、合算されたとき、前記ベクトルの前記要素と行列の行との間の積を表し、
光検出器を使用して、前記第2の複数の光信号を複数の被加数電気信号に変換するステップと、
前記ベクトルの前記要素の値がゼロに等しい場合、前記第1の光変調器の出力に結合されたスイッチに、前記第1の光信号の、前記第2の光変調器への送信を防止させ、且つ/又は前記行列の行の1つ又は複数の要素の値がゼロに等しい場合、前記光検出器の出力に結合された1つ又は複数のスイッチに、前記被加数電気信号の送信を防止させるステップとを含む方法。
[付記29]
電気合算部を使用して、前記被加数電気信号を合算して積電気信号を得るステップと、
前記積電気信号を出力するステップとをさらに含む、付記28に記載の方法。
[付記30]
前記行列の行のすべての要素の値がゼロに等しい場合、前記電気合算部の出力に結合されたスイッチに、前記積電気信号の送信を防止させるステップをさらに含む、付記29に記載の方法。
[付記31]
前記ベクトルの前記要素の前記値がゼロに等しい場合、前記第1の光変調器に結合された前記スイッチに、前記第1の光信号の、前記第2の光変調器への送信を防止させるステップは、光スイッチを開放することを含む、付記28に記載の方法。
[付記32]
前記行列の行の1つ又は複数の要素の前記値がゼロに等しい場合、前記光検出器の出力に結合された前記1つ又は複数のスイッチに、前記被加数電気信号の送信を防止させるステップは、電気スイッチを開放することを含む、付記28に記載の方法。
[付記33]
前記第1の光変調器を使用して前記入力光信号を変調するステップは、前記入力光信号の振幅を変調することを含む、付記28に記載の方法。
[付記34]
少なくとも1つの非一時的コンピュータ可読媒体であって、少なくとも1つの光プロセッサによって実行されると、前記光プロセッサに、
第1の光変調器を使用して、第1の光信号内のベクトルの要素を光学的に表すように入力光信号を変調するステップと、
第2の光変調器を使用して、第2の複数の光信号内の被加数を光学的に表すように前記第1の光信号を変調するステップと、前記被加数は、合算されたとき、前記ベクトルと行列の行との間の積を表し、
光検出器を使用して、前記第2の複数の光信号を複数の被加数電気信号に変換するステップと、
前記ベクトルの前記要素の値がゼロに等しい場合、前記第1の光変調器の出力に結合されたスイッチに、前記第1の光信号の、前記第2の光変調器への送信を防止させ、且つ/又は前記行列の行の1つ又は複数の要素の値がゼロに等しい場合、前記光検出器の出力に結合された1つ又は複数のスイッチに、前記被加数電気信号の送信を防止させるステップとの方法を実行させる命令を含む少なくとも1つの非一時的コンピュータ可読媒体。
[付記35]
前記方法は、
電気合算部を使用して、前記被加数電気信号を合算して積電気信号を得るステップと、
前記積電気信号を出力するステップとをさらに含む、付記34に記載の少なくとも1つの非一時的コンピュータ可読媒体。
[付記36]
前記方法は、前記行列の行のすべての要素の値がゼロに等しい場合、前記電気合算部の出力に結合されたスイッチに、前記積電気信号の送信を防止させるステップをさらに含む、付記35に記載の少なくとも1つの非一時的コンピュータ可読媒体。
[付記37]
前記ベクトルの前記要素の前記値がゼロに等しい場合、前記第1の光変調器に結合された前記スイッチに、前記第1の光信号の、前記第2の光変調器への送信を防止させるステップは、光スイッチを開放することを含む、付記34に記載の少なくとも1つの非一時的コンピュータ可読媒体。
[付記38]
前記行列の行の1つ又は複数の要素の前記値がゼロに等しい場合、前記光検出器の出力に結合された前記1つ又は複数のスイッチに、前記被加数電気信号の送信を防止させるステップは、電気スイッチを開放することを含む、付記34に記載の少なくとも1つの非一時的コンピュータ可読媒体。
[付記39]
前記第1の光変調器を使用して前記入力光信号を変調するステップは、前記入力光信号の振幅を変調することを含む、付記34に記載の少なくとも1つの非一時的コンピュータ可読媒体。
[付記40]
光プロセッサを使用して行列-行列演算を実行する方法であって、
第1の行列を第1の光サブプロセッサにプログラムするステップと、
第2の行列を第2の光サブプロセッサにプログラムするステップと、前記第2の光サブプロセッサは、前記第1の光サブプロセッサの出力に結合される入力を含んでおり、
光信号として、複数のワンホットベクトルを前記第1の光サブプロセッサに入力するステップと、前記第2の光サブプロセッサから、前記第1の行列と前記第2の行列との乗算の一部を表す出力ベクトルを出力するステップとを含む方法。
[付記41]
前記第1の光サブプロセッサから、前記ワンホットベクトルと前記第1の行列との間の乗算を表す複数の電気信号を出力するステップをさらに含む、付記40に記載の方法。
[付記42]
前記第2の光サブプロセッサにおいて、前記第1の光サブプロセッサから前記複数の電気信号を受信するステップと、
前記第2の光サブプロセッサの光変調器を使用して、前記第1の光サブプロセッサから受信された前記複数の電気信号を使用して入力光信号を変調するステップとをさらに含む、付記41に記載の方法。
[付記43]
前記ワンホットベクトルと前記第1の行列との間の乗算を表す前記複数の電気信号を出力した後、1つ又は複数の増幅器を使用して前記複数の電気信号を増幅するステップをさらに含む、付記41に記載の方法。
[付記44]
行列-行列演算を実行するように構成された光プロセッサであって、
ワンホットベクトルと第1の行列との行列-ベクトル乗算を光学的に実行して、第1のベクトルを得るように構成された第1の光サブプロセッサと、
前記第1の光サブプロセッサから出力信号を受信し、且つ前記第1のベクトルと第2の行列との行列-ベクトル乗算を光学的に実行するように構成された第2の光サブプロセッサとを備える光プロセッサ。
[付記45]
行列-行列演算を実行するように構成された光プロセッサであって、
第1の光サブプロセッサであって、
入力光信号を受信し、前記入力光信号を変調し、且つワンホットベクトルの要素を表す第1の光信号を出力するようにそれぞれ構成された第1の複数の光変調器と、
前記第1の複数の光変調器のうちの1つの光変調器に光学的に結合され、及び前記第1の光信号を受信し、前記第1の光信号を変調し、且つ前記ワンホットベクトルと第1の行列との間の行列-ベクトル乗算の一部を表す第2の光信号を出力するようにそれぞれ構成された第2の複数の光変調器と、
前記第2の複数の光変調器のうちの1つの光変調器に結合され、且つ前記第2の光信号を、前記行列-ベクトル乗算の前記一部を表す電気信号に変換するようにそれぞれ構成された第1の複数の光検出器と、
前記第1の複数の光検出器の2つ以上の光検出器の出力に結合され、且つ前記行列-ベクトル乗算の一部の合算の結果として生じるベクトルの要素を表す電気信号を出力するようにそれぞれ構成された第1の複数の電気合算部とを含む前記第1の光サブプロセッサと、
第2の光サブプロセッサであって、
前記第1の光サブプロセッサの前記複数の電気合算部のうちの電気合算部から出力電気信号をそれぞれ受信する、第3の複数の光変調器であって、入力光信号を受信し、受信された出力電気信号に従って前記入力光信号を変調し、且つ前記ベクトルの前記要素を表す第3の光信号を出力するようにそれぞれ構成される、前記第3の複数の光変調器と、
前記第3の複数の光変調器のうちの1つの光変調器に光学的に結合され、及び前記ベクトルの要素を表す前記第3の光信号を受信し、前記第3の光信号を変調し、且つ前記第1の行列と第2の行列との間の行列-行列乗算の一部を表す第4の光信号を出力するようにそれぞれ構成された第4の複数の光変調器と、
前記第3の複数の光変調器のうちの1つの光変調器に結合され、且つ前記第3の光信号を、前記行列-行列乗算の一部を表す電気信号に変換するように構成されたそれぞれ第2の複数の光検出器と、
前記第2の複数の光検出器の2つ以上の光検出器の出力に結合され、且つ前記行列-行列乗算の一部の合算の結果として生じる行列の要素を表す電気信号を出力するようにそれぞれ構成された第2の複数の電気合算部とを含む第2の光サブプロセッサとを備える光プロセッサ。