💻

Google ColabでCUDA.jlを試してみた

に公開

Julia言語がGoogle Colabで正式にサポートされました! Google Colabでは有料プランでGPUが使えるので, CUDA.jlを試してみようと思います.

ランタイムの変更

T4 GPUは無料で使えるとのことですが, ここではA100 GPUを使ってみました. お試しとして月額プランではなく Pay As You Go で 100コンピューティング ユニット1179円(2025/3/14 15:15)を購入してみました. ランタイム > ランタイムのタイプを変更 からGPUを選択します.

ノートブック

下記のリンクからノートブックにアクセスできます. 行列積と固有値分解がGPUで高速化できることが確かめられました. 3時間ほど使って何回か実行し直してトータルで23ユニット消費しました. 1回流すだけならここまで消費しませんので, 実行してみてください.

https://colab.research.google.com/drive/1Dpb_P5qwayZjbWjv8ifaGcfTXX96kMij?usp=sharing

速度の比較

リソースを抑えるため1回きりの測定しかしていません. ちゃんとしたベンチマークが気になる方はBenchmarkTools.jlで測定してください. Nは行列サイズ, 単位は秒, CPU は 12 × Intel(R) Xeon(R) CPU @ 2.20GHz ですが並列化されていないと思われるのでシングルコアだと考えてください(ちゃんと調べてません). GPU は A100 です. 行列積, 固有値分解のいずれも行列サイズが小さい場合はGPUを使うとむしろ遅くなっており, 10000×10000ではかなり早くなっていることがわかります. 1分以上かかっていた固有値分解が3秒かからずに終わることには驚きました.

行列積

N CPU GPU CPU/GPU
3 0.000001 0.333959 0.000003
100 0.000126 0.000213 0.591549
1000 0.013791 0.000596 23.13926
10000 5.098877 0.139724 36.49249

固有値分解

N CPU GPU CPU/GPU
3 0.000398 0.533481 0.000746
100 0.001979 0.006722 0.294406
1000 0.221054 0.034541 6.399757
10000 73.039423 2.743861 26.619214

参考文献

公式ドキュメント

解説記事

Discussion