はじめに
ローエンドのノートPCや小型PCでGPUを活用した高速演算はまだまだ挑戦の余地があります。
今回、Intel Celeron N5105(内蔵GPU)+8GBメモリの環境で、Pythonの多倍長Decimal演算をPyOpenCLでGPU化し、CPU演算に比べて加算で160倍、減算で172倍の高速化を達成しました。
実行環境
項目 内容
CPU Intel Celeron N5105(4コア)
メモリ 8GB
GPU Intel統合GPU
OS Windows 11 pro
開発言語 Python 3.9
使用ライブラリ PyOpenCL, Numba
ベンチマーク結果
処理 | CPU Decimal (秒) | GPU (秒) | 向上率 | 備考 |
---|---|---|---|---|
加算 | 2.94 | 0.018 | 約160倍速 | 圧倒的 |
減算 | 2.99 | 0.017 | 約172倍速 | 加算同様 |
乗算 | 0.000012 | 0.0025 | 約208倍遅い | CPUが断然有利 |
除算 | 0.000021 | 0.0025 | 約119倍遅い | 乗算同様 |
実装ポイント
PyOpenCLでGPUカーネルを作成し、local_size(ワークグループサイズ)を最適化。
host_ptrをFalseに設定し、メモリ転送のオーバーヘッドを削減。
乗算・除算は非常に軽量な演算なので、GPU化による転送コストがかえって遅延に繋がる結果に。
考察
ローエンドPCの統合GPUでも、加減算に関しては高い並列度とlocal_sizeの調整で大幅な高速化が可能なことを示しました。
乗除算のような軽量処理はGPUの転送オーバーヘッドがボトルネックとなり、逆にCPU処理の方が速いケースがあるため、処理ごとに使い分けが重要です。
おわりに
本研究は一部最適化技術を非公開としていますが、ローエンド環境におけるGPU活用の可能性を示す一例として参考になれば幸いです。