私は現在、今後 8 週間にわたって行われる大学院レベルのコンパイラ コースのプロジェクトを選択している最中です。最適化に関連することはあまりしたことがないのでやりたいと思っていますが、この分野のことならなんでも結構です。
これまでに行った中で最も興味深いコンパイラ関連のプロジェクトは何ですか? あなたは何から最も多くを学びましたか?
編集:素晴らしい提案をありがとうございました。この度は、長らく更新を滞らせてしまい申し訳ございませんでした。
私が最終的に行ったプロジェクトは、LLVM での単純な自動ベクトル化の最適化でした。LLVM にはベクトル型がありますが、フロントエンドのサポートなしではそれらを利用する方法がないように思われました。この最適化により、通常のスカラー コードがベクトル コードに変換されました。
自動ベクトル化は実装がかなり難しい最適化であるため、可能な限りスコープを制限しました。まず、コード内の命令レベルの並列性を明らかにするために、基準に一致する 1 ブロック ループを探し、それらを特定の回数展開して、簡単にベクトル化できるようにしました。次に、Larsen と Amarasinghe によるマルチメディア命令セットによるスーパーワード レベルの並列処理の活用で説明されているパッキング アルゴリズムを実装しました。
この最適化の単純化されたバージョンでさえ、かなり複雑です。多くの制約があります。たとえば、ループの外に存在する変数をベクトル化する必要はありません。これは、プログラムの残りの部分がスカラーであると想定しているためです。ここ数週間、私たちは多くの時間を費やしてきました。このプロジェクトはとても楽しかったですが、多くのことを学びました。