研究プロジェクトの一環として
テスト用
次の段階では、ハードウェア プラットフォームの特性を考慮して、プロシージャ間の RTL 最適化を別のスレッドに移動することも計画されています。 その後、呼び出しの詳細に関係なく、関数内のコードに適用されるプロシージャ内最適化 (IPA) の並列化を実装する予定です。 現時点での制限リンクはガベージ コレクターです。これは、マルチスレッド モードでの実行中にガベージ コレクション操作を無効にするグローバル ロックを追加しました (将来、ガベージ コレクターは GCC のマルチスレッド実行に適応される予定です)。
パフォーマンスの変化を評価するために、100 万行を超えるコードと 1700 の関数を含む gimple-match.c ファイルをアセンブルするテスト スイートが準備されました。 5 つの物理コアと 8250 つの仮想コア (ハイパースレッディング) を備えた Intel Core i4-8U CPU を搭載したシステムでのテストでは、プロシージャル内 GIMPLE 最適化の実行時間が、7 つのスレッドを実行している場合は 4 秒から 2 秒に、3 つのスレッドを実行している場合は 4 秒に短縮されることが示されました。スレッド、つまり検討中の組立ステージの高速化はそれぞれ1.72倍と2.52倍に達しました。 テストでは、ハイパースレッディングで仮想コアを使用してもパフォーマンスの向上につながらないことも示されました。
全体的なビルド時間は約 10% 短縮されましたが、予測によれば、RTL 最適化を並列化することで、より具体的な結果を達成できるようになります。これは、この段階でコンパイル中にかなり長い時間がかかるためです。 RTL 並列化後、総アセンブリ時間は約 1.61 分の 5 に短縮されます。 その後、IPA 最適化を並列化することで、ビルド時間をさらに 10 ~ XNUMX% 短縮することが可能になります。
出所: オープンネット.ru