📣

CUDAプログラミング(Numba)が学べる神ハンズオン教材

2024/06/10に公開

こんにちは。
株式会社オークンでデータサイエンティストをしています、Nobuです。
業務ではビッグデータを扱ったシミュレーションを行っており、GPU上で高速計算を行っています。

その一環で、最近新たにCUDAプログラミングを習得しました。
学習に利用した教材が大変素晴らしかったのですが、おそらく、あまり知られていないと感じたので、今回はその教材の紹介をしたいと思います!

ざっくり、CUDAプログラミングとは

GPU上で高速に計算できるライブラリ群として、NVIDIA RAPIDSがあります。
例えば、pandasの代わりにcuDFを、numpyの代わりにcupyを利用することで、高速に計算できることができます。(詳しくは過去の記事を参照ください)

これらのライブラリのメソッドは非常に充実しているので、メソッドを組み合わせることで大抵の処理はGPU上で高速計算することが可能です。

しかしながら、例えば2重ループのような複雑な処理はライブラリの組み合わせのみでは計算できなかったりします。

そこでCUDAプログラミングの出番です。CUDAプログラミングでは、上記の複雑な処理を、特別な書き方で書き換えます。書き換えられた関数をCUDAカーネルと呼びます。このCUDAカーネルはGPU上で高速に動作します。

CUDAプログラミングにはCUDA C/C++、PyCUDA、Numbaと、書き方の種類がありますが、中でも、NumbaはPythonの書き方でCUDAカーネルを実装できるので、普段Pythonで実装されている方は取り入れやすいかと思います。

しかしながら、いざ勉強しようとしても、教材が見つかりませんでした。
CUDA C/C++やPyCUDAの教材はまだあるものの、
Numbaの教材は殆ど見かけず(2024/6現在)、どう学習すればよいか困りました。

NVIDIAのオンライン教材

私はNVIDIAが提供するこちらのオンラインハンズオン教材、「Fundamentals of Accelerated Computing with CUDA Python」でCUDAプログラミング(Numba)を勉強しました。

こちらの特徴を以下に記します。

  • GPU環境で動作するJupyter Notebookでのハンズオン形式の教材
    • こちら側で面倒なGPU環境の構築は不要で、すぐにCUDAプログラミングを試せます。
    • 実際にGPU上でCUDAを動かせるので、どのように実装すると高速に動作するのかを体験できます。
  • 演習問題も豊富
    • こまめに演習問題が設けられており、理解の確認ができます。
    • 章末には、難易度の高い問題があり、正解すると合格判定をもらえます。達成感を感じ、楽しく学習することができます。
  • 1点注意ですが、英語のみです。しかし現在は翻訳が充実しているのと、Jupyter Notebook上は多くがコードで、英文の占める割合は多くないので、問題ないかと思います。

講座の範囲

基本的なCUDAカーネルの書き方・実行方法から、2次元配列への応用、共有メモリまで、一通り網羅しています。
詳しくはCourse Outlineをご確認ください。

価格

$90します。決してお安くはないですが、投資価値は十分あるかと思います。

  • 1,2日でCUDAプログラミングを習得することができる。内容に無駄がなく、修了後は実務レベルまで持っていける。
  • Jupyter Notebookのサーバー代込みである。

感想

8時間で終わる講義とのことでしたが、中身が濃いのと、CUDAプログラミングそのものが難しいのもあり、私は丸2日掛かってしまいました。
受講は大変でしたが、修了後はすぐに実務に応用することができました。具体的には、今まで11時間掛かっていた処理をCUDAプログラミングを用いて20分まで高速化させることができました。思い切って講座に申し込んで良かったです。

NVIDIAは他にも教材を出されているようです。
私は次回は、Deep Learningのこちらの講座 「Getting Started with Deep Learning」を受講してみたいと思います。

さいごに

最後までご覧いただき、ありがとうございました!
株式会社オークンでは、ヘッジファンド向けのトレードシステムを先日リリースいたしました。
現在、さらなる事業拡大に向け、エンジニアを積極的に採用しています。
本プロジェクトにご興味をお持ちいただけましたら、こちらの記事もぜひご覧ください!

O-KUN Tech Blog

Discussion