FPGA

24Q1

カウンタ回路を FPGA で動作させて挙動を確認しよう(入門編)

この記事では、ACRi ルームのコンピュータと FPGA を利用して、Verilog HDL で記述される簡単なカウンタ回路を動作させて、その挙動を確認する方法を説明します。 Verilog HDL で記述したハードウェアの内容や、論理合成、配置・配線といった処理の詳細は後回しにします。Vivado を活用して、FPGA を動かすこと、動かした FPGA の動作を確認することを目標にします。 FPGA の設計・開発に慣れていないみなさんを対象とする初級の内容です。ACRi ルームの...
21Q2.02A

TVM を使ってディープラーニングを手軽に FPGA で高速化 (3)

みなさんこんにちは。この記事は「TVM を使ってディープラーニングを手軽に FPGA で高速化」の第3回目です。前回に引き続き、今回は Xilinx Kria KV260 ボードでの TVM Vitis-AI Integration を動作させます。 Kria KV260 Xilinx Kria KV260 は Vision AI スターターキットとして販売される FPGA ボードであり、Xilinx が提供するビルド済みのAIアクセラレーションアプリを利用することができます。KV...
21Q2.02A

TVM を使ってディープラーニングを手軽に FPGA で高速化 (2)

みなさんこんにちは。この記事は「TVMを使ってディープラーニングを手軽に FPGA で高速化」の第2回目です。 今回は TVM Vitis-AI Integration を利用して、DNN モデルを Ultra96V2 向けにコンパイルし、実際に実行してみます。 本記事で紹介する手順は TVM Vitis-AI Integration に基づいています。本記事は以下の環境で実行しています。 Avnet Ultra96-V2PYNQ v2.6DPU-PYNQ v1.2.0ホスト...
21Q2.02A

TVMを使ってディープラーニングを手軽にFPGAで高速化 (1)

