21Q1.01B

自作回路を PYNQ につなぐ様々な方法 (5)

自作回路を PYNQ から使うための設計・開発法に関するコースの最終回になります。今回の設計も、対象のアプリケーションがステンシル計算であること、IP コアがフル機能の AXI をもつ場合を取り上げることは変わりません。異なるのは、IP コアを Vitis HLS (2019.2 以前の Vivado では Vivado HLS とよばれていました) による高位合成で作成する点です。 本コースで使用したハードウェア記述 (一部ソフトウェアも含む) は、GitHub リポジトリ上で公開して...
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.01B

自作回路を PYNQ につなぐ様々な方法 (4)

自作回路を PYNQ から使うための設計・開発法に関するコースの第4回です。今回は、「AXI でプロセッサとつながる IP コアを作る (5)」で紹介したステンシル計算コプロセッサを再び取り上げ、IP コアがフル機能の AXI をもつ場合の設計のポイントを確認します。前述の記事でも、ハードウェア実装とソフトウェア実装 (C 言語による) とを比較してみましたが、Python ではどうでしょうか。 本コースで使用したハードウェア記述 (一部ソフトウェアも含む) は、GitHub リポジトリ...
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.01B

自作回路を PYNQ につなぐ様々な方法 (3)

自作回路を PYNQ から使うための設計・開発法に関するコースの第3回です。ここからは、PS と多量のデータのやりとりを必要とする回路を含んだ設計例の説明に入ります。今回は、AXI-Stream で回路からデータを PS に流し込み、そのデータをファイルに保存する、という例を取り上げます。今回の例は、「PYNQ を使って Python で手軽に FPGA を活用 (5)」の後半で紹介されている、AXI-Stream で来たデータを加工して AXI-Stream で返す、といった回路にも応用でき...
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.01B

自作回路を PYNQ につなぐ様々な方法 (2)

自作回路を PYNQ から使うための設計・開発法に関するコースの第2回です。今回は、第1回で作成したナイトライダー回路の IP コアに少し手を加えることで、自身が制御用の AXI Lite インタフェースを持っている場合の設計例を説明したいと思います。また、自作の IP コア専用のドライバクラスを Python で作成する方法についても取り上げます。 本コースで使用したハードウェア記述は、GitHub リポジトリ上で公開しています。今回の関連するファイルは、knight2 フォルダ内にあ...
21Q1.05A

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

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

HPC アプリを FPGA 上で加速! (1)

みなさん、こんにちは。広島市立大学の窪田と申します。今回、ACRi ブログを執筆する機会をいただきましたので、高位合成ツールである Xilinx Vitis を使って連立一次方程式の求解法である Conjugate Gradient (CG) 法を FPGA で動かす例題を使って、ソフトウェアの FPGA への移植について説明します。 はじめに 私自身は、主に HPC 向けのソフトウェアや並列化コンパイラを研究、開発してきたのですが、最近は FPGA を使った処理の高速化にも手を広...
21Q1.03A

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

ACRi ルームではリモートで FPGA を利用できる環境が提供されています。セットアップ済みの開発ツールを使ってすぐに FPGA 開発をはじめることができます。…と言われても、さて何からはじめてみよう、という人もいるかもしれません。身近な問題から FPGA に向くものを選んで実装するというのは (残念ながら) 簡単ではないので仕方ないことだと思います。 そこで、楽しく FPGA 開発をはじめてみる題材としてゲームを作ってみるのはいかがでしょう。この連載では、FPGA を使った○×ゲーム...
21Q1.02B

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

どうも皆さんお久しぶりです。筑波大学計算科学研究センター所属の小林諒平です。 昨年はスーパーコンピュータでも使われ始めた FPGA という記事を執筆させて頂き、そして今年また本ブログにて記事を執筆させて頂く機会を賜りましたので、今回は計算科学研究センター (以下、当センター) にて FPGA をどのように活用しているのかについて紹介していきたいと思います。 このコースは、ACRiQ1.04 と同じように FPGA やアダプティブコンピューティングの研究論文をその著者が紹介するシリー...
21Q1.01B

自作回路を PYNQ につなぐ様々な方法 (1)

愛知工業大学の藤枝です。この度また ACRi ブログでの執筆の機会をいただきました。今回は、2020年第1クォーター (20Q1) で三好さんが執筆された、「PYNQ を使って Python で手軽に FPGA を活用」の内容を補完するコースとなります。 FPGA や Zynq での設計にそれなりに慣れた人であれば、上記のコースを読んだあと少しばかり試行錯誤をすれば、すぐに自分の設計した回路を PYNQ 上で動かせるかもしれません。ただ、FPGA 開発に関する初級~中級レベルのコースで、...
20Q4.03A

FPGA 使え、って社長に言われた。さぁ、どうする? (5)

前回までのお話  自社の主力製品を調査し、FPGA 事業部の方向をすり合わせることにした Y 君。ただ、自社製品で取り扱っているからという理由だけで通信を対象とした製品を扱うのは不十分と考え、幾らかの市場調査を加え、特にリアルタイム性を有する Social Media という分野に焦点をあててプレゼンを行った。打ち合わせにおいて大きな反対はなかったものの、宿題として具体的な製品イメージおよび製品仕様の提出が課された。慌てた Y 君は、作成したプレゼン資料を持参し、改めて先生のもとへ向かっ...
タイトルとURLをコピーしました