Open3
【メモ】OpenCL APIをC++で触ってみる
触るに至った経緯
CPU負荷の高い部分をマルチスレッド化やベクトル演算を使用して処理負荷を減らそうとしていた
→ GPU内蔵型プロセッサを使用する選択肢が取れれば良いなと思った
→ 僕が知っているGPUのハードウェアを扱う手段として、描画APIのDirectXやVulkanなどでシェーダーを書くことしか知らなかった
→ 描画APIはグラフィックス向けにパイプラインが組まれているので、ただGPUを触りたい場合に最適な手段ではないと思ったので、GPUを直接扱う方法を探していた。
→ OpenCLを知ったので触る
openclのインストール
windows環境vcpkgで入力
.\vcpkg install opencl:x64-windows
.\vcpkg integrate install
これでopenclをインクルードして使える
CUDAの場合はToolKitが必要か?
#include <CL/opencl.hpp> // C++でラップされたヘッダがある
cl.hはC言語インターフェースを提供するもので、
リソース管理を自分で行う必要があるみたい(?)
C++で扱いたい場合はopencl.hppを使ったほうがいいかも
メモ : OpenCLの仕組み
後で読む
こちらで公開されているサンプルコードを実行してみた。
出力結果
ノートPC
NVIDIA GeForce RTX 3070 Laptop GPU
Menggunakan 1 platform hardware
Nama Platform: NVIDIA CUDA
Vendor: NVIDIA Corporation
Versi Platform: OpenCL 3.0 CUDA 12.3.68
Nama Perangkat: NVIDIA GeForce RTX 3070 Laptop GPU
Vendor Perangkat: NVIDIA Corporation
Versi Driver: 546.12
Jumlah Core: 40
Ukuran Memori: 8191MB
-------------------------
Masukkan ukuran buffer: 2048
Menggunakan Buffer Size: 2048
menghitung...
Time taken for matrix multiplication on CPU: 22.6142 seconds
Time taken for matrix multiplication on multi-core CPU: 3.95501 seconds
Time taken for matrix multiplication on GPU: 0.076447 seconds
Speedup time for GPU vs Single Threaded CPU: 295.815x
Speedup time for GPU vs Multi Threaded CPU: 51.7353x
ミニPC
CPU AMDのRadeon Vega 8
Menggunakan 1 platform hardware
Nama Platform: AMD Accelerated Parallel Processing
Vendor: Advanced Micro Devices, Inc.
Versi Platform: OpenCL 2.1 AMD-APP (3444.0)
Nama Perangkat: gfx902
Vendor Perangkat: Advanced Micro Devices, Inc.
Versi Driver: 3444.0 (PAL,HSAIL)
Jumlah Core: 10
Ukuran Memori: 4142MB
-------------------------
Masukkan ukuran buffer: 2048
Menggunakan Buffer Size: 2048
menghitung...
Time taken for matrix multiplication on CPU: 88.6658 seconds
Time taken for matrix multiplication on multi-core CPU: 37.0929 seconds
Time taken for matrix multiplication on GPU: 0.98858 seconds
Speedup time for GPU vs Single Threaded CPU: 89.69x
Speedup time for GPU vs Multi Threaded CPU: 37.5214x