FPGA開発日記

カテゴリ別記事インデックス https://msyksphinz.github.io/github_pages , English Version https://fpgadevdiary.hatenadiary.com/

2018-09-01から1ヶ月間の記事一覧

Googleの量子コンピュータフレームワークCirqを使ってみる(4. Cirqの中身を追ってみる)

Googleの量子コンピュータフレームワークであるCirqを使っており、簡単な回路なら記述できるようになった。 次に疑問点として沸いてくるのは、Cirqはどのようにして量子状態のシミュレーションを行っているのかというところだ。 Pythonのコードを見るのは苦…

ゼロから作る量子コンピュータ・シミュレータ(5. Pythonインタフェースから全加算器を構成してシミュレート)

フルスクラッチで量子コンピュータ・シミュレータを作る話、骨格となる部分はおおよそ完成し、量子ビットを取り扱う方法を考える。 量子ビットを作成する方法の検討 量子ビットは、1量子ビットをPythonの1変数として宣言できるようにしたい。 例えば、以下の…

ゼロから作る量子コンピュータ・シミュレータ(4. シミュレータにPythonのインタフェースを追加する)

フルスクラッチで量子コンピュータ・シミュレータを作る話、骨格となる部分はおおよそ完成してきたので次はインタフェースの部分を調整する。 現在は量子回路を生成する部分はC++で記述しており、量子回路を書き換えるたびにリコンパイルが発生して格好悪い…

Googleの量子コンピュータフレームワークCirqを使ってみる(3. Cirqのチュートリアルを試す)

量子コンピュータの勉強を続けており、Cirqの資料をひたすら読み進めている。 以下の資料を読みながら勉強中である。 Cir: Tutorial Tutorial — Cirq 0.1 documentation Cirqのチュートリアルは以下に日本語訳と解説がなされており、非常にありがたい。 qiit…

TinyEMU Buildrootを試行する

TinyEMUはQEMUを開発したFabrice Bellard氏が開発したRISC-Vシミュレータだ。 さらに彼はRISC-VのLinuxを起動するためのbuildrootも用意したらしい。RISC-VのMLにアナウンスがあった。 TinyEMU とりあえず超高速のシミュレータでRISC-V Linuxを起動すること…

Googleの量子コンピュータフレームワークCirqを使ってみる(2. 加算器を作ってみる)

量子プログラミングについて少しずつ分かってきたので、もう少しステップを進めていきたい。 自作の量子コンピュータ・シミュレータの拡張を考えるためにも、GoogleやMicrosoftが発表している量子コンピュータのフレームワークについて勉強し、そこでいろい…

ゼロから作る量子コンピュータ・シミュレータ(3. 量子回路で3ビット加算器を作ろう)

前回は半加算器が完成した。という訳で、これを拡張させて全加算器を作成し、さらにこれを数珠つなぎにして3ビットの加算回路を作ろう。 量子回路で全加算器を作ろう 量子回路を使って全加算器を作るにはどうしたらよいのか、少し検索するとすぐ回路を見つけ…

RISC-V Day Tokyo 2018 / Fukuoka で登壇します

RISC-V Day Tokyo 2018が10/18(木) に開催されます。私はRISC-Vを支える技術周辺、エコシステム周りを発表する予定です。 15分しかしゃべらないのですが、興味のある方はどうぞ。 tmt.knect365.com やっぱりメインはRISC-V Readerの日本語訳の配布、そしてDa…

ゼロから作る量子コンピュータ・シミュレータ(2. 複数量子ビットをモデル化して加算回路を作ろう)

前回は1量子ビットをC++でモデル化したのだが、それだけではほとんど何も表現出来ないので複数量子ビットに拡張したい。 複数量子ビットが表現できるようになれば、まずは例として加算器を動かしてみよう。 半加算器と全加算器が実現できればかなり面白い。 …

ゼロから作る量子コンピュータ・シミュレータ(1. 1量子ビットの表現)

次世代計算機講座に参加して、量子コンピュータについて俄然興味がわいてきた。 手っ取り早く量子コンピュータを試すためには、最近になっていろいろ手段が出てきている。 MicrosoftからはQ#、GoogleからはフレームワークとしてCirqがリリースされている。 …

NVDLAのConvolution DMAが実行する畳み込みの手順の解析

NVDLAというか、畳み込み演算をどのようにハードウェアで実現するかということをさらに掘り下げている。 NVDLA : Unit Description Unit Description — NVDLA Documentation NVDLAのConvolution DMAは、以下のような画像に対して入力画像とカーネルを畳み込…

NVDLAの内部構造調査(10. NVDLAのConvolution DMA)

NVDLAの内部構造についてもう少し詳しく解析したいのだが、割としっかりと解説してあるページがあったので読み進めていこう。 参考ににしたのは以下。っていうかNVDLA本家のページである。 今回はConvolutionのためのモジュール。Convolution DMA(CDMA)であ…

次世代計算機講座 <入門編> ~ゲート式量子コンピュータとアニーリングマシン~ に参加した

09/15に早稲田大学で行われた次世代計算機講座に参加した。 量子コンピュータについは何冊か本を読んでわかっているつもりだったのだが、独学の部分がほとんどなのでいろんな講演を聞いてみたいと思い参加した。 最初の京都大学の先生の話は量子コンピュータ…

RISC-Vシミュレータの実装をLambda関数を使って簡単化してみる

