AcademySoftwareFoundation / AcademySoftwareFoundation/OpenShadingLanguage
[BUG] Bad parallel performance when optimizing a group
- Vorherrschende Sprache
- C++
- Sterne
- 2.3k
- Forks
- 414
- Ø Merge
- 3 T. 1 Std.
- Gemergte PRs (30 T.)
- 10
Beschreibung
**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
Beitragsleitfaden
Rechercherichtung
Beginne in src/liboslexec/llvm_instance.cpp beim Block use_rs_bitcode() und untersuche den Aufruf ll.validate_global_mappings(names_of_unmapped_globals). Verfolge, wie Shader-Gruppen unter Windows parallel optimiert werden, und überprüfe anschließend, dass die Validierung für die normale Optimierung deaktiviert und beim Debugging beibehalten werden kann, ohne die Leistung nahezu auf ein sequenzielles Niveau zu reduzieren.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Bewertung
- Tech-Stack
- cpp
- Bereich
- compilers, performance
- Issue-Typ
- Bug
- Schwierigkeit
- 4/5
- Geschätzter Aufwand
- 3-5 Tage
- Aktivitätsstatus
- Veraltet
- Klarheit
- Größtenteils klar
- Anfängerfreundlichkeit
- 45/100