福野泰介の一日一創 - create every day

GPUはじめのいっぽでOpenCLのスゴさが分かったので、次は実運用に向けサーバーで動かしてみます。
GPUといえば、さくらの高火力
1時間357円でレンタルできる、NVIDIA Tesla P100モデルを使ってみました。(T100モデルは月額プランのみ

契約してから使えるようになるまで何分か時間がかかります。利用開始時間として表示される前から実際使えるおまけがありました。(おまけ時間中は終了できないので注意!)


浮動小数点演算(float)9.3TFLOPSという性能。OpenCLではこのように見えました。 OpenCLバージョン1.2、コンピューティングユニット56、1.3GHz、最大メモリ確保量4GB、ローカルメモリ48KB、ワークグループサイズは1024。(MacBookProのGPUでは、それぞれ1.2、48、1Hz、384MB、64KB、256 と極端な差は見えず)

高火力サーバー、ユーザー名ubuntu、管理画面のパスワードとIPで、sshを使ってログイン。
NVIDIAのサイトからドライバをダウンロード用スクリプトを取得します(Linux/x86_64/Ubuntu/14.04/Type...dev(network))

sudo apt update sudo apt upgrade sudo apt-get install wget sudo apt-get install software-properties-common sudo apt install ocl-icd-libopencl1

などで、必要なものと合わせてセットアップ!(参考、CUDA Toolkit/GPUカードドライバー導入手順 – さくらのサポート情報
OpenCLのヘッダファイルを探してみます。

$ find / -name cl.h 2> /dev/null /usr/local/cuda-10.1/targets/x86_64-linux/include/CL/cl.h /usr/include/nvidia-418/CL/cl.h

MacとLinuxでヘッダファイルが違うので、編集

#ifdef __APPLE__ #include <OpenCL/opencl.h> #else #include <CL/cl.h> #endif

あとは、コンパイルして実行するだけ!

$ g++ -I/usr/include/nvidia-418/ test.c -lOpenCL $ ./a.out

結果、1000万個の配列の足し算の結果。

time[sec]=0.375 cpu[sec]=0.375 cpu usage=99.94% - Tesla P100 GPU time[sec]=5.382 cpu[sec]=0.091 cpu usage=1.69% - MacOS GPU

14倍速!

もっと差がでると思いましたが、例が悪かったのでしょう。
手順は押さえたので、また何か作った時に試してみようと思います。

もうちょっと手頃なGPU付きクラウド、登場してほしいところです。

Tweet
クリエイティブ・コモンズ・ライセンス
この作品は「Creative Commons — CC BY 4.0」の下に提供されています。
CC BY 福野泰介 - Taisuke Fukuno / @taisukef / アイコン画像 / プロフィール画像