こんにちは、フィックスターズの丸岡です。 フィックスターズでは、多種多様なハードウェア向けのソフトウェアの高速化や、その知見を活かしたアルゴリズムの提案、ソフトウェアシステムの開発などに貢献させていただいています。近年では機械学習 (Machine Learning, ML) 分野の急速な発達や DX (Digital Transformation) の推進によって、ML を含んだアプリケーション開発の需要が増えています。ML の中でも特にディープニューラルネットワーク (Deep Ne...
21Q2.01A

Xilinx開発ツールのインストール:(1) Vivado MLのインストール

ここでは Xilinx 社の FPGA の開発環境である Vivado MLのインストール手順を解説します。手順は以前のVivadoとほぼ同じです (差異は手順5の無償版と有償版の名称の変更のみです)。Vivado は、HDL からビットストリームファイルの生成、FPGA への書き込みまでの一番下位の部分を担当するツールです。中規模までのほとんどの FPGA は無償版の Vivado ML Standard Edition で開発できます。下記よりダウンロードできます。 対応OS...
コース紹介

2020年度の ACRi ブログに掲載された30コースの紹介

読みたいコースに簡単にアクセスできるように、2020年度の ACRi ブログのコースをまとめました。2021年度の ACRi ブログは2021年4月から始まります。ご期待ください。 2020年度 第2クォーター 2020Q1 PYNQ を使って Python で手軽に FPGA を活用 ロボットでも注目される FPGA ⼊⾨ AWS F1 で始めるサーバーサイド FPGA FPGA を使って基本的なアルゴリズムのソーティングを劇的に高速化 スーパーコンピュー...
21Q1.05A

DA コンバータがなくてもできる FPGA ピアノ (5)

本連載もいよいよ最終回。デルタシグマ変調も正弦波生成もできるようになりましたので、いよいよ FPGA ピアノを完成させます。異なる周波数で発振する複数の正弦波生成モジュールを並べ、複数の音を同時に出力できるようにします。つまり和音の演奏を可能にします。さらに BRAM を用いた ROM テーブルに楽曲のデータを保存しておき、それを読み出しながら自動演奏する機能も実装し、最後は本連載の「卒業演奏」に臨みます。 まずは鍵盤に見立てたスイッチボタンと正弦波の生成を連携させるために、前回の設計を...
21Q1.04A

HPC アプリを FPGA 上で加速! (5) 高速化と大規模化

このブログも今回で最終回となります。このブログの第2回から第4回まで、係数行列が16×16の比較的小規模な連立一次方程式を扱ってきました。これを小規模な FPGA である Ultra96-V2 で上で高速化してみます。また、大規模な係数行列への対応も検討してみます。今回使ったプログラムも github 上の solver/cg/ocl_unroll, solver/cg/ocl_r16_spmv, solver/cg/ocl_large においてありますので参考にして下さい。 小規模な問...
21Q1.02B

FPGA for HPC:宇宙物理アプリケーションをマルチ FPGA で高速化 (5)

このコースもいよいよ最終回となりました。最後は、宇宙物理アプリケーションの支配的な処理である ART 法を加速する FPGA アクセラレータの性能が FPGA の台数に応じてどのようにスケーリングしていくかを評価していきます。 性能評価 評価環境 本論文では、FPGA アクセラレータの実行性能を GPU の実行性能と比較しながら性能評価を行っています。そのためのプラットフォームとして、計算科学研究センター (以下、当センター) で稼働している以下の 2 つの HPC システム...
21Q1.05A

DA コンバータがなくてもできる FPGA ピアノ (4)

前回はデルタシグマ変調回路を実装して振幅の自由を手に入れました。もはやパルス波じゃなくても出力できます。そこで今回は正弦波を FPGA で生成して出力します。三角関数の計算はどうしましょうか? BRAM でテーブルを作って索く? 確かに定番ですが、他の方法はないでしょうか。 CORDIC? それもありますね。でも、やっぱりテーブルが必要です。今回は題して「テーブルがなくてもできる正弦波出力」。もちろんテーブルを使ったって構わないのですが 、実装の選択肢を色々と持っておくことも何かの時には役に立...
21Q1.04A

HPC アプリを FPGA 上で加速! (4) Ultra96-V2 での実行

前回までは Alveo U50 上で Vector Add の template や CG 法のプログラムを実行しましたが、今回はエンベデッドプラットフォームと呼ばれる ZCU102, ZC706, Ultra96-V2 などで CG 法のプログラムを実行してみます。 なお、このブログの第2回でも少し触れたのですが、Vitis 2020.2 では、実機の Hardware での実行と Emulation-SW でのエミュレーションの演算結果が異なることがあるようです。そのため、今回のブロ...
21Q1.02B

FPGA for HPC:宇宙物理アプリケーションをマルチ FPGA で高速化 (4)

第4回目のこの記事では、ART 法の並列計算をマルチ FPGA に展開するために、第2回目の記事で紹介した宇宙物理アプリケーションの支配的な処理である ART 法の FPGA アクセラレータに、前回の記事で紹介した OpenCL プログラミングを用いた並列 FPGA 処理システムである CIRCUS をどのように適用するかを紹介します。 ART 法アクセラレータをマルチ FPGA 上に実装 概要 第2回目の記事のおさらいですが、ART 法の実装は複数の PE を Channe...
21Q1.05A

DA コンバータがなくてもできる FPGA ピアノ (3)

今回は1ビットのディジタル出力を使ってアナログ信号を作り出すデルタシグマ型の DA コンバータを FPGA で実装します。これによってパルス波の振幅を変えることで前回作ったピアノの音量を調整してみます。デルタシグマって聞いたことはあるけど理論が何だか難しそう、というイメージをお持ちの方もいらっしゃるかもしれません。でも、そんなことはありません。Z 変換ができなくても大丈夫、基本原理はちゃんと理解できます。大部分の処理をディジタルで行うので FPGA 実装に向いていますし、回路構造もとても単純で...
21Q1.04A

HPC アプリを FPGA 上で加速! (3) CG 法の高速化

こんにちは。広島市立大学の窪田です。前回、CG 法のプログラムを FPGA 上で実行できるようにしました。今回は、この FPGA 上で実行されるカーネルの高速化を試みます。前回使ったプログラムは github 上のsolver/cg_ocl_base ディレクトリから、今回高速化したプログラムは solver/cg/ocl_ell_lf2 ディレクトリから取得できるようにしました。 回路の合成 Vitis の GUI の統合環境を使って C/C++ のプログラムを build して...
21Q1.03A

ACRi ルームの FPGA で○×ゲームを作って遊んでみよう (2)

ACRiルームのFPGAで○×ゲームを作って遊んでみよう ACRi ルームで楽しく FPGA 開発をはじめてみる題材としてゲームを作ってみるのはいかがでしょう。この連載では、FPGA を使った○×ゲームを作ることを題材に FPGA 開発をはじめてみることにします。リソースは○×ゲームで FPGA 開発をはじめてみようにあります。 今回の記事のねらい 開発の流れは、○×ゲームで FPGA 開発をはじめてみよう (RTL 編) をご覧ください。この記事では、○×ゲームがどう作られ...
21Q1.02B

FPGA for HPC:宇宙物理アプリケーションをマルチ FPGA で高速化 (3)

本連載も第3回目となり折り返し地点に差し掛かってきました。前回の記事では、ART 法のハードウェアアクセラレータは、複数の FPGA に跨がった巨大な演算クラスタを構築できるような設計コンセプトで実装されていることを説明しました。今回の記事では、計算科学研究センター (以下、当センター) にて研究開発された、複数の FPGA を利用した並列計算の実現の根幹を成す FPGA 間通信技術について紹介していきます。この研究成果は論文として出版されており、この通信技術について詳細に知りたい方は、そちら...
21Q1.04A

HPC アプリを FPGA 上で加速! (2) CG 法の FPGA への移植

みなさん、こんにちは。広島市立大学の窪田です。1回目のブログでは、「HPC アプリを...」というタイトルにもかかわらず、Vitis の template しか扱いませんでしたが、今回は、HPC アプリとして連立一次方程式の求解法である CG 法を取り上げ FPGA 向けに移植する手順を説明します。通常の CPU で動作する逐次版と FPGA へ移植したバージョンを github から取得できるようにしています。C/C++ 言語のプログラムを最小限の変更で Xilinx の FPGA 向けに移...
21Q1.05A

DA コンバータがなくてもできる FPGA ピアノ (2)

前回の実装では FPGA から指定した周波数のパルス波を出力し、圧電スピーカーから音を出すことができるようになりました。あとは音階に対応した周波数を各ボタンスイッチに割り当てれば、だいぶピアノらしくなるはずです。いわば FPGA ピアノの調律の作業です。さて、ピアノの調律といえば音の高さだけではなく音色の調整も行います。そこで今回は簡易的な音色の調整機能として PWM (Pulse Width Modulation) のメカニズムを実装して、自由にパルス幅を変更できるようにしてみましょう。また...
21Q1.02B

FPGA for HPC:宇宙物理アプリケーションをマルチ FPGA で高速化 (2)

前回の記事では、宇宙物理アプリケーションになぜ FPGA を利用しようと考えるに至ったかについて紹介しました。2 回目となる今回は、宇宙物理アプリケーションの支配的な処理である ART 法 (前回の記事参照) のハードウェアアクセラレータをどのように FPGA に実装していくかをご紹介します。 FPGA-based ART accelerator 実装の概要 1 FPGA に実装される ART 法のハードウェアアクセラレータ。各 Processing Element (PE)...
21Q1.05A

DA コンバータがなくてもできる FPGA ピアノ (1)

この連載では、少しホビーエレクトロニクス的なテイストも交えながら、FPGA ボードのスイッチボタンを鍵盤に見立てた電子ピアノの作成例をご紹介します。 オーディオ信号の出力となると、FPGA に DA コンバータを接続し、ディジタル信号をアナログ信号に変換するというのが普通かと思います。実際、廉価な FPGA ボードでもオーディオ用 DA コンバータを備えているものがかなりありますし、DA コンバータを搭載した拡張基板も色々とあるのですが、本連載ではあえて「DA コンバータがなくてもできる...
タイトルとURLをコピーしました