AcademySoftwareFoundation / AcademySoftwareFoundation/OpenShadingLanguage
[BUG] Bad parallel performance when optimizing a group
- Lenguaje dominante
- C++
- Estrellas
- 2.3k
- Forks
- 414
- Merge medio
- 3 d 1 h
- PR fusionados (30 d)
- 10
Descripción
**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
Guía de contribución
Línea de trabajo
Comienza en src/liboslexec/llvm_instance.cpp, en el bloque use_rs_bitcode(), e inspecciona la llamada ll.validate_global_mappings(names_of_unmapped_globals). Traza cómo se optimizan los grupos de shaders en paralelo en Windows y, después, verifica que la validación pueda desactivarse para la optimización normal y conservarse durante la depuración sin el impacto en el rendimiento de una ejecución casi secuencial.
Escrito por el modelo de indexación a partir del texto del issue.
Evaluación
- Stack tecnológico
- cpp
- Área
- compilers, performance
- Tipo de issue
- Error
- Dificultad
- 4/5
- Tiempo estimado
- 3-5 días
- Estado de actividad
- Estancado
- Claridad
- Bastante claro
- Aptitud para principiantes
- 45/100