私がGPGPUを触わってたのはたしか2009年の始め頃あたりで、OpenCLどころかCUDA Fortranも無いような時代に
「ちょっとこれGPUで性能評価してみてー」
とFortranのin-houseコードを渡されたのが最後の記憶です。*1
そんな私ですが、先日GDEPさんのtwitterのキャンペーンでお肉をいただいてしまいました。
@GDEPsolutions さんのキャンペーンでお肉をいただきましたー♪
— n_so5 (@n_so5) 2021年1月13日
この機にちょっとGPGPUで遊んでみようかな pic.twitter.com/6w8Pz0YtXT
干支がひとまわりもする間、外から眺めてるだけだったGPGPUですが、さすがにお肉をもらっておきながら使いもしないというのは人の道に反する気がするので、ちょっと触ってみることにします。
環境構築
さて、12年前なら秋葉原に行ってGeForceを買ってくるところですが、今やいろんな意味で不可能になりました。 代わりにというと変な感じがしますがが、各種クラウドサービスにGPU搭載インスタンスが用意されているので、こちらを使うことにしましょう。
ざっくりとドキュメントを見た感じでは、AWS, GCP, Azureといずれも(世代が多少違うけど)GPUインスタンスが用意されているようです。
AWS https://aws.amazon.com/jp/ec2/instance-types/
- P4 Cascade Lake + A100
- P3 Broadwell + V100
- P2 Broadwell + K80
- G4 Cascade Lake + T4
- G3 Broadwell + M60
GCP https://cloud.google.com/compute/docs/gpus?hl=ja
N1インスタンスに対して、オプションとして以下のGPUが追加できるようです。 - T4 - V100 - P100 - P4 - K80
Azure https://azure.microsoft.com/ja-jp/pricing/details/virtual-machines/series/ GPU搭載インスタンスとして、次の3つが提供されています。
- NC V100
- NDs P40またはV100
- NV M60
ちなみに、アカウントを持ってるなら、FOCUSスパコンという手もあります。 この中だと、Fシステムのうち2ノードにP100が載っています。
だいたいどこでも使えるようなので、価格やお財布、アカウントの有無によって決めれば良いと思いますが、 今回はこれまでに挙げたどれでもなくgoogle Colaboratory (以下colab)を使うことにします。
colabはgoogleのアカウントさえあれば使える Jupyter notebook As A Service として機械学習界隈では有名な存在ですが、
- 無課金ユーザでも連続12時間まではGPU(K80)が使える
- google Drive連携でファイルのuploadがちょー楽
というメリットがあるので、今回の用途なら無料で遊べるでしょう。
ただし、M1 macを使っていてGsuiteを契約していると、あいかわらずGoogle drive file streamが正常に動かないのでファイルのupload/downloadは手作業でやる必要がありますorz
colabのセットアップ
colabに接続すると、"Colaboratoryへようこそ"というドキュメントが表示されると思いますが、"ファイル"->"ノートブックを新規作成"とすると別のタブで新しいノードが開きます。
タイトルを適当に変えてから、"ランタイム"->"ランタイムのタイプを変更"と選択し、表示されたダイアログ内の"ハードウェアアクセラレータ"と書かれたドロップダウンリストを"None"から"GPU"に変えます。
ノートの上側にあるメニューから"接続"->"ホスト型ランタイムに接続"と選んでしばらく待つとGPUインスタンスが使える状態になっています。
ランタイムに接続した後で、左のディレクトリっぽいアイコンをクリックしGoogleドライブのアイコンをクリックすると、"/content/drive"以下に現在のアカウントのgoogleドライブが接続されるので、必要なファイルなどはここを経由してやりとりすると楽です。(うっかり秘蔵のファイルが見えたりすると困るので、ここはスクショ無しで・・・)
jupyter notebookなので、何かコマンドを実行する時は、シェルエスケープ(!)を使う必要がありますが、 こんな感じでnvccも使えます。
通常のコンパイラとしては、clangとGCCが入っているのでOpenCLも使えそうです。
ついでに、ちらっと見えてますが、OSはubuntuの18.04のようなのでなにか不足があればaptで入れれます。
さて、ここからが本番なんですが、GPUを使ってないとこんなことを言われるので、この辺で一旦中断します。
次回に続く(と良いなぁ・・・)
*1:確か、CUDA化する前にCで書き直したらなんかめっちゃ早くなって困った記憶が・・・