Microsoft Quantum Development Kit環境構築

ゲート型量子コンピュータのプログラミング環境としてMicrosoftがプログラミング言語Q#とその開発キットQDK(Quantum Development Kit)を提供しています。 ゲート型のプログラミングの学習環境としてまずはAzure QuantumのQ#/QDK環境を構築したいと思います。

ここではMSのQDKインストール手順に従って環境構築を実施していきます。 https://docs.microsoft.com/en-us/quantum/install-guide/index?view=qsharp-preview#develop-with-jupyter-notebooks

MS QDK環境構築のための必要パッケージ

Q#/QDKを動かすためにはPythonまたはC#などの.Net言語環境が必要です。 自分の場合はC#よりもPythonのほうがなじみがあるのでPython環境を構築していきます。

MS QDKをPythonで動かすためには下記の環境が必要

  • Python 3.6 or later
  • The PIP Python package manager
  • .NET Core SDK 3.0 or later

ベース環境の構築

自分は普段はWindowsで作業するのですがPython等のプログラミングとなると Windowsはちょっと不便なところもあるのでubuntuの環境を用意したい。 Azure上に構築しようかと考えましたが、Windows Subsystem for Linux(WSL)で Ubuntuが一番お手軽に構築できそうなのでWSL上に環境構築しました。

Window Subsystem for Linuxの有効化とUbuntuのインストール

設定から"アプリ"を開く。
スクリーンショット (5)

右側のメニューから"プログラムと機能"をクリック


スクリーンショット (6)

左のメニューから"Windows機能の有効化または無効化を"クリック

スクリーンショット (7)

Windows Subsystem for Linuxにチェックを入れる。
(再起動が必要)
スクリーンショット (8)
スタートメニューから"Microsoft Store"を起動し、"Ubuntu"を検索しインストール。
スクリーンショット (11)



Host Application環境の構築 (Python環境)

ubuntuの起動と更新

スタートメニューからubuntuを起動 端末から下記のコマンドを実行

sudo apt update
sudo apt -yV upgrade

ubuntuの再起動

WSL上のUbuntuではshutdownコマンドが使えません。Ubuntuのアップデートを有効にするためWindows側からWSLのUbuntuを再起動させます。

スタートメニューからWindowsシステムツール-> コマンドプロンプトを右クリック->その他から管理者として実行

管理者として開いたコマンドプロンプトで下記のコマンドを実行

net stop LxssManager
net start LxssManager

Pythonとpipのインストール

git, cmake, wget, p7zip-full のインストール

bash上で下記コマンドを実行

sudo apt -yV install git cmake cmake-curses-gui cmake-gui wget p7zip-full

Anaconnda3のダウンロードとインストール

Anacondaは入れる必要はないが、jupyter notebookが使えた方が便利な場合があると思いインストール

ホストのWindowsからAnaconda(Linux版)を下記からダウンロード https://www.anaconda.com/download

WindowsとWSL上のUbuntuは下記フォルダを共有しています。

  • Windows側: C:\Users\ユーザー名
  • WSL(Ubuntu)側: /mnt/c/ユーザー名/

ダウンロードしたファイルをこの共有フォルダに移動するとWSL側から利用することができます。
共有フォルダに移動し下記コマンドを実行。(ダウンロードする版数によりコマンド名は異なります)

Anaconda3-2019.10-Linux-x86_64.sh

途中いくつか入力が必要なので内容を確認し適切に入力

Do you wish the installer to initialize Anaconda3 by running conda init? [yes|no]

PATH環境変数の更新が入ってるので、それを反映させるためいったん端末を閉じて、再度Ubuntuを起動 Pathが変わる。

user@hostname$ which python
/usr/bin/python
(base) user@hostname:~$ which python
/home/user/anaconda3/bin/python
(base) user@hostname:~$

.NET Core SDKのインストール

下記リンクから.NET Core SDK(Linux版)(Build/Run Appsと書いてあるやつ)を選択 https://dotnet.microsoft.com/download 自分の場合はUbuntu 18.04なので左のメニューから下記リンクにジャンプ https://docs.microsoft.com/ja-jp/dotnet/core/install/linux-package-manager-ubuntu-1804


スクリーンショット (29)


ubuntu上で下記コマンドを実行

wget -q https://packages.microsoft.com/config/ubuntu/18.04/packages-microsoft-prod.deb -O packages-microsoft-prod.deb
sudo dpkg -i packages-microsoft-prod.deb
sudo add-apt-repository universe
sudo apt-get update
sudo apt-get install apt-transport-https
sudo apt-get update
sudo apt-get install dotnet-sdk-3.0

MS QDKのインストール

qsharpパッケージのインストール

pip install qsharp

iqsharpパッケージのインストール

dotnet tool install -g Microsoft.Quantum.IQSharp

.NET有効化のためいったん端末を閉じて再度新しい端末を開く

MSのページには--userオプション無しで書いてあるがWSL環境のせいか--userを付けないとうまく入らない

dotnet iqsharp install --user

環境構築完了!

TutorialにあるHello Worldサンプルコードを動かしてみる

MSページからのコピペなので中身はよくわからないがとにかく動かしてみる

まずQ#のコードを作成。Hello from quantum worldを表示するSayHello() Operationの定義
Operation.qsというファイル名で下記のコードを作成

namespace HelloWorld
{
    open Microsoft.Quantum.Intrinsic;
    open Microsoft.Quantum.Canon;

    operation SayHello() : Result {
        Message("Hello from quantum world!");
        return Zero;
    }
}

SayHello()を呼び出すためのPythonプログラムをhello_world.pyというファイル名で作成

import qsharp
from HelloWorld import SayHello
SayHello.simulate()

下記コマンドを実行(Pathが通るように、Operation.qsとhello_world.pyを同じフォルダに置きそのフォルダで実行する)

$ python hello_world.py
Preparing Q# environment...
....Hello from quantum world!

けっこう時間がかかるがきちんとメッセージが表示される。環境は構築できHello Worldは表示されるところまでは来たのでここからしっかりとQ#/QDKについて学習していきます。