Build 2019カンファレンスでMicrosoftは、今年の夏、GitHubにおいて、Q#コンパイラや量子シミュレータを含むQuantum Developer Kitの一部をオープンソースとして公開すると発表した。
Microsoftは2017年末にQuantum Developer Kitを発表し、開発者に提供すると同時に、独自の量子コンピュータを開発する計画を発表していた。
GoogleやIBMなど、量子レースに参加している他の企業とは対照的にMicrosoftは、量子コンピューティングを記述する手段として、C#やF#にちなんだ名称の、Q#と呼ばれる新しいプログラミング言語の開発を選択した。
当社の高水準プログラミング言語であるQ#は、量子情報処理の課題に対処する目的で設計されました。量子アルゴリズムを量子コンピュータの基本操作までコンパイル可能にするソフトウェアスタックに統合されています。
Q#は”古典的な”プリミティブ型に加えて、量子ビット、量子演算、演算子などの量子抽象の直接的表現も含んだネイティブ型システムを持つ、ドメイン固有言語(domain--specific language)である。フロー制御命令についても同様に、for
やrepeat
などのループ、return
ステートメントなどの他に、量子操作内でのみ使用可能なステートメントとして、量子ビット(qubit)の取得を可能にするusing
や、量子ビットへの一時的アクセスを許可するborrowing
などを備えている。
以下に示すのは、量子ビットの状態を見て、それが要求された状態でなければ反転し、所定の状態に量子ビットを設定するQ#プログラムの例である。
namespace Quantum.Bell {
open Microsoft.Quantum.Primitive;
operation Set (desired: Result, q1: Qubit) : () {
body {
let current = M(q1);
if (desired != current) {
X(q1);
}
}
}
}
Microsoft Quantum Simulatorは、16GBのメモリを使用して、最大30論理キュビットをシミュレートすることができる。シミュレータ用に書かれたプログラムは、変更することなく同社の量子コンピュータ上でも実行可能である、とMicrosoftは主張している。
ハードウェア面では、Microsoftは、トポロジカル量子ビットを使用したトポロジカル量子プロセッサを開発中である。トポロジカル量子ビットは、文字列に見られるように、トポロジ構造内に情報をグローバルに格納する。結び目(knot)が付けられているかどうかは、ローカルな特性ではなく、全体像においてのみ確認が可能だ。
今回のQuantum Developer Kitのオープンソース化は、進化を続けるこの分野の発展への貢献を望むプログラマや、オープンソースソフトウェアの利用を必要とし、自らの研究にQ#を使用する条件を備えた研究機関にとって、特に有益なものになるだろう、とMicrosoftは述べている。