GitHub上に公開している自作RISC-Vシミュレータは、命令フェッチ、命令デコーダ、命令実行の部分が分けて実装してある。 命令デコーダは500種類程度ある命令を1つに特定し、その情報に基づいて命令を実行するのだが、その命令の実装はそれぞれの命令で分割し…

NVDLAの内部構造調査(9. NVDLAの各ブロックで何をしているのか)

NVDLAの内部構造についてもう少し詳しく解析したいのだが、割としっかりと解説してあるページがあったので読み進めていこう。 参考ににしたのは以下。っていうかNVDLA本家のページである。 Unit Description (NVDLA) Unit Description — NVDLA Documentation…

Linuxがブートできる自作RISC-VシミュレータをGitHubにアップロードした

自作RISC-Vシミュレータがある程度落ち着いてきたので、キリがいいところでGitHubで公開することにした。 github.com まあSpike(riscv-isa-sim)の劣化Cloneだと言ってしまえばそれまでなので、あまり意味はないのだけれど。。。 図. 自作RISC-Vシミュレータ…

NVDLAの内部構成調査(8. CaffeのprotobufからVirtual Platformのログを解析する)

図は http://nvdla.org/vp.html より抜粋。 NVDLA Virtual Platformを使ってMNISTやCIFAR-10を動作させた。 おおむね動作するようになったのだが、詳細をきちんと解析しなければ単純にアプリケーションを使って遊んだだけになってしまう。 具体的にNVDLAの内…

RISC-Vのランダムテストriscv-tortureの+signature

RISC-V Tortureは、生成したテストパタンをシミュレータで実行し、最後にシグニチャを出力する。 シグニチャを他の実装(Rocket-Chipなど)との結果と比較して正しく実行できたかを判定している。 SpikeおよびRocket-Chipでシグニチャを生成するためには+signa…

RISC-Vのランダムテストriscv-tortureを試す

RISC-Vの実装を作るとまずはテストパタンを生成してテストを流してみたくなるのだが、RISC-Vにはテスト用のパタンがいくつか用意されている。 RISC-V Tortureのダウンロードとインストール RISC-V TortureのConfiguration Tortureの生成パタンの構成を変えた…

NVDLAの内部構成調査(7. Caffeのモデルを使ってNVDLAでCIFAR10を動かす)

前回、NVDLA Virtual PlatformでMNISTを動作させることができた。同じように、NVDLAでCIFAR-10も動作させることができるはずだ。 PGMは1色の画像しか認識できないので、PGMでCIFAR-10の画像を渡すことはできない。そこで、JPEG形式でNVDLAにデータを渡して推…

NVDLAの内部構成調査(6. Caffeのモデルを使ってNVDLAでMNISTを動かす)

前回はNVDLAを使ってCaffeのモデルを実行してみた。 ただし実行結果が分からないので何とか解析できるようにしたい。 nvdla_runtimeの実行オプションには--rawdumpオプションがあるので、これを使えば実行後の結果をダンプできるらしい。 # ./nvdla_runtime …

NVDLAの内部構成調査(5. NVDLA VPによるアプリケーション実行)

前回はCaffeをインストールして、LeNetを実行した結果をnvdla_compilerに食わせて、NVDLAのバイナリファイルを作成した。 これを実行するためには、NVDLA Virtual Platformを実行してLinuxを立ち上げ、そこでnvdlaを動作させるランタイムプログラムを実行し…

Design Solution Forum 2018にて発表します

去年よりも開催が1か月早くて焦っています。 2018/09/12(水)に開催されるDesign Solution Forumにて、RISC-V/IoTのトラックの1つとして発表させて頂くことになりました。 13:30~14:10 で、タイトルは "試しながら学ぶオープンソースプロセッサRISC-V の世界…

RISC-Vを使ったEnclaveプロジェクトKeystone

限りなく内容の無い、メモのような日記になってしまったが。。。 RISC-Vアーキテクチャを使ったセキュリティ技術の開発で、Keystoneというプロジェクトがあるらしい。 Hisa Ando氏の記事で知った。 KeystoneでRISC-Vをセキュア化 20180901 Keystone Open-sou…

NVDLAの内部構成調査(4. NVDLA_compiler と Caffeデータの変換)

NVDLAの動かし方についてもう少しプログラミングモデルを解き明かしていきたいが、いかんせん内部レジスタの仕様を読み進めながらでは効率が悪くて良くない。 それに実際のニューラルネットワークを使いながらインタフェースを見ていかないと、意味が分から…

Freedom-U-SDKで生成したLinuxバイナリを自作RISC-Vシミュレータで実行 (4. 命令セットシミュレータの高速化検討)

RISC-Vの自作シミュレータでLinuxを立ち上げることに成功したが、まだかなりシミュレーション速度が遅いことが心配だ。 原因はすでに解析済み。メモリアクセスが何度も発生しているためにそこが最適化できていない。 以下は前回Google Perftoolsで解析したシ…

NVDLAの内部構成調査(3. プログラミングシーケンス, Register Description Language)

NVDLAの内部構成調査の続き。前回はNVDLAのBDMAについて調べたが、次は実際にConvolutionの操作を見ていかなければならない。 sanity3のテストパタンを見ると、大量のレジスタを設定してるのだが、それをいちいち調べていくのは大変だ。 まずは、NVDLAの基本…