特集 OpenCLで直接I/O 第8章 Altera SDK for OpenCLのI/Oチャネル機能で デバイス直接アクセスに挑戦 画像データをダイレクト入力! OpenCL によるカメラ制御&画像処理 三好 健文 Takefumi Miyoshi FPGA ならではの OpenCL の活用方法として I/O チャネルの使用事例を紹介します.I/O チャネルを使えば OpenCL カーネルから外部デバイスを直接制御することができます.ここでは DE0-Nano-SoC を使用して,L チカ を例題に開発フローを説明し,カメラを使ったアプリケーション事例を紹介します.OpenCL による開発の手軽 さと FPGA ならではのハードウェア制御を味わってみましょう. メイン・メモリ ホスト・ プロセッサ アクセラレータ (GPUなど) OpenCL カーネル 一般には,一度 メイン・メモリ を介してデータ をやりとりする 必要がある I/Oデバイス (ネットワーク・ アダプタなど) 外部へ (a)一般のアクセラレータ上のOpenCLカーネルで 外部デバイスにアクセスする際のデータの流れ メイン・メモリ FPGAに同居させた制御回路を 介してOpenCLカーネルは直接 外部とデータをやりとりできる FPGA ホスト・ プロセッサ OpenCLカーネル から生成した回路 OpenCL カーネル 外部デバイス 制御回路 外部へ (b)Altera社のI/Oチャネル拡張を使う際のデータの流れ 図 1 一般の OpenCL 環境と I/O チャネルが使える FPGA 上の OpenCL 環境での外部とのやりとりの違い.I/O チャネルを使うと外部に直 接アクセスできる 1.FPGA ならではの OpenCL 拡張 〜 I/O チャネル〜 ● OpenCL はメイン・メモリを介してデータ転送を 行う GPGPU など一般に,CPU 以外のアクセラレータな どのデバイスとデータをやりとりする場合には,ホス ト・コンピュータはメイン・メモリを介してデータを 操作する必要があり,どうしてもデータ転送に時間が かかってしまいます[図 1(a)]. それならアクセラレータ部分に直接データを流し込 めるようにしようというのが,今回紹介する I/O チャ ネルという仕組みです. I/O チャネルを使うことで,OpenCL カーネルから 外部デバイスにアクセスするポートを増設することが でき,低レイテンシでアクセスできます[図 1(b)]. これは,あらかじめハードウェア構成が固まっている GPU にはできない,プログラマブルなハードウェア である FPGA ならではの芸当と言えます. 96 Altera 社の Web サイトには,HFT(高頻度取引)の た め に ネ ッ ト ワ ー ク・ ア ク セ ス 用 の UDP コ ア を OpenCL で制御するサンプルが用意されています. ● 外部と直接データ入出力を行える I/O チャネル Altera SDK for OpenCL で は,OpenCL を 使 っ て FPGA のハードウェア設計ができます.OpenCL は GPU やアクセラレータ向けのプログラムを書くため の共通言語として規格化されたものですが,共通の規 格以外にベンダごとの拡張機能があります.I/O チャ ネルは,Altera 社による拡張機能の一つで,外部デー タとのデータ入出力を直接 OpenCL で使えるようにす る機能です. I/O チャネルを自在に利用できるようになれば,あ らかじめ用意された OpenCL 環境を拡張して,自分な らではの計算プラットフォームを簡単に構築できます (図 2) .本稿では,I/O チャネルの利用事例として FPGA に接続したカメラ(写真 1)を OpenCL で記述し たハードウェアで制御,撮像する事例を紹介します. 第 8 章 画像データをダイレクト入力! OpenCL によるカメラ制御&画像処理
© Copyright 2025 ExpyDoc