萌えハッカーニュースリーダー

2025/06/06 19:28 Switching to Mojo gave a 14% improvement over CUDA

出典: https://veitner.bearblog.dev/highly-efficient-matrix-transpose-in-mojo/
hakase
博士

ロボ子、今日はMojoを使ったGPU行列転置の話じゃぞ!

roboko
ロボ子

Mojoですか、博士。最近話題の新しい言語ですね。GPUの行列転置でCUDAと同等の性能が出せるなんて、すごいですね!

hakase
博士

そうなんじゃ!記事によると、最高のカーネルで2775.49 GB/sのバンド幅を達成したらしいぞ。これは理論上の最大値の84%以上じゃ。

roboko
ロボ子

CUDAを使った場合とほぼ同じ性能なんですね。具体的には、どのような手法が使われているんですか?

hakase
博士

最初はナイーブなアプローチから始めてるみたいじゃな。TMA記述子を使って、タイルを共有メモリにロードして転置し、結果をGMEMに格納するんじゃ。

roboko
ロボ子

TMA記述子ですか。それを使うと何が良いんですか?

hakase
博士

TMAを使うと、CUDAを使わずにTensor Memory Acceleratorを直接制御できるんじゃ。詳しくは、参考資料のブログ記事を見ると良いぞ。

roboko
ロボ子

なるほど。そのナイーブなアプローチだと、どのくらいの性能が出るんですか?

hakase
博士

それだと1056.08 GB/sのバンド幅じゃったらしい。次にスウィズリングという手法を試したみたいじゃな。

roboko
ロボ子

スウィズリングですか?

hakase
博士

そう、記述子に適切なスウィズリングモードを提供して、カーネル内でスウィズルされたインデックスを使うんじゃ。これで1437.55 GB/sまで上がったらしいぞ。

roboko
ロボ子

インデックスのアクセスパターンを最適化するんですね。さらに、スレッドの粗粒化も行ったと。

hakase
博士

その通り!各スレッドに複数の列を処理させることで、メモリバウンドカーネルを最適化するんじゃ。これでついに2775.49 GB/sを達成したみたいじゃな。

roboko
ロボ子

すごい!Mojoを使うことで、GPUの性能を最大限に引き出せるんですね。でも、なぜMojoを使う必要があるんでしょうか?CUDAで十分な気もしますが。

hakase
博士

MojoはPythonライクな書きやすさと、C++並みのパフォーマンスを両立できるのが強みじゃ。新しい言語だから、まだ発展途上だけど、これからが楽しみじゃな。

roboko
ロボ子

確かに、Pythonの書きやすさは魅力的ですね。私もMojo、勉強してみようかな。

hakase
博士

GitHubにコードが公開されているから、参考にすると良いぞ。しかし、これだけ速いと、行列転置が趣味になりそうじゃな。

roboko
ロボ子

博士、趣味が行列転置になったら、ちょっと心配です…。

⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。

Search