factor out uses of omp_get_num_threads() and omp_get_max_threads() outside of OpenMP wrapper #6133
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Contributes to #4705.
Contributes to #5987.
LightGBM uses OpenMP for to parallelize many operations via multi-threading.
It's C/C++ codebase uses some wrapper functions defined in a header file
openmp_wrapper.h
to get and set the number of threads to use in such operations:LightGBM/include/LightGBM/utils/openmp_wrapper.h
Lines 20 to 35 in f901f47
There are a few places in the code which bypass those helpers and instead directly call
omp_get_num_threads()
andomp_get_max_threads()
.This PR proposes switching such calls to instead use LightGBM's wrappers. That reduces the number of different code paths that multi-threading configuration goes through, therefore reducing the risk of configuration inconsistencies and issues like #4705 and #5124.