Preferred Networks

計算基盤/MN-Core 向けのコンパイラ及び周辺ライブラリの開発【2022年度インターン】

灘 洋太郎
灘さんトリミング後
参加年度:2022 年度(2024 年新卒入社) 当時の学年:修士 1 年 テーマ:計算基盤/MN-Core 向けのコンパイラ及び周辺ライブラリの開発

自己紹介


PFN に 24 卒で入社した灘洋太郎と申します。業務では、MN-Core の RTL 実装を行っています。なかでも僕はメモリ周りの実装を行っています。実装の際には、深層学習や HPC アプリで必要な太いメモリ帯域を確保しつつ、なるべく小さな回路面積に収めなければいけません。このため、1 つのバッファを複数用途でうまく使い回したり、パイプライン構造をいじったりと、ショートコーディング的な工夫をこらす必要があり、パズルを解くような面白さがあります。

学生時代は東京大学大学院 情報理工学系研究科 電子情報学専攻で、プロセッサーのマイクロアーキテクチャを研究しており、ちょっと風変わりな命令セット用の C++ コンパイラ実装や、インオーダコア上で動作する軽量なアウトオブオーダー実行機構の提案を行いました。


インターンで取り組んだこと


僕は MN-Core のアセンブリに対して最適化ヒントを自動生成する機能の開発に取り組みました。MN-Core はキャッシュメモリや条件分岐などの機構を持たないため、実行時に何が起こるのかコンパイル時にほぼ全て知ることができます。この情報を用いて、入力されたアセンブリ内で最適化の余地がある箇所を自動で判別する機構を開発しました。


インターン参加のきっかけ


漠然と低レイヤな仕事をやりたいと思いつつ就職先に迷っていた時期に、PFN インターンの募集要項を目にしたのがきっかけです。僕は普段 MN-Core はおろか GPU すら触っておらず、受かる自信は全くなかったのですが、ダメ元で応募してみました。


インターンに参加して得たもの


一番の収穫は、商用プロセッサー開発の現場を、実物の MN-Core コンパイラやチップを使い倒して体験できたことです。僕はコンパイラをいじったのですが、そこではレジスタ割付けや命令スケジューリングといった基本の道具全てが巧妙にフルスクラッチ実装されており、衝撃を受けました。

これを読んでいる人の中には、フルスクラッチで簡単なコンパイラやコアを自作してみたら案外楽しかった、という覚えがある方も多いかと思います(僕もその一人です)。そういった楽しさのそう遠くない延長上に、作ったコンパイラ/コアが売り物になったり、作るのを仕事にできる場所がある、という強い実感を得られたのは貴重な体験でした。

 

こんな方には PFN インターンをおすすめします!


低レイヤに興味があるが、それを仕事としてやっていくのに不安やハードルを感じている人、どんな仕事をするのかイメージがわかない人に、特におすすめです。PFN インターンでは、MN-Core などのアクセラレータに全く触ったことがない人でも、ハードウェア仕様からコンパイラに至るまで丁寧なメンタリングを受けることができ、躓くことなくチップやコンパイラ開発の現場を体験できます。

加えて、チップやそのランタイム、クラスタシステムに至るまで、PFN が様々なものを自前で作る様子を垣間見られるので、低レイヤが好きな人にはとても楽しい体験ができると思います。

インターンプロジェクトのブログ記事: MN-Core コンパイラに向けた最適化ヒントの自動生成


 

SHARE
XFacebookLinkedIn

よくある質問