20Q2.05A

ホームサービスロボットにおける FPGA の応用例 (3): ロボットと FPGA の統合その2

前回は、ロボットのシステムの核となる ROS と FPGA の統合方法の1つを紹介しました。今回は、前回の方法とは異なる ROS と FPGA の統合方法、およびそのアプリを紹介します。 ROS と FPGA の統合その2 ROS と FPGA の統合方法について紹介します。以下に図示するこの方法は、前回紹介した hw/sw 複合体 (ここではXilinx Zynq) と 開発環境 (ここでは Xilinx Vivado HLS、 SDSoC) を用い、計算処理の一部を FPGA ...
20Q2.04B

Synthesijer と高位合成ツールの作り方 (3)

みなさん、こんにちは。この「Synthesijer と高位合成ツールの作り方」のシリーズでは、全5回を通じて Synthesijer をベースに FPGA 向けの簡単な高位合成処理系を作る方法を紹介していきます。例は Java ですが、お気に入りの言語向けの処理系を開発する足がかりとして利用できるように紹介できればと思ってます。 前回は、Synthesijer のコンセプトを紹介し、Synthesijer が Java をハードウェア・ロジックに変換する処理の流れを紹介しました。第1回、...
20Q2.03B

広がり続ける FPGA の応用と人工知能への活用 (3)

