AcademySoftwareFoundation / AcademySoftwareFoundation/OpenShadingLanguage

[BUG] Bad parallel performance when optimizing a group

Offen
#2,005 0 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen
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

Beitragsleitfaden öffnen

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

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.