AcademySoftwareFoundation / AcademySoftwareFoundation/OpenShadingLanguage
[BUG] Bad parallel performance when optimizing a group
まだ誰も着手していません。
- 主要言語
- C++
- スター
- 2.3k
- フォーク
- 415
- 平均マージ
- 3日 1時間
- マージ済み PR(30日)
- 10
説明
Describe the bug
In Windows, when optimizing a shader group in parallel, the performance is almost as the optimization is performed sequentially.
I tracked down the problem, in src\liboslexec\llvm_instance.cpp.
In the block inside if (use_rs_bitcode()) {
the call to ll.validate_global_mappings(names_of_unmapped_globals); triggers a global lock inside llvm.
commenting out the validation solves the problem. A possible solution would be to have an option to turn off validation, so I can turn it on only during debugging.
OSL version and dependencies
- OSL branch/version: 1.14.5.1
- OS: Windows
- C++ compiler: MSVC 2022
- LLVM version: 19.1.7
- OIIO version: 3.0.2
コントリビューションガイド
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
調査の方向性
src/liboslexec/llvm_instance.cpp の use_rs_bitcode() ブロックから開始し、ll.validate_global_mappings(names_of_unmapped_globals) の呼び出しを調査します。Windows で shader グループが並列に最適化される仕組みを追跡し、その後、通常の最適化では検証を無効化し、デバッグ時には有効なままにできることを、ほぼ逐次実行になるようなパフォーマンスへの影響なしに確認します。
索引モデルが issue の本文から書いたものです。
評価
- 技術スタック
- cpp
- 領域
- compilers, performance
- issue の種類
- バグ
- 難易度
- 4/5
- 見積もり時間
- 3〜5日
- 活発さ
- 停滞
- 明瞭さ
- おおむね明確
- 初心者へのやさしさ
- 45/100