Skip to content

Commit 440c40b

Browse files
committed
Fix for init of cpu context
1 parent 457a681 commit 440c40b

File tree

2 files changed

+18
-22
lines changed

2 files changed

+18
-22
lines changed

cpp/daal/src/services/env_detect.cpp

Lines changed: 14 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -128,32 +128,21 @@ DAAL_EXPORT daal::services::Environment::Environment(const Environment & e) : da
128128
/*This functionality has been moved to oneDAL side*/
129129
DAAL_EXPORT void daal::services::Environment::initNumberOfThreads()
130130
{
131-
if (externalThreadingControl)
132-
{
133-
if (!isInit)
134-
{
135-
daal::services::Environment::setNumberOfThreads(_daal_threader_get_max_threads());
136-
isInit = true;
137-
}
138-
}
139-
else
131+
if (!isInit && !externalThreadingControl)
140132
{
141-
if (!isInit)
133+
/* if HT enabled - set _numThreads to physical cores num */
134+
if (daal::internal::ServiceInst::serv_get_ht())
142135
{
143-
/* if HT enabled - set _numThreads to physical cores num */
144-
if (daal::internal::ServiceInst::serv_get_ht())
136+
/* Number of cores = number of cpu packages * number of cores per cpu package */
137+
int ncores = daal::internal::ServiceInst::serv_get_ncpus() * daal::internal::ServiceInst::serv_get_ncorespercpu();
138+
139+
/* Re-set number of threads if ncores is valid and different to _numThreads */
140+
if ((ncores > 0) && (ncores < _daal_threader_get_max_threads()))
145141
{
146-
/* Number of cores = number of cpu packages * number of cores per cpu package */
147-
int ncores = daal::internal::ServiceInst::serv_get_ncpus() * daal::internal::ServiceInst::serv_get_ncorespercpu();
148-
149-
/* Re-set number of threads if ncores is valid and different to _numThreads */
150-
if ((ncores > 0) && (ncores < _daal_threader_get_max_threads()))
151-
{
152-
daal::services::Environment::setNumberOfThreads(ncores);
153-
}
142+
daal::services::Environment::setNumberOfThreads(ncores);
154143
}
155-
isInit = true;
156144
}
145+
isInit = true;
157146
}
158147
}
159148

@@ -206,4 +195,8 @@ DAAL_EXPORT void daal::services::Environment::modifyExternalThreadingControl(boo
206195
{
207196
externalThreadingControl = assumeExternalControl;
208197
isInit = false;
198+
if (externalThreadingControl)
199+
{
200+
daal::services::Environment::setNumberOfThreads(_daal_threader_get_max_threads());
201+
}
209202
}

cpp/oneapi/dal/backend/dispatcher.cpp

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,12 +27,15 @@ struct global_context_cpu_init {
2727
// Call to `getCpuId` changes global settings, in particular,
2828
// changes default number of threads in the threading layer
2929
Environment::getInstance()->getCpuId();
30-
Environment::getInstance()->modifyExternalThreadingControl();
3130
}
3231
};
3332

3433
void context_cpu::global_init() {
34+
using daal::services::Environment;
35+
3536
[[maybe_unused]] static volatile global_context_cpu_init init;
37+
38+
Environment::getInstance()->modifyExternalThreadingControl();
3639
}
3740

3841
inline constexpr detail::cpu_extension from_daal_cpu_type(daal::CpuType cpu) {

0 commit comments

Comments
 (0)