Skip to content

Commit d59635c

Browse files
committed
Added runtime function to set number of openblas threads to 1
1 parent e6e04e8 commit d59635c

File tree

3 files changed

+15
-2
lines changed

3 files changed

+15
-2
lines changed

highs/CMakeLists.txt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -188,12 +188,13 @@ else()
188188

189189
if(APPLE)
190190
target_link_libraries(highs "-framework Accelerate")
191-
target_compile_definitions(highs PRIVATE FRAMEWORK_ACCELERATE)
191+
target_compile_definitions(highs PRIVATE HIPO_USES_APPLE_BLAS)
192192
else(APPLE)
193193
if(BLAS_LIB)
194194
target_link_libraries(highs "${BLAS_LIB}")
195195
elseif(OPENBLAS_LIB)
196196
target_link_libraries(highs "${OPENBLAS_LIB}")
197+
target_compile_definitions(highs PRIVATE HIPO_USES_OPENBLAS)
197198
else()
198199
message(FATAL_ERROR "No BLAS library available")
199200
endif(BLAS_LIB)

highs/ipm/IpxWrapper.cpp

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -407,6 +407,13 @@ HighsStatus solveLpHipo(HighsLpSolverObject& solver_object) {
407407
solver_object.highs_info_, solver_object.callback_);
408408
}
409409

410+
#ifdef HIPO_USES_OPENBLAS
411+
// function to set number of threads of openblas
412+
extern "C" {
413+
void openblas_set_num_threads(int num_threads);
414+
}
415+
#endif
416+
410417
HighsStatus solveLpHipo(const HighsOptions& options, HighsTimer& timer,
411418
const HighsLp& lp, HighsBasis& highs_basis,
412419
HighsSolution& highs_solution,
@@ -444,6 +451,11 @@ HighsStatus solveLpHipo(const HighsOptions& options, HighsTimer& timer,
444451
// Indicate that no imprecise solution has (yet) been found
445452
resetModelStatusAndHighsInfo(model_status, highs_info);
446453

454+
#ifdef HIPO_USES_OPENBLAS
455+
// force openblas to run in serial, for determinism and better performance
456+
openblas_set_num_threads(1);
457+
#endif
458+
447459
// Create solver instance
448460
hipo::Solver hipo{};
449461

highs/ipm/hipo/ipm/FactorHiGHSSolver.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -588,7 +588,7 @@ void FactorHiGHSSolver::setParallel(Options& options) {
588588
log_stream << "Full requested\n";
589589
break;
590590
case kOptionParallelChoose: {
591-
#ifdef FRAMEWORK_ACCELERATE
591+
#ifdef HIPO_USES_APPLE_BLAS
592592
// Blas on Apple do not work well with parallel_node, but parallel_tree
593593
// seems to always be beneficial.
594594
parallel_node = false;

0 commit comments

Comments
 (0)