前回は FPGA を活用することで低遅延、高スループット、低消費電力を実現できるしくみについて解説しました。そしてそのメリットをより多くの方に享受いただくための開発環境として Vitis が誕生したことをお話ししました。 今回はその開発環境について解説します。さらに、8月からオープンとなった ACRi ルーム (FPGA 利用環境) を使って実際にツールとハードウェアを動かしてみましょう。 統合ソフトウェアプラットフォーム "Vitis" とは ザイリンクス社 Vitis (...
20Q2.02A

IP の世界からこんにちは (3)

IP インテグレータを用いた回路やシステムの設計について学ぶコースの第3回です。前回は、IP パッケージャを使って、シリアル通信による文字送信回路の IP コアを作成しました。 今回は、これらと既存の IP コアとを組み合わせて、ブロック図を使った設計で「Hello, FPGA」を PC に送信する回路を作成して、その動作を確認していきます。 ブロック図作成の下準備 制御部の回路の再考 今回作成する回路は、「シリアル通信で Hello, FPGA (5)」(以下、「以前...
20Q2.01A

FPGA で始めるエッジディープラーニング (5)

みなさんこんにちは。この記事は、ACRi ブログの Deep Learning コースの第5回目です。 前回の記事までで、畳み込み層、全結合層、プーリング層、活性化関数 ReLU の全ての C 実装が完成しました。今回の記事では、これらの層を結合して推論関数全体を作っていきます。 モデルの実装 第2回で作成した推論モデルの図を以下に再掲します。 最初に 1x28x28 の画像を入力し、その後 Conv2d -> ReLU -> MaxPool2d と...
20Q2.10B

NNgen と FPGA で作るニューラルネットワーク・アクセラレータ (2)

本コースの第2回目は、ニューラルネットワークのモデル記述からどのようにハードウェアが生成されるか、NNgen コンパイラの仕組みを紹介します。 NNgen の全体構成 第1回の記事からの再掲ですが、NNgen のコンパイラ構成は下図の通りです。 NNgen でハードウェア化するニューラルネットワークのモデル表現方法は、NNgen のオペレータを組み合わせて、プログラマが計算グラフを定義する方法と、Tensorflow や Pytorch などの一般的な DNN フレームワーク...
20Q2.09B

MIG を使って DRAM メモリを動かそう (2)

この記事では、DRAM の基本的な構成と、MIG とアプリケーション回路の間に設けるユーザインタフェースと呼ばれるモジュールについて解説していきます。前回の記事のように、説明では、Micron 社の DDR3 SDRAM MT41K128M16JT-125 という 256MB DRAM チップを搭載する Arty A7-35T FPGA ボードを想定します。 DRAM の基本的な構成 下図は DRAM ベースのメモリシステムの一般的な構成を示しています。 図1: DRAM ベ...
20Q2.08A

新しいコンピューティング・システムとしての FPGA (2) ~ いろいろな FPGA 接続ネットワーク

本コースでは、複数の FPGA を用いた計算機システムの構成と、私達が研究開発が行っているカスタム・コンピューティング・システムについて紹介していきます。 第2回では、いろいろな FPGA 接続ネットワークについて紹介していきます。 20年前から研究されている FPGA 直結ネットワーク 以前より、複数の FPGA を直結する研究開発は行われています。 2000年代には、 FPGA のチップを独自のバスで直結する研究が盛んに行われていました。例えば、英 Imperial...
20Q2.07A

非同期式回路と FPGA 〜「作ってみる編」(2)

みなさん、こんにちは。このコースでは、ある簡単な例題を非同期式回路として FPGA 上に実装し、ツールを適切に使うことで、正しく動作するものを作る、ということ目指しています。前回は、非同期式回路の超入門ということで、非同期式回路のイメージをざっくりと紹介しました。 今回は、非同期式回路の実行制御のかなめとなるハンドシェイクについて少し詳しく紹介したいと思います。 ハンドシェイクとは ハンドシェイクという用語は、情報通信分野の通信プロトコルなどでよく使われる用語だと思います。そ...
20Q2.01A

FPGA で始めるエッジディープラーニング (4)

みなさんこんにちは。この記事は、ACRiブログのDeep Learningコースの第4回目です。 前回の記事では、畳み込み層の C 実装、結果確認を行いました。今回の記事では、残りの未実装レイヤーである全結合層、プーリング層、活性化関数 ReLU の実装をしていきます。 各層の実装 全結合層 全結合層は入力ベクトル X に対して重み行列 W をかけ、その後バイアス B を加算する処理です。第2回の記事の図を以下に再掲しますが、この図の通りに計算が行えれば良いです。 ...
20Q2.05A

ホームサービスロボットにおける FPGA の応用例 (2): ロボットと FPGA の統合その1

前回は FPGA の応用先であるホームサービスロボットを紹介しました。また、FPGA を応用することによるメリットを述べました。 今回は、ロボットのシステムの核となる ROS と FPGA の統合方法について紹介します。 ロボットと FPGA の統合に対する要求 ロボットと FPGA の統合に対する要求を以下に挙げます。 ロボットに既に搭載される計算機・ソフトウェアシステムと簡単に統合できることその計算機の負荷をオフロードできることその計算機より高効率 (高速処理・低消...
20Q2.04B

Synthesijer と高位合成ツールの作り方 (2)

みなさんこんにちは。この「Synthesijer と高位合成ツールの作り方」のシリーズでは、全5回を通じて Synthesijer をベースに FPGA 向けの簡単な高位合成処理系を作る方法を紹介していきます。例は Java ですが、お気に入りの言語向けの処理系を開発する足がかりとして利用できるように書いていくもりです。 前回は、高位合成ツールとは何かについて説明し、また、このシリーズのベースとする Synthesijer を簡単に紹介をしました。今回は、Synthesijer のコンセ...
20Q2.03B

広がり続ける FPGA の応用と人工知能への活用 (2)

こんにちは! 前回は FPGA を活用して AI を実現するとどのようなメリットがあるか、いくつかの応用事例を交えて概観しました。 今回は FPGA がそうしたメリットを実現できるしくみについて解説します。そして後半には今までの課題とそれを解消するべく登場した開発環境について触れたいと思います。 FPGA はなぜ低遅延、高スループット、低消費電力を実現できるのか 前回のブログで FPGA を活用して AI を実現するメリットを5つ挙げました。そのうち特に遅延時間とスループット...
20Q2.02A

IP の世界からこんにちは (2)

IP インテグレータを用いた回路やシステムの設計について学ぶコースの第2回です。前回は、IP インテグレータの概要と、いくつかの既存の IP コアの例を見てきました。今回は、自作の IP コアをこれら既存の IP コアと組み合わせて使うために、IP パッケージャというツールの使い方を学びます。 今回の内容に関する Xilinx 社の公式ドキュメントの文書番号はUG1118となります。詳細な仕様などは上記ドキュメントを参照してください。 IP コア作成の下準備 IP コア作成の...
20Q2.01A

FPGA で始めるエッジディープラーニング (3)

みなさんこんにちは。この記事は、ACRi ブログの Deep Learning コースの第3回目です。 前回の記事では、MNIST データセットに対するネットワークモデルの作成・学習を行いました。この記事からは FPGA 上で推論処理を動かすために、まずは C++ で推論処理コードを記載していきます。 C++ 実装の初回のこの記事では、畳み込み層をターゲットに C++ 実装を始めます。具体的な内容は、(1) 畳み込み層の実装、(2) 動作確認 (C 検証、C/RTL 協調検証) で...
20Q2.10B

NNgen と FPGA で作るニューラルネットワーク・アクセラレータ (1)

はじめに 皆さん、こんにちは。本コースを担当する東京大学の高前田です。 私たちの研究室、CASYS (Laboratory for Computer Architecture and Systems) では、コンピュータアーキテクチャ (コンピュータの構造や設計技術、コンピュータそのものの在り方) を中心に、FPGA や専用ハードウェアによるカスタムコンピューティング、機械学習処理などの計算対象アルゴリズムとハードウェアの協調設計、ハードウェア設計を支援する高位合成コンパイラなど、...
20Q2.09B

MIG を使って DRAM メモリを動かそう (1)

みなさんこんにちは。この「MIG を使って DRAM メモリを動かそう」のシリーズでは、全5回を通じて Xilinx Memory Interface Generator (MIG) という IP コアをベースに Xilinx FPGA で DRAM メモリを動かす方法を紹介していきます。説明では教育向けに設計された Arty A7-35T FPGA ボードを用いますが、他の FPGA ボードにも同様に適用できます。 第1回の今回は、FPGA 設計で DRAM を利用する必要性について説...
20Q2.08A

新しいコンピューティング・システムとしての FPGA (1) ~ 注目されはじめた FPGA

みなさん、こんにちは。ACRi ブログ第2期の8番目のコースを担当する宮島と申します。私たち、理化学研究所 計算科学研究センター (R-CCS) プロセッサ研究チームでは、次世代の計算機システムに FPGA を利用できないかと考え、研究開発を行っています。 本コースでは、複数の FPGA を用いた計算機システムの構成と、私達が研究開発が行っているカスタム・コンピューティング・システムについて紹介していきます。第1回の記事では、FPGA を計算機システムに用いる理由とコンセプトを紹介します...
20Q2.07A

非同期式回路と FPGA 〜「作ってみる編」(1)

みなさんこんにちは。このコースでは、「非同期式回路」というものはいったいどんなものなのか、FPGA に実装したらどうなるのか、ということを非常に大雑把に紹介していきたいと思います。ある簡単な例題を非同期式回路として FPGA 上に実装し、ツールを適切に使うことで、正しく動作するものを作ってみる、ということ目指したいと考えています。 まず、第一回は「非同期式回路の超入門」と題し、非同期式回路のざっくりとしたイメージを紹介します。 非同期式回路の超入門 非同期式回路とはいったいど...
20Q2.01A

FPGA で始めるエッジディープラーニング (2)

みなさんこんにちは。この記事は、ACRi ブログの Deep Learning コースの第2回目です。 前回の記事では、Deep Learning とは何か、FPGA で Deep Learning するメリットについて話しました。このコースのこれ以降の記事では、FPGA をターゲットとした Deep Learning 用デザインの開発を始めていきます。特にこの記事では、まずは Python 上で学習コードを動作させ、FPGA 上で動かすためのネットワークモデルを作成します。 これ...
タイトルとURLをコピーしました