HeadlinesBriefing favicon HeadlinesBriefing.com

mold: 大規模並列リンカー

Hacker News •
×

リンクはソフトウェアビルドプロセスにおける重要なステップであり、コンパイルされたオブジェクトファイルを単一の実行可能ファイルまたは共有ライブラリに結合します。数十年にわたるエンジニアリングの努力にもかかわらず、リンク時間は編集・コンパイル・デバッグのサイクルにおける重要なボトルネックであり続けており、特に大規模なC++プログラムでは顕著です。既存のリンカーは限られた並列性しか活用しておらず、リンク中はほとんどのCPUコアがアイドル状態です。

私たちは、リンクパイプライン全体に体系的にデータ並列性を適用するUnix/Linuxリンカーであるmoldを紹介します。まず、既存のリンカーがスケールできない原因となるアーキテクチャ上の制約(絡み合ったシンボル解決とアーカイブ処理を含む)を分析し、それらを分離するクリーンな設計がこれらの制限をどのように克服するかを示します。

大規模な実世界のプログラムでは、moldは数ギガバイトのデバッグバイナリを最大でも数秒でリンクし、多くの場合1秒未満でリンクします。最先端のlldリンカーより2.4〜16.1倍、従来のGNU ldより最大112倍高速です。アブレーション研究によると、単一の最適化が支配的ではなく、すべてのパスを並列化することの累積効果から高速化がもたらされます。

主要エンティティ: 人物: Rui Ueyama