9.1K Views
June 17, 22
スライド概要
次のイベントの講演資料です。
https://sciencepark.connpass.com/event/246432/
サイエンスパークの勉強会の資料を公開します。勉強会は2022/3現在、connpassで公開しています。 https://sciencepark.connpass.com
WDDDS 2022 CuPyによるGPUを使った信号処理の高速化
WDDDS 2022 自己紹介 名前 :菅 章宏 所属部署:画像システム課 業務内容: ・信号処理の実装 ・ハードウェア解析 ・セキュリティ関連 その他 :雑食性 コロッケそばにも抵抗ありません SCIENCE PARK Corporation / CuPyによるGPUを使った信号処理の高速化 / SP2206-E24 CONFIDENTIAL
WDDDS 2022 Agenda. 1. はじめに 2. LabVIEWとは 3. GPUについて 4. LabVIEWとGPUの組み合わせ 5. PythonとCuPyについて 6. FFTの実行例 7. まとめ 8. Q&A SCIENCE PARK Corporation / CuPyによるGPUを使った信号処理の高速化 / SP2206-E24 CONFIDENTIAL 3
WDDDS 2022 1.はじめに
WDDDS 2022 1.はじめに • LabVIEWは、アイコンを並べてプログラミングができるグラフィカル プログラミング言語です。実データの取得を含めた信号処理の開発が容易なため、 研究や製造テストでの計測制御でLabVIEWは多く使用されています。 • 近年、AIでは、GPGPUによる演算処理の高速化が目覚ましいです。しかしながら、 現状、LabVIEWによるGPUを使った信号処理の開発は容易ではありません。 • この講演では、ハードウェアを含めた信号処理開発が容易なLabVIEWと プログラミング言語Python(CuPy)を組み合わせて、GPUを使った信号処理の 一例について解説したいと思います。 SCIENCE PARK Corporation / CuPyによるGPUを使った信号処理の高速化 / SP2206-E24 CONFIDENTIAL 5
WDDDS 2022 2.LabVIEWとは LabVIEWの概要について
WDDDS 2022 2.LabVIEWとは IoTの入り口、計測やテスト部門で見かけられるケース テスト部門には ソフトエンジニアを 回してくれないし リソースもないし 計測器のデータを 簡単に取得できたら 楽なのに SCIENCE PARK Corporation / CuPyによるGPUを使った信号処理の高速化 / SP2206-E24 CONFIDENTIAL コードと ドキュメントの メンテナンスが大変 7
WDDDS 2022 2.LabVIEWとは グラフィカル プログラミングの 可能性 対応する計測器とそのドライバが 充実してほしい LabVIEWの出番 SCIENCE PARK Corporation / CuPyによるGPUを使った信号処理の高速化 / SP2206-E24 CONFIDENTIAL 8
WDDDS 2022 2.LabVIEWとは GPIBで”IDN?”を発行するプログラム ⚫ 直観的なプログラム作成を可能に ⚫ 計測機関連のドライバが豊富 ⚫ ブロックダイアグラムがそのまま実行される ⚫ グラフやインジケータのGUIが豊富 GPIBドライバ・API関数 に相当するモジュール ブロックダイアグラム(プログラム) SCIENCE PARK Corporation / CuPyによるGPUを使った信号処理の高速化 / SP2206-E24 CONFIDENTIAL 9
WDDDS 2022 2.LabVIEWとは 変数とGUIの結びつけが簡単 フロントパネル(GUI) SCIENCE PARK Corporation / CuPyによるGPUを使った信号処理の高速化 / SP2206-E24 ブロックダイアグラム(プログラム) CONFIDENTIAL 10
WDDDS 2022 2.LabVIEWとは LabVIEWを使うと、IoTの入り口(計測)が簡単になりそう ソフトウェアに 習熟していなくても 修正・変更できそう 計測器のデータを 取得して グラフ化が簡単 SCIENCE PARK Corporation / CuPyによるGPUを使った信号処理の高速化 / SP2206-E24 CONFIDENTIAL 見たままの図が プログラムなので 引き継ぎできそう 11
WDDDS 2022 2.LabVIEWとは 補足事項 1. LabVIEWは、National Instrumentsの有償ソフトウェアです 2. LabVIEW Community Edition は、非営利目的での使用は無料です 2.1 32bit版のみ等の制限あります 2.2 大学、専門学校、認定プログラムなどの学位授与機関ではご利用いただけません ⇒アカデミック版の設定あり SCIENCE PARK Corporation / CuPyによるGPUを使った信号処理の高速化 / SP2206-E24 CONFIDENTIAL 12
WDDDS 2022 3.GPUについて
WDDDS 2022 3.GPUについて GPUとは ➢ Graphic Processing Unit グラフィック ボード ゲーム・CG向け グラフィックボード CPUの代わりに 3Dゲーム向けに 画面を表示させる ポリゴンや 専用HW シェーディングを 高速に計算できるHW 1999年GPU誕生 GP-GPU • CUDA(言語) • 並列計算 • Pythonとの インターフェース 2006年CUDA発表 CUDAは米国およびその他の国における NVIDIA Corporation の商標また は登録商標です。 SCIENCE PARK Corporation / CuPyによるGPUを使った信号処理の高速化 / SP2206-E24 CONFIDENTIAL 14
WDDDS 2022 3.GPUについて CPU/GPU/FPGAの振り返り コア数の 更なる増加 マルチコア化 動作周波数の向上 グラフィックボード の取り込み CPU (汎用計算機) 2006年 CUDAアーキテクチャ発表 1999年 GPU登場 グラフィック ボード SCIENCE PARK Corporation / CuPyによるGPUを使った信号処理の高速化 / SP2206-E24 HWレベルで アルゴリズムを計算 積和計算 ベクトル化命令 CPU技術要素の 恩恵(FPGA) 専用計算機 (FPGA・DSP等) CONFIDENTIAL CPUの微細化 メモリやバスの進化の 恩恵 15
WDDDS 2022 3.GPUについて CPUとGPU 構造の比較 CPU Processor GPU 複雑な命令を実行する 汎用計算ユニット ↓ 構造が複雑なため コア数を増やしにくい Streaming Multiprocessor CORE CORE 定型的な命令を実行する 計算ユニット ↓ コア数を増やしやすい CORE CORE CORE CORE ~32 CORE CORE CORE 384~10496 CORE SCIENCE PARK Corporation / CuPyによるGPUを使った信号処理の高速化 / SP2206-E24 CONFIDENTIAL 16
WDDDS 2022 3.GPUについて CPUとGPU 処理の比較 ➢ CPU データ 計算処理 計算処理 計算処理 データ転送 計算処理 データ転送 計算処理 処理結果 ➢ GPU データ 処理結果 計算処理 GPUの演算処理では、 計算処理 データを多数のコアで 計算処理 SCIENCE PARK Corporation / CuPyによるGPUを使った信号処理の高速化 / SP2206-E24 並列に計算するのが有効 CONFIDENTIAL 17
WDDDS 2022 4. LabVIEWとGPUの組み合わせ
WDDDS 2022 4. LabVIEWとGPUの組み合わせ ➢ LabVIEWからもCUDAのVI(API)が用意されています。 LabVIEW GPU Tool kit SCIENCE PARK Corporation / CuPyによるGPUを使った信号処理の高速化 / SP2206-E24 CONFIDENTIAL 19
WDDDS 2022 4. LabVIEWとGPUの組み合わせ ➢ GPU Tool kitを使用して、GPUを使用することは可能 ➢ CUDAのAPIを並べているので、記述や変更が容易ではない LabVIEW Tool kitでFFTをする例(一部) SCIENCE PARK Corporation / CuPyによるGPUを使った信号処理の高速化 / SP2206-E24 CONFIDENTIAL 20
WDDDS 2022 4. LabVIEWとGPUの組み合わせ ➢ 考察1 ➢ LabVIEWはエッジデータ取得に専念 ➢ GPUでの演算結果をLabVIEWに戻せないか? → どうやって? Digitizer - Memory - Storage - Network GPU … etc. SCIENCE PARK Corporation / CuPyによるGPUを使った信号処理の高速化 / SP2206-E24 CONFIDENTIAL 21
WDDDS 2022 4. LabVIEWとGPUの組み合わせ ➢ 考察2 ➢ LabVIEWはエッジデータ取得に専念 ➢ GPUの演算結果をLabVIEWに返す → PythonとCuPyの出番 Python LabVIEW Digitizer - Memory - Storage - Network CuPy GPU … etc. SCIENCE PARK Corporation / CuPyによるGPUを使った信号処理の高速化 / SP2206-E24 CONFIDENTIAL 22
WDDDS 2022 5. Python・CuPyについて
WDDDS 2022 5.Python・CuPyについて Pythonとは ➢ インタプリタ言語 ⚫ 記述が簡素 ⚫ 配列の扱いが容易 ⚫ ベクトル演算の記述が容易 import numpy as np ⚫ 豊富なライブラリ A = np.array([1, 2, 3]) B = np.array([1, 2, 3]) ・NumPy 数値演算ライブラリ ・Matplotlib グラフ表示ライブラリ print(np.dot(A, B)) ⚫ Python Foundation License SCIENCE PARK Corporation / CuPyによるGPUを使った信号処理の高速化 / SP2206-E24 CONFIDENTIAL 24
WDDDS 2022 5.Python・CuPyについて NumPyとは ➢ Python用数値計算ライブラリ ⚫ Pythonで機械学習や数値計算を 実行するのに、ほぼ必須のライブラリ Copyright (c) 2005-2022, NumPy Developers. All rights reserved. ⚫ 配列・行列 Redistribution and use in source and binary forms, w ith or w ithout modification, are permitted provided that the follow ing conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the follow ing disclaimer. ⚫ 初等関数 * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the follow ing disclaimer in the documentation and/or other materials provided w ith the distribution. * Neither the name of the NumPy Developers nor the names of any contributors may be used to endorse or promote products derived from this software without specific prior written permission. ⚫ 統計関数 THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ⚫ Modified BSD license SCIENCE PARK Corporation / CuPyによるGPUを使った信号処理の高速化 / SP2206-E24 CONFIDENTIAL 25
WDDDS 2022 5.Python・CuPyについて CuPyとは ➢ オープンソースのGPU向け汎用計算ライブラリ ㈱Preferred Networks ⚫ Chainerのバックエンドとして開発された ⚫ NumPy互換のインターフェース ⚫ Pythonと同様の記述法でGPUで演算が実行できる ⚫ 開発環境の構築がCUDAと比べると容易 CUDAでゴリゴリ コードを書かなくても GPUが使える SCIENCE PARK Corporation / CuPyによるGPUを使った信号処理の高速化 / SP2206-E24 CONFIDENTIAL 26
WDDDS 2022 5.Python・CuPyについて NumPyとCuPyの違い 1. CuPyでは、CPU⇔GPU間のデータ転送が発生する 2. NumPyの関数が、すべてCuPyに実装されているわけではない ✓ 初等関数(sin, cos, etc..)は、おおよそ揃っている ✓ 信号処理関連の関数は主要なもののみ ・CUDA Tool Kit(API)で扱える関数ベース ・数式と使える関数を考慮して実装する必要がある 参考:https://docs.cupy.dev/en/stable/reference/comparison.html#statistical-functions SCIENCE PARK Corporation / CuPyによるGPUを使った信号処理の高速化 / SP2206-E24 CONFIDENTIAL 27
WDDDS 2022 6.FFTの実行例
WDDDS 2022 6.FFTの実行例 ➢ FFT(DFT) FFT:関数(波形)を別の関数に移す変換 ➢ FFT(DFT)は、なんかご利益あるの? ソフトと関係ないんじゃないの? 1. 積和計算で構成される 2. スペクトラムアナライザ(時間と電圧 f(t) → 周波数とパワースペクトラム F(ω) ) 3. フィルタ(HPF/LPF) 4. OFDM変調器(orthogonal frequency-division multiplexing, 直交変調) - ソフトウェア無線でのGPUの適用が少しずつ増えてきた。(GNU RADIO etc.) SCIENCE PARK Corporation / CuPyによるGPUを使った信号処理の高速化 / SP2206-E24 CONFIDENTIAL 29
WDDDS 2022 6.FFTの実行例 Jupyter notebookでの計算例 実行環境 Intel(R) Core(TM) i7-7700HQ CPU @ 2.80GHz GPU:GTX-1080 Python 3.8.1 on Jupyter notebook NumPyと同様の記述で GPUの恩恵が受けられる SCIENCE PARK Corporation / CuPyによるGPUを使った信号処理の高速化 / SP2206-E24 CONFIDENTIAL 30
WDDDS 2022 6.FFTの実行例 NumPyとCuPyの実行時間比較 3000 実行環境 Intel(R) Core(TM) i7-7700HQ CPU @ 2.80GHz GPU:GTX-1080 Python 3.8.1 on Jupyter notebook FFT(DFT)(データ転送時間含まず) 実行時間[us] 2500 2000 1500 NumPy CuPy 1000 500 ・NumPyはデータ数に比例して実行時間も増加 ・NumPyと比べてCuPyは、データ数が増加し ても、実行時間は大きく増加しない 0 4k 8k 16k 32k データ数 k=1024 64k ⇒ 複数コアでの並列実行 データ数 4096 8192 16384 32768 65536 個 60.8 131 285 621 2750 us NumPy 44.1 47.6 46.8 46.0 63.4 us CuPy 1.4 2.8 6.1 13.5 43.4 倍 NumPy/CuPy SCIENCE PARK Corporation / CuPyによるGPUを使った信号処理の高速化 / SP2206-E24 CONFIDENTIAL GPU内で処理が完結するのが理想的 31
WDDDS 2022 6.FFTの実行例 LabVIEW Python nodeを使ってFFT(DFT)を実行する例 LabVIEW GPU Tool kit のようにブロック並べなくてよい SCIENCE PARK Corporation / CuPyによるGPUを使った信号処理の高速化 / SP2206-E24 CONFIDENTIAL 32
WDDDS 2022 6.FFTの実行例 LabVIEW Python node補足事項 1. Python3.6 のみLabVIEWでは正式サポート 2. Python3.6 は2021/12/23でサポート終了 動作確認・検証・製品等への組み込みは自己責任でお願いいたします SCIENCE PARK Corporation / CuPyによるGPUを使った信号処理の高速化 / SP2206-E24 CONFIDENTIAL 33
WDDDS 2022 6.FFTの実行例 入力波形:sin波掃引,データ数:64K 演算 :FFT(DFT) ⇒ ABS ⇒ 2乗 NumPy SCIENCE PARK Corporation / CuPyによるGPUを使った信号処理の高速化 / SP2206-E24 CuPy CONFIDENTIAL 34
WDDDS 2022 6.FFTの実行例 実行環境 Intel(R) Core(TM) i7-7700HQ CPU @ 2.80GHz GPU:GTX-1080 LabVIEW 64bit & Python 3.8.1 実行時間 FFT(DFT) ⇒ abs ⇒ 2乗 8 7 6 5 4 3 2 1 0 NumPy CuPy 4k データ数 NumPy CuPy NumPy/CuPy 8k 16k 32k データ数 k=1024 4096 1.312 1.992 0.66 64k 8192 16384 32768 65536 個 1.561 2.074 3.441 6.113 ms 2.012 2.29 2.663 3.387 ms 0.78 0.91 1.29 1.80 倍 SCIENCE PARK Corporation / CuPyによるGPUを使った信号処理の高速化 / SP2206-E24 CONFIDENTIAL オーバーヘッドが以外と大きい 1. Python node呼び出し 2. CPU⇔GPUデータ転送 3. インタプリタ言語(Python) ・FFT 1回ぐらいだとGPUの恩恵が少ない ・データ数がある程度大きくないと GPUの恩恵が受けられない。 ・FFT&窓関数の適用あたりから、 効果が期待できそう 35
WDDDS 2022 6.FFTの実行例 LabVIEWとPythonの組み合わせの利点 1.DigitizerからPCへ、データ取得が容易 2.グラフ関連のVI(API)が充実しているので、PythonのMatplot libを使うよりは、 グラフの実装が楽(特に時間変化があるグラフ) 3.信号発生器のVI(API)が利用できるので、Pythonで信号発生器を実装しなくても よいし、発生する信号の変更も楽 4.PythonにGUIを被せるのが、簡単で変更も楽 SCIENCE PARK Corporation / CuPyによるGPUを使った信号処理の高速化 / SP2206-E24 CONFIDENTIAL 36
WDDDS 2022 7.まとめ
WDDDS 2022 7.まとめ ✓ ✓ CPU ⇔ GPU間のオーバーヘッドに注意する CuPyでプログラミングすることにより、GPUの構造をがちがちに 強く意識をしなくても、GPUで実行可能なコードを記述できる ✓ NumPyからCuPyへ、記述の敷居は低いので、お試しの価値あり ✓ 信号処理分野でも、AIやGPUの恩恵を受けられるようになった SCIENCE PARK Corporation / CuPyによるGPUを使った信号処理の高速化 / SP2206-E24 CONFIDENTIAL 38
WDDDS 2022 ユーザがヘテロジニアスコンピューティングといった 面倒なことを意識することなく、問題に対して最適なHW/SWで、 計算を実行する時代がそのうちくるかも。。。。 - 昭和のおっさんより SCIENCE PARK Corporation / CuPyによるGPUを使った信号処理の高速化 / SP2206-E24 CONFIDENTIAL 39
WDDDS 2022 ご清聴ありがとうございました 40