FPGA開発日記

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

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

「ゼロから作るディープラーニング②」を読む (2. 自然言語と単語の分散表現)

ゼロから作るDeep Learning ? ―自然言語処理編作者: 斎藤康毅出版社/メーカー: オライリージャパン発売日: 2018/07/21メディア: 単行本(ソフトカバー)この商品を含むブログ (3件) を見る 「ゼロから作るディープラーニング②」を購入した。 あまり内容を詳…

RISC-V SpikeシミュレータでC/C++のprintfを実現する仕組み (8. RISC-Vのシステムコールを自作ISS上で実装)

UCBが開発しているRISC-VのシミュレータSpikeや、Rocket-ChipのRTLデザインは通常はシステムコールを持っていない。 つまり、当然ながらC言語でprintf("Hello World\n");などと書いても動作しないのだが、そこはコンパイラとフロントエンドサーバfesvr、pk(P…

「ゼロから作るディープラーニング②」を購入 (1. ニューラルネットワークの復習)

ゼロから作るDeep Learning ? ―自然言語処理編作者: 斎藤康毅出版社/メーカー: オライリージャパン発売日: 2018/07/21メディア: 単行本(ソフトカバー)この商品を含むブログ (2件) を見る 「ゼロから作るディープラーニング②」を購入した。第1巻は一応完走…

NVDLAv2のインストール試行

いまさらながら、NVDLAv2のインストールを試行した。 開発環境はUbuntu 18.04LTSだ。使用したリビジョンは7cf6ad5a6e75f01aac1b0041288612e63a5999acを使用した。 github.com commit 7cf6ad5a6e75f01aac1b0041288612e63a5999ac (HEAD -> master, origin/mast…

RISC-V SpikeシミュレータでC/C++のprintfを実現する仕組み (7. RISC-Vのシステムコールとfesvr)

UCBが開発しているRISC-VのシミュレータSpikeや、Rocket-ChipのRTLデザインは通常はシステムコールを持っていない。 つまり、当然ながらC言語でprintf("Hello World\n");などと書いても動作しないのだが、そこはコンパイラとフロントエンドサーバfesvr、pk(P…

Googleの量子コンピュータNISQ向けオープンソースフレームワークCirqを試す (1. インストールとチュートリアル)

Googleの量子コンピュータフレームワークだ!Q#も一応トライしたが、マスターする前にある程度動かした状態で投げ出してしまっていた。 GitHub github.com ドキュメント Welcome to Cirq's documenttation! Welcome to Cirq’s documentation! — Cirq 0.1 doc…

RISC-V SpikeシミュレータでC/C++のprintfを実現する仕組み (6. ファイルシステムの呼び出し)

Hello Worldのプログラムを動かしながら、RISC-V Spikeシミュレータのログを追っていき、RISC-Vのブートシーケンスを追っていく、その3。 Spikeシミュレータはファイルの呼び出しもできる。これを実現しているのは、Spikeとは外部に接続されているpk(Proxy K…

Spectre 1.1 (CVE-2018-3693) の論文を読む

CPU

Spectre 1.1/1.2の論文は早くから公開されており、Intel / Armも対策のためのWhitePaperを出している。 どいう問題なのか理解するために読んでみた。 Speculative Buffer Overflows: Attacks and Defenses https://arxiv.org/pdf/1807.03757.pdf この論文、…

AWS上で動作するRISC-VチップFireSimのチュートリアルを試す 7. FireSimのFPGAレベルシミュレーション

FireSim v1.2でベンチマークプログラムを動かそうとしているのだが、どうもFPGAレベルでのシミュレーションでないと動かない? FPGAレベルでのRTLシミュレーションは、Amazon AWS環境でないと動かない気がする。 F1インスタンスで使用しているVU9Pのデザイン…

AWS上で動作するRISC-VチップFireSimのチュートリアルを試す 6. FireSimのシミュレーション環境解析

FireSim v1.2でベンチマークプログラムを動かそうとしているのだが、なかなかうまく動かない。 NoNIC環境 (FireSim Rocket-Chip Standalone環境)の場合 これは簡単だ。riscv-testsの環境でテストパタンをビルドして、それを持ってくれば簡単なC言語のプログ…

WindowsでX-Server越しにEmacsを立ち上げると初期画面がおかしくなる件

Emacsが大好きである。好きすぎてありとあらゆる環境でEmacsを使っているのだが、どうも最近様子がおかしい。 最新のEmacsを使うと、初期画面の大きさがおかしくなる。 いろいろと環境を変えながら調査していると、Virtual BoxからXクライアントを通じてEmac…

AWS上で動作するRISC-VチップFireSimのチュートリアルを試す 5. FireSim v1.2 を試行する

FireSim v1.2が公開された。主な変更点としては、Rocket-ChipだけでなくBOOMにも対応したとのことなので試行してみよう。 github.com FireSim v1.2環境をCloneする FireSimのリポジトリを、Tag付きでCloneする。さすがにriscv-toolsは取ってこなくても良いと…

ROP(Return-Oriented Programming)についての勉強

Spectre 1.1 / Spectre 1.2 についての論文を読んでいるのだが、その中でROP(Return-Oriented Programming)というものが登場しており、どんなものかわからなかったので調べてみた。 具体的には、プログラムのスタックがオーバフローすることにより悪意のある…

FireSimのRTLシミュレーション環境を試す(1. MIDAS-Level環境でのベンチマークシミュレーション)

Amazon AWS F1インスタンス上で動作するRocket-Chip環境、FireSimはRTLシミュレーション環境が用意されている。 チュートリアルを試しながら、さっそく実行してみよう。 Debugging & Testing with RTL Simulation Debugging & Testing with RTL Simulation —…

MKDocsを使ってFPGA開発日記の記事まとめページを作り直した

初めて知ったのだが、MKDocsはGoogleっぽいページを作ることができるサイトだ。 これまではGitHub PagesでMarkdownを直接書いて作っていたのだが、MKDocsはMarkdownを使って簡単にかっこいいページを作ることができるのでやってみた。 ちなみに、MKDocsでの…

TLBleed : Trasnlation Leak-aside Buffer の論文を読む

CPU

TLBleedの論文がやっと発表された。The Registerで記事が出てから論文が出てくるまでずっと監視していたのだが、随分と時間がかかったね。 www.vusec.net このTLBleedの論文非常に長いので読むのがつかれるし、あまりセキュリティの知識とか無いので大変なの…

TensorFlow+Kerasに入門(9. Keras2のMNISTサンプルに対応)

Keras2の簡単な例題モデルとしてこれまではCIFAR-10を使っていたが、一応MNISTも対応しておきたい。 Keras2のmnist_cnn.pyが動作するように対応を実施した。 結論から言うと機能が足りておらずすぐには動作しなかった。keras2cppにいろいろと機能を追加した…

RISC-VのZedBoard環境が動作しなくなっている問題

しばらく前から、RISC-VをZedBoardで動作させるための環境fpga-zynqリポジトリが動作しなくなっている状態であった。 (これは私も確認していた)。 GitHub Issueにもあげられており、しばらく監視していたのだが全く反応がないので諦めていたのだがこの度修正…

TensorFlow+Kerasに入門(8. RISC-V Spike ISS でkeras2cppを動作させる)

前回まででx86上でのkeras2cppの改造はひとまず完成したので、とりあえず目的のRISC-Vアーキテクチャへの移植を行ってみたい。 移植と言っても、GCCのターゲットを変えてリコンパイルするだけである。 あとはRISC-VのISSであるSpikeで動作させるだけだ。 run…

LLVM Sanitizerを試す

Zapccを評価するために、図らずも自作RISC-VシミュレータをLLVMに移植したのだった。 LLVMに移植したので、どうせならLLVMのメモリリークチェック機能などについて試行してみたい。 TuringCompleteFM にも出ていたのだが、LLVMのSanitizerはかなり優秀らしい…

「ハン・ソロ/スターウォーズ・ストーリー」を見てきた

たとえ2時間映画館に座っているのがおっくうでも、スター・ウォーズは見に行きます。 starwars.disney.co.jp あまりストーリーのネタバレは書かないけど、なるほど、米国で評価が低い気持ちは、何となくわかる気がする... 「ローグ・ワン」があれだけヒット…

TensorFlow+Kerasに入門(7. Keras2cppをimage_data_formatに対応させる)

Keras2cppを使ってKerasのモデルをC++のコードに変換したのだが、まだ問題がある。デフォルトの画像データフォーマットである image_data_format = channels_last に対応していないことだ。 バックエンド - Keras Documentation これにより、画像データをデ…

TensorFlow+Kerasに入門(6. keras2cppによるC++でのCIFAR10推論実行)

keras2cppのコードを解析していき、いくつかkeras2cppのコードがKeras2に合っていない部分を発見した。 前提条件 今回はkeras2cppの実装にある程度合わせるため、input_image_formatをchannel_firstに設定している。 これは${HOME}/.keras/keras.jsonで設定…

TensorFlow+Kerasに入門(5. keras2cppによる推論の試行→失敗の解析)

FPGAの部屋のmarseeさんの記事を見て、TensorFlow+Kerasに入門してみた。 というかmarseeさんの記事で掲載されているソースコードをほとんどCopy & Pasteして実行してみているだけだが... TensorFlow+KerasでCifar10を学習するサンプルプログラムを実行して…

Chisel-Templateを使ってオリジナルデザインを作ってみるチュートリアル (2. シミュレーションモデルの作成)

ハードウェア記述言語であるChiselのチュートリアルを試してみている。 ChiselはScalaをベースにしているDSL(ドメイン特化言語)だ。 したがって、Scalaを勉強しながら進めていく必要がある。 Chiselの理解のために、簡単なCPUを作ってChiselを使いシミュレー…

Chisel-Templateを使ってオリジナルデザインを作ってみるチュートリアル (1. デザインの作成)

RISC-Vの実装であるRocket-ChipはChiselと呼ばれるDSLで記述されているのだが、この書き方やテクニックについてはあまり知られていない(まあ知る必要もないが...) ただし、AWSで動作するFireSimを改良したりだとか、Rocket-Coreを改造する場合にはこの知識は…

「量子コンピュータ・超並列計算のからくり」を購入

師匠のブログでおすすめとのことで、すごく分かりやすいよとアピールを受けたので購入。 量子コンピュータ 超並列計算のからくり (ブルーバックス)作者: 竹内繁樹出版社/メーカー: 講談社発売日: 2013/11/08メディア: Kindle版この商品を含むブログ (1件) を…