眠気.jl

投稿=不定期

Q#のインストールとJupyterカーネルへの追加(Ubuntu 18.04)

動機

現在の流行は機械学習だと思っていて,待を歩くと殆どの人がAndrewNgの機械学習講座をやっていて, PRML, Convex Optimization, MurphyのML本, GoodfellowのDL本, 渡辺ベイズ, 園田D論, MLPシリーズ, ハムかず本, (敬称略)etc...等を読んでいるような印象がありますが
逆張りをしていきたいので,まだ流行していなそうなQuantum Computingやっていきたいなと思いました

最近Brilliant(米国の学習サイト,Courseraっぽい)でMicrosoftとAlphabetが協力した講座brilliant.orgのQuantum-Computingが出たのでそれをやっていきます

Quantum Computingブームが来たとき,いずれはこの講義もスタンダードになるんじゃないかと個人的には思います(まだ途中までしかやってませんが)
章ごとにQuizがあって、その後詳解や参照が表示される形式です
Courseraとの違いは無期限で回数無制限でテストを受け直せるところです

この講座だとおそらくQ#を手元にインストールする必要はないのですが(GUIで擬似プログラミングできる機能が用意されてしまっているので),追試してみたいので入れてみました

やってみる

Q#の公式を見ると,まずは .NET Core SDK (2.1 or later)を入れろということなので入れます https://dotnet.microsoft.com/learn/dotnet/hello-world-tutorial/install このページの選択でUbuntu18.04を選んでそのままコード打っていく
Register Microsoft key and feed

wget -q https://packages.microsoft.com/config/ubuntu/18.04/packages-microsoft-prod.deb
sudo dpkg -i packages-microsoft-prod.deb

Install the .NET SDK

sudo add-apt-repository universe
sudo apt-get install apt-transport-https
sudo apt-get update
sudo apt-get install dotnet-sdk-2.2

これでdotnetのインストールはできたので
再びQ#の公式を見て

dotnet tool install -g Microsoft.Quantum.IQSharp

インストール完了,アプデは次のコマンドらしい

dotnet tool update -g Microsoft.Quantum.IQSharp

インストール済みでも再インストールされるらしい,次のメッセが出る

dotnet tool update -g Microsoft.Quantum.IQSharp
ツール 'microsoft.quantum.iqsharp' が安定した最新バージョン (バージョン '0.7.1905.3109') で再インストールされました。

jupyterカーネルに追加

公式だと

dotnet iqsharp install

とあるが,iqsharpが見つからないとエラーが出た
公式チュートリアルのDockerfileから見つけた次のコマンドで追加できた

dotnet iqsharp install --user --path-to-tool="$(which dotnet-iqsharp)"

Q#の動作確認

MSのQuantumの公式レポをクローンして遊びます

git clone git@github.com:microsoft/Quantum.git
cd /Quantum/Samples/src/Teleportation
dotnet build
ビルドに成功しました。                                                                                │
    0 個の警告                                                                                        │
    0 エラー                                                                                          │
                                                                                                      │
経過時間 00:00:22.75

build終わったことを確認して

dotnet run

警告なく終了!

Q#の特徴

Q#公式 によると,C#っぽく;,{}を使っていてifC#っぽいとのこと
独特なのはデフォルトだと値がimmutableで,letでmutableに

参考

.NET turorial