From 432b9679e8359ca706c7b8517ca564b047c4272d Mon Sep 17 00:00:00 2001 From: vfisikop Date: Thu, 15 Feb 2024 16:22:25 +0200 Subject: [PATCH 1/4] Build only with lp-solve source code, no need for liblpsolve55.so files --- examples/hpolytope-volume/CMakeLists.txt | 85 ++++++++++-------------- external/cmake-files/LPSolve.cmake | 43 +++++++++++- 2 files changed, 76 insertions(+), 52 deletions(-) diff --git a/examples/hpolytope-volume/CMakeLists.txt b/examples/hpolytope-volume/CMakeLists.txt index 1d923f238..eff88889a 100644 --- a/examples/hpolytope-volume/CMakeLists.txt +++ b/examples/hpolytope-volume/CMakeLists.txt @@ -6,7 +6,6 @@ project( VolEsti ) - CMAKE_MINIMUM_REQUIRED(VERSION 3.11) set(CMAKE_ALLOW_LOOSE_LOOP_CONSTRUCTS true) @@ -15,11 +14,10 @@ if(COMMAND cmake_policy) cmake_policy(SET CMP0003 NEW) endif(COMMAND cmake_policy) - -option(DISABLE_NLP_ORACLES "Disable non-linear oracles (used in collocation)" ON) -option(BUILTIN_EIGEN "Use eigen from ../../external" OFF) +set(CMAKE_EXPORT_COMPILE_COMMANDS "ON") +option(DISABLE_NLP_ORACLES "Disable non-linear oracles (used in collocation)" ON) if(DISABLE_NLP_ORACLES) add_definitions(-DDISABLE_NLP_ORACLES) else() @@ -53,60 +51,47 @@ else() message(STATUS "Library fftw3 found:" ${FFTW3}) endif(NOT IFOPT) - endif(DISABLE_NLP_ORACLES) +# eigen +option(BUILTIN_EIGEN "Use eigen from ../../external" OFF) include("../../external/cmake-files/Eigen.cmake") GetEigen() +if (${CMAKE_VERSION} VERSION_LESS "3.12.0") + add_compile_options(-D "EIGEN_NO_DEBUG") +else () + add_compile_definitions("EIGEN_NO_DEBUG") +endif () + +# boost include("../../external/cmake-files/Boost.cmake") GetBoost() +# lp_solve include("../../external/cmake-files/LPSolve.cmake") GetLPSolve() -# Find lpsolve library -find_library(LP_SOLVE NAMES liblpsolve55.so PATHS /usr/lib/lp_solve) - -if (NOT LP_SOLVE) - message(FATAL_ERROR "This program requires the lp_solve library, and will not be compiled.") -else () - message(STATUS "Library lp_solve found: ${LP_SOLVE}") - - set(CMAKE_EXPORT_COMPILE_COMMANDS "ON") - - include_directories (BEFORE ../../external) - include_directories (BEFORE ../../external/minimum_ellipsoid) - include_directories (BEFORE ../../include/generators) - include_directories (BEFORE ../../include/volume) - include_directories (BEFORE ../../include) - include_directories (BEFORE ../../include/convex_bodies) - include_directories (BEFORE ../../include/random_walks) - include_directories (BEFORE ../../include/annealing) - include_directories (BEFORE ../../include/ode_solvers) - include_directories (BEFORE ../../include/root_finders) - include_directories (BEFORE ../../include/samplers) - include_directories (BEFORE ../../include/lp_oracles) - include_directories (BEFORE ../../include/nlp_oracles) - include_directories (BEFORE ../../include/misc) - include_directories (BEFORE ../../include/optimization) - - # for Eigen - if (${CMAKE_VERSION} VERSION_LESS "3.12.0") - add_compile_options(-D "EIGEN_NO_DEBUG") - else () - add_compile_definitions("EIGEN_NO_DEBUG") - endif () - - - add_definitions(${CMAKE_CXX_FLAGS} "-std=c++11") # enable C++11 standard - add_definitions(${CMAKE_CXX_FLAGS} "-O3") # optimization of the compiler - #add_definitions(${CXX_COVERAGE_COMPILE_FLAGS} "-lgsl") - add_definitions(${CXX_COVERAGE_COMPILE_FLAGS} "-lm") - add_definitions(${CXX_COVERAGE_COMPILE_FLAGS} "-ldl") - add_definitions(${CXX_COVERAGE_COMPILE_FLAGS} "-DBOOST_NO_AUTO_PTR") - - add_executable (hpolytopeVolume hpolytopeVolume.cpp) - TARGET_LINK_LIBRARIES(hpolytopeVolume ${LP_SOLVE}) - -endif() +include_directories (BEFORE ../../external) +include_directories (BEFORE ../../external/minimum_ellipsoid) +include_directories (BEFORE ../../include/generators) +include_directories (BEFORE ../../include/volume) +include_directories (BEFORE ../../include) +include_directories (BEFORE ../../include/convex_bodies) +include_directories (BEFORE ../../include/random_walks) +include_directories (BEFORE ../../include/annealing) +include_directories (BEFORE ../../include/ode_solvers) +include_directories (BEFORE ../../include/root_finders) +include_directories (BEFORE ../../include/samplers) +include_directories (BEFORE ../../include/lp_oracles) +include_directories (BEFORE ../../include/nlp_oracles) +include_directories (BEFORE ../../include/misc) +include_directories (BEFORE ../../include/optimization) + +add_definitions(${CMAKE_CXX_FLAGS} "-O3") # optimization of the compiler +add_definitions(${CXX_COVERAGE_COMPILE_FLAGS} "-lm") +add_definitions(${CXX_COVERAGE_COMPILE_FLAGS} "-ldl") +add_definitions(${CXX_COVERAGE_COMPILE_FLAGS} "-DBOOST_NO_AUTO_PTR") + +add_executable(hpolytopeVolume hpolytopeVolume.cpp) +target_link_libraries(hpolytopeVolume PUBLIC lp_solve) diff --git a/external/cmake-files/LPSolve.cmake b/external/cmake-files/LPSolve.cmake index c5a173837..56bf2ebc2 100644 --- a/external/cmake-files/LPSolve.cmake +++ b/external/cmake-files/LPSolve.cmake @@ -26,7 +26,46 @@ function(GetLPSolve) message(STATUS "lp_solve library found: ${LP_SOLVE_DIR}") endif() - - include_directories(${LP_SOLVE_DIR}) + + #to disable interactive mode of lp_solve lex parser + add_compile_options(-DYY_NEVER_INTERACTIVE) + + add_compile_options(-DLoadInverseLib=0) + add_compile_options(-DLoadLanguageLib=0) + add_compile_definitions(RoleIsExternalInvEngine) + add_compile_definitions(INVERSE_ACTIVE=3) + + include_directories (BEFORE ${LP_SOLVE_DIR}) + include_directories (BEFORE ${LP_SOLVE_DIR}/bfp) + include_directories (BEFORE ${LP_SOLVE_DIR}/bfp/bfp_LUSOL) + include_directories (BEFORE ${LP_SOLVE_DIR}/bfp/bfp_LUSOL/LUSOL) + include_directories (BEFORE ${LP_SOLVE_DIR}/colamd) + include_directories (BEFORE ${LP_SOLVE_DIR}/shared) + + add_library (lp_solve + ${LP_SOLVE_DIR}/bfp/bfp_LUSOL/lp_LUSOL.c + ${LP_SOLVE_DIR}/bfp/bfp_LUSOL/LUSOL/lusol.c + ${LP_SOLVE_DIR}/colamd/colamd.c + ${LP_SOLVE_DIR}/ini.c + ${LP_SOLVE_DIR}/shared/commonlib.c + ${LP_SOLVE_DIR}/shared/mmio.c + ${LP_SOLVE_DIR}/shared/myblas.c + ${LP_SOLVE_DIR}/lp_crash.c + ${LP_SOLVE_DIR}/lp_Hash.c + ${LP_SOLVE_DIR}/lp_lib.c + ${LP_SOLVE_DIR}/lp_matrix.c + ${LP_SOLVE_DIR}/lp_MDO.c + ${LP_SOLVE_DIR}/lp_mipbb.c + ${LP_SOLVE_DIR}/lp_MPS.c + ${LP_SOLVE_DIR}/lp_params.c + ${LP_SOLVE_DIR}/lp_presolve.c + ${LP_SOLVE_DIR}/lp_price.c + ${LP_SOLVE_DIR}/lp_pricePSE.c + ${LP_SOLVE_DIR}/lp_report.c + ${LP_SOLVE_DIR}/lp_scale.c + ${LP_SOLVE_DIR}/lp_simplex.c + ${LP_SOLVE_DIR}/lp_SOS.c + ${LP_SOLVE_DIR}/lp_utils.c + ${LP_SOLVE_DIR}/lp_wlp.c) endfunction() From 7da53c4e2b1657790f04439c4c42e7d4969d07ff Mon Sep 17 00:00:00 2001 From: vfisikop Date: Thu, 15 Feb 2024 17:10:32 +0200 Subject: [PATCH 2/4] Update tests and some examples to buid with lp solve from sources --- .github/workflows/cmake-clang.yml | 2 +- .github/workflows/cmake-gcc.yml | 2 +- examples/crhmc_prepare/CMakeLists.txt | 76 ++-- examples/vpolytope-volume/CMakeLists.txt | 75 ++-- test/CMakeLists.txt | 518 +++++++++++------------ 5 files changed, 321 insertions(+), 352 deletions(-) diff --git a/.github/workflows/cmake-clang.yml b/.github/workflows/cmake-clang.yml index caa22fff2..520b33159 100644 --- a/.github/workflows/cmake-clang.yml +++ b/.github/workflows/cmake-clang.yml @@ -30,7 +30,7 @@ jobs: steps: - uses: actions/checkout@v1 - run: sudo apt-get update || true; - sudo apt-get install ${{ matrix.config.compiler_pkg }} lp-solve; + sudo apt-get install ${{ matrix.config.compiler_pkg }} lp-solve libopenblas-dev; rm -rf build; mkdir build; cd build; diff --git a/.github/workflows/cmake-gcc.yml b/.github/workflows/cmake-gcc.yml index e42805492..f18e358ac 100644 --- a/.github/workflows/cmake-gcc.yml +++ b/.github/workflows/cmake-gcc.yml @@ -29,7 +29,7 @@ jobs: steps: - uses: actions/checkout@v1 - run: sudo apt-get update || true; - sudo apt-get install ${{ matrix.config.compiler }} lp-solve; + sudo apt-get install ${{ matrix.config.compiler }} lp-solve libopenblas-dev; rm -rf build; mkdir build; cd build; diff --git a/examples/crhmc_prepare/CMakeLists.txt b/examples/crhmc_prepare/CMakeLists.txt index 35c31e9e1..3575c4a46 100644 --- a/examples/crhmc_prepare/CMakeLists.txt +++ b/examples/crhmc_prepare/CMakeLists.txt @@ -76,52 +76,42 @@ GetLPSolve() include("../../external/cmake-files/QD.cmake") GetQD() -# Find lpsolve library -find_library(LP_SOLVE NAMES liblpsolve55.so PATHS /usr/lib/lp_solve) - -if (NOT LP_SOLVE) - message(FATAL_ERROR "This program requires the lp_solve library, and will not be compiled.") -else () - - message(STATUS "Library lp_solve found: ${LP_SOLVE}") - set(CMAKE_EXPORT_COMPILE_COMMANDS "ON") - - if (USE_MKL) - find_library(BLAS NAMES libblas.so libblas.dylib PATHS /usr/local/Cellar/lapack/3.9.1_1/lib /usr/lib/x86_64-linux-gnu /usr/lib/i386-linux-gnu /usr/local/Cellar/openblas/0.3.15_1/lib /usr/lib) - find_library(GFORTRAN NAME libgfortran.dylib PATHS /usr/local/Cellar/gcc/10.2.0_4/lib/gcc/10) - find_library(LAPACK NAME liblapack.dylib PATHS /usr/lib) - find_library(OPENMP NAME libiomp5.dylib PATHS /opt/intel/oneapi/compiler/2021.1.1/mac/compiler/lib) - - include_directories (BEFORE ${MKLROOT}/include) - set(PROJECT_LIBS ${BLAS_LIBRARIES} ${LAPACK_LIBRARIES} ${GFORTRAN_LIBRARIES}) - set(MKL_LINK "-L${MKLROOT}/lib -Wl,-rpath,${MKLROOT}/lib -lmkl_intel_ilp64 -lmkl_sequential -lmkl_core -lpthread -lm -ldl") - add_definitions(-DEIGEN_USE_MKL_ALL) - else() - set(MKL_LINK "") - endif(USE_MKL) +set(CMAKE_EXPORT_COMPILE_COMMANDS "ON") + +if (USE_MKL) + find_library(BLAS NAMES libblas.so libblas.dylib PATHS /usr/local/Cellar/lapack/3.9.1_1/lib /usr/lib/x86_64-linux-gnu /usr/lib/i386-linux-gnu /usr/local/Cellar/openblas/0.3.15_1/lib /usr/lib) + find_library(GFORTRAN NAME libgfortran.dylib PATHS /usr/local/Cellar/gcc/10.2.0_4/lib/gcc/10) + find_library(LAPACK NAME liblapack.dylib PATHS /usr/lib) + find_library(OPENMP NAME libiomp5.dylib PATHS /opt/intel/oneapi/compiler/2021.1.1/mac/compiler/lib) + + include_directories (BEFORE ${MKLROOT}/include) + set(PROJECT_LIBS ${BLAS_LIBRARIES} ${LAPACK_LIBRARIES} ${GFORTRAN_LIBRARIES}) + set(MKL_LINK "-L${MKLROOT}/lib -Wl,-rpath,${MKLROOT}/lib -lmkl_intel_ilp64 -lmkl_sequential -lmkl_core -lpthread -lm -ldl") + add_definitions(-DEIGEN_USE_MKL_ALL) +else() + set(MKL_LINK "") +endif(USE_MKL) - include_directories (BEFORE ../../external) - include_directories (BEFORE ../../external/minimum_ellipsoid) - include_directories (BEFORE ../../include/) +include_directories (BEFORE ../../external) +include_directories (BEFORE ../../external/minimum_ellipsoid) +include_directories (BEFORE ../../include/) - # for Eigen - if (${CMAKE_VERSION} VERSION_LESS "3.12.0") - add_compile_options(-D "EIGEN_NO_DEBUG") - else () - add_compile_definitions("EIGEN_NO_DEBUG") - endif () +# for Eigen +if (${CMAKE_VERSION} VERSION_LESS "3.12.0") + add_compile_options(-D "EIGEN_NO_DEBUG") +else () + add_compile_definitions("EIGEN_NO_DEBUG") +endif () - add_definitions(${CMAKE_CXX_FLAGS} "-std=c++11") # enable C++11 standard - #add_definitions(${CMAKE_CXX_FLAGS} "-g") # enable debuger - set(ADDITIONAL_FLAGS "-march=native -DSIMD_LEN=0 -DTIME_KEEPING") - add_definitions(${CMAKE_CXX_FLAGS} "-O3 " ${ADDITIONAL_FLAGS}) # optimization of the compiler - #add_definitions(${CXX_COVERAGE_COMPILE_FLAGS} "-lgsl") - add_definitions(${CXX_COVERAGE_COMPILE_FLAGS} "-lm") - add_definitions(${CXX_COVERAGE_COMPILE_FLAGS} "-ldl") - add_definitions(${CXX_COVERAGE_COMPILE_FLAGS} "-DBOOST_NO_AUTO_PTR") +#add_definitions(${CMAKE_CXX_FLAGS} "-g") # enable debuger +set(ADDITIONAL_FLAGS "-march=native -DSIMD_LEN=0 -DTIME_KEEPING") +add_definitions(${CMAKE_CXX_FLAGS} "-O3 " ${ADDITIONAL_FLAGS}) # optimization of the compiler +#add_definitions(${CXX_COVERAGE_COMPILE_FLAGS} "-lgsl") +add_definitions(${CXX_COVERAGE_COMPILE_FLAGS} "-lm") +add_definitions(${CXX_COVERAGE_COMPILE_FLAGS} "-ldl") +add_definitions(${CXX_COVERAGE_COMPILE_FLAGS} "-DBOOST_NO_AUTO_PTR") - add_executable (crhmc_prepare crhmc_prepare.cpp ) - TARGET_LINK_LIBRARIES(crhmc_prepare QD_LIB ${MKL_LINK} ${LP_SOLVE}) +add_executable (crhmc_prepare crhmc_prepare.cpp ) +TARGET_LINK_LIBRARIES(crhmc_prepare QD_LIB ${MKL_LINK}) -endif() diff --git a/examples/vpolytope-volume/CMakeLists.txt b/examples/vpolytope-volume/CMakeLists.txt index 5ffd4784b..e1a0c2576 100644 --- a/examples/vpolytope-volume/CMakeLists.txt +++ b/examples/vpolytope-volume/CMakeLists.txt @@ -65,48 +65,37 @@ GetBoost() include("../../external/cmake-files/LPSolve.cmake") GetLPSolve() -# Find lpsolve library -find_library(LP_SOLVE NAMES liblpsolve55.so PATHS /usr/lib/lp_solve) -if (NOT LP_SOLVE) - message(FATAL_ERROR "This program requires the lp_solve library, and will not be compiled.") +set(CMAKE_EXPORT_COMPILE_COMMANDS "ON") + +include_directories (BEFORE ../../external) +include_directories (BEFORE ../../external/minimum_ellipsoid) +include_directories (BEFORE ../../include/generators) +include_directories (BEFORE ../../include/volume) +include_directories (BEFORE ../../include) +include_directories (BEFORE ../../include/convex_bodies) +include_directories (BEFORE ../../include/random_walks) +include_directories (BEFORE ../../include/annealing) +include_directories (BEFORE ../../include/ode_solvers) +include_directories (BEFORE ../../include/root_finders) +include_directories (BEFORE ../../include/samplers) +include_directories (BEFORE ../../include/lp_oracles) +include_directories (BEFORE ../../include/nlp_oracles) +include_directories (BEFORE ../../include/misc) +include_directories (BEFORE ../../include/optimization) + +# for Eigen +if (${CMAKE_VERSION} VERSION_LESS "3.12.0") + add_compile_options(-D "EIGEN_NO_DEBUG") else () - message(STATUS "Library lp_solve found: ${LP_SOLVE}") - - set(CMAKE_EXPORT_COMPILE_COMMANDS "ON") - - include_directories (BEFORE ../../external) - include_directories (BEFORE ../../external/minimum_ellipsoid) - include_directories (BEFORE ../../include/generators) - include_directories (BEFORE ../../include/volume) - include_directories (BEFORE ../../include) - include_directories (BEFORE ../../include/convex_bodies) - include_directories (BEFORE ../../include/random_walks) - include_directories (BEFORE ../../include/annealing) - include_directories (BEFORE ../../include/ode_solvers) - include_directories (BEFORE ../../include/root_finders) - include_directories (BEFORE ../../include/samplers) - include_directories (BEFORE ../../include/lp_oracles) - include_directories (BEFORE ../../include/nlp_oracles) - include_directories (BEFORE ../../include/misc) - include_directories (BEFORE ../../include/optimization) - - # for Eigen - if (${CMAKE_VERSION} VERSION_LESS "3.12.0") - add_compile_options(-D "EIGEN_NO_DEBUG") - else () - add_compile_definitions("EIGEN_NO_DEBUG") - endif () - - - add_definitions(${CMAKE_CXX_FLAGS} "-std=c++11") # enable C++11 standard - add_definitions(${CMAKE_CXX_FLAGS} "-O3") # optimization of the compiler - #add_definitions(${CXX_COVERAGE_COMPILE_FLAGS} "-lgsl") - add_definitions(${CXX_COVERAGE_COMPILE_FLAGS} "-lm") - add_definitions(${CXX_COVERAGE_COMPILE_FLAGS} "-ldl") - add_definitions(${CXX_COVERAGE_COMPILE_FLAGS} "-DBOOST_NO_AUTO_PTR") - - add_executable (vpolytopevolume vpolytopevolume.cpp) - TARGET_LINK_LIBRARIES(vpolytopevolume ${LP_SOLVE}) - -endif() + add_compile_definitions("EIGEN_NO_DEBUG") +endif () + +add_definitions(${CMAKE_CXX_FLAGS} "-O3") # optimization of the compiler +#add_definitions(${CXX_COVERAGE_COMPILE_FLAGS} "-lgsl") +add_definitions(${CXX_COVERAGE_COMPILE_FLAGS} "-lm") +add_definitions(${CXX_COVERAGE_COMPILE_FLAGS} "-ldl") +add_definitions(${CXX_COVERAGE_COMPILE_FLAGS} "-DBOOST_NO_AUTO_PTR") + +add_executable (vpolytopevolume vpolytopevolume.cpp) +TARGET_LINK_LIBRARIES(vpolytopevolume lp_solve) diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt index 3adbe4681..a009795cc 100644 --- a/test/CMakeLists.txt +++ b/test/CMakeLists.txt @@ -26,7 +26,7 @@ endif() option(DISABLE_NLP_ORACLES "Disable non-linear oracles (used in collocation)" ON) option(BUILTIN_EIGEN "Use eigen from ../external" OFF) -option(USE_MKL "Use MKL library to build eigen" ON) +option(USE_MKL "Use MKL library to build eigen" OFF) if(DISABLE_NLP_ORACLES) add_definitions(-DDISABLE_NLP_ORACLES) @@ -136,271 +136,261 @@ if(CODE_COVERAGE AND CMAKE_CXX_COMPILER_ID MATCHES "GNU|Clang") endif() endif(CODE_COVERAGE AND CMAKE_CXX_COMPILER_ID MATCHES "GNU|Clang") -find_library(LP_SOLVE NAMES liblpsolve55.so liblpsolve55.dylib PATHS /usr/lib/lp_solve /usr/local/lib) -if (NOT LP_SOLVE) +set(CMAKE_EXPORT_COMPILE_COMMANDS "ON") - message(FATAL_ERROR "This program requires the lp_solve library, and will not be compiled.") +if (USE_MKL) + find_library(BLAS NAMES libblas.so libblas.dylib PATHS /usr/local/Cellar/lapack/3.9.1_1/lib /usr/lib/x86_64-linux-gnu /usr/lib/i386-linux-gnu /usr/local/Cellar/openblas/0.3.15_1/lib /usr/lib) + find_library(GFORTRAN NAME libgfortran.dylib PATHS /usr/local/Cellar/gcc/10.2.0_4/lib/gcc/10) + find_library(LAPACK NAME liblapack.dylib PATHS /usr/lib) + find_library(OPENMP NAME libiomp5.dylib PATHS /opt/intel/oneapi/compiler/2021.1.1/mac/compiler/lib) + include_directories (BEFORE ${MKLROOT}/include) + set(PROJECT_LIBS ${BLAS_LIBRARIES} ${LAPACK_LIBRARIES} ${GFORTRAN_LIBRARIES}) + set(MKL_LINK "-L${MKLROOT}/lib -Wl,-rpath,${MKLROOT}/lib -lmkl_intel_ilp64 -lmkl_sequential -lmkl_core -lpthread -lm -ldl") + add_definitions(-DEIGEN_USE_MKL_ALL) +else() + set(MKL_LINK "") +endif(USE_MKL) + +include_directories (BEFORE ../external) +include_directories (BEFORE ../external/minimum_ellipsoid) +include_directories (BEFORE ../include/generators) +include_directories (BEFORE ../include/volume) +include_directories (BEFORE ../include) +include_directories (BEFORE ../include/integration) +include_directories (BEFORE ../include/convex_bodies) +include_directories (BEFORE ../include/convex_bodies/spectrahedra) +include_directories (BEFORE ../include/annealing) +include_directories (BEFORE ../include/ode_solvers) +include_directories (BEFORE ../include/root_finders) +include_directories (BEFORE ../include/samplers) +include_directories (BEFORE ../include/lp_oracles) +include_directories (BEFORE ../include/nlp_oracles) +include_directories (BEFORE ../include/misc) +include_directories (BEFORE ../test) + +#for Eigen +if (${CMAKE_VERSION} VERSION_LESS "3.12.0") + add_compile_options(-D "EIGEN_NO_DEBUG") else () + add_compile_definitions("EIGEN_NO_DEBUG") +endif () + +add_definitions(${CMAKE_CXX_FLAGS} "-g") # enable debuger +#add_definitions(${CMAKE_CXX_FLAGS} "-Wint-in-bool-context") +#add_definitions(${CMAKE_CXX_FLAGS} "-Wall") + +add_definitions(${CMAKE_CXX_FLAGS} "-O3") # optimization of the compiler +#add_definitions(${CXX_COVERAGE_COMPILE_FLAGS} "-lgsl") +add_definitions(${CXX_COVERAGE_COMPILE_FLAGS} "-lm") +add_definitions(${CXX_COVERAGE_COMPILE_FLAGS} "-ldl") +add_definitions(${CXX_COVERAGE_COMPILE_FLAGS} "-DBOOST_NO_AUTO_PTR") +add_definitions(${CMAKE_CXX_FLAGS} "-DMKL_ILP64") +#add_definitions(${CXX_COVERAGE_COMPILE_FLAGS} "-lgslcblas") +#add_definitions( "-O3 -lgsl -lm -ldl -lgslcblas" ) + +add_executable (new_volume_example new_volume_example.cpp) +add_executable (benchmarks_sob benchmarks_sob.cpp) +add_executable (benchmarks_cg benchmarks_cg.cpp) +add_executable (benchmarks_cb benchmarks_cb.cpp) + +add_library(test_main OBJECT test_main.cpp) + +add_executable (mcmc_diagnostics_test mcmc_diagnostics_test.cpp $) +add_test(NAME test_psrf COMMAND mcmc_diagnostics_test -tc=psrf) +add_test(NAME test_univariate_psrf COMMAND mcmc_diagnostics_test -tc=univariate_psrf) +add_test(NAME test_interval_psrf COMMAND mcmc_diagnostics_test -tc=interval_psrf) +add_test(NAME test_ess COMMAND mcmc_diagnostics_test -tc=ess) +add_test(NAME test_geweke COMMAND mcmc_diagnostics_test -tc=geweke) +add_test(NAME test_raftery COMMAND mcmc_diagnostics_test -tc=raftery) + +add_executable (sampling_test sampling_test.cpp $) +add_test(NAME test_dikin COMMAND sampling_test -tc=dikin) +add_test(NAME test_john COMMAND sampling_test -tc=john) +add_test(NAME test_vaidya COMMAND sampling_test -tc=vaidya) +add_test(NAME test_brdhr COMMAND sampling_test -tc=brdhr) +add_test(NAME test_bcdhr COMMAND sampling_test -tc=bcdhr) +add_test(NAME test_grdhr COMMAND sampling_test -tc=grdhr) +add_test(NAME test_gbaw COMMAND sampling_test -tc=gbaw) +add_test(NAME test_ghmc COMMAND sampling_test -tc=ghmc) + +add_executable (mmcs_test mmcs_test.cpp $) +add_test(NAME test_mmcs COMMAND mmcs_test -tc=mmcs) + +add_executable (ode_solvers_test ode_solvers_test.cpp $) +add_test(NAME ode_solvers_test_first_order + COMMAND ode_solvers_test -tc=first_order) +add_test(NAME ode_solvers_test_second_order + COMMAND ode_solvers_test -tc=second_order) + +add_executable (root_finders_test root_finders_test.cpp $) +add_test(NAME root_finders_test_root_finders + COMMAND root_finders_test -tc=root_finders) + +#add_executable (benchmarks_crhmc benchmarks_crhmc.cpp ) +#add_executable (benchmarks_crhmc_sampling benchmarks_crhmc_sampling.cpp ) + +add_executable (crhmc_polytope_preparation_test crhmc_polytope_preparation_test.cpp $) +add_test(NAME crhmc_polytope_test_preparation + COMMAND crhmc_polytope_preparation_test -tc=test_preparation_crhmc) +add_test(NAME crhmc_test_fixed_vars + COMMAND crhmc_polytope_preparation_test -tc=test_fixed_vars_crhmc) +add_test(NAME crhmc_test_dep_vars + COMMAND crhmc_polytope_preparation_test -tc=test_dep_vars_crhmc) +add_test(NAME crhmc_test_center_computation + COMMAND crhmc_polytope_preparation_test -tc=test_center_computation) + +add_executable (boundary_oracles_test boundary_oracles_test.cpp $) +add_test(NAME boundary_oracles_test_h_poly_oracles + COMMAND boundary_oracles_test -tc=h_poly_oracles) + +add_executable (volume_sob_hpolytope volume_sob_hpolytope.cpp $) +add_test(NAME volume_sob_hpolytope_cube COMMAND volume_sob_hpolytope -tc=cube) +add_test(NAME volume_sob_hpolytope_cross COMMAND volume_sob_hpolytope -tc=cross) +add_test(NAME volume_sob_hpolytope_birkhoff COMMAND volume_sob_hpolytope -tc=birk) +add_test(NAME volume_sob_hpolytope_prod_simplex COMMAND volume_sob_hpolytope -tc=prod_simplex) +add_test(NAME volume_sob_hpolytope_simplex COMMAND volume_sob_hpolytope -tc=simplex) +add_test(NAME volume_sob_hpolytope_skinny_cube COMMAND volume_sob_hpolytope -tc=skinny_cube) +add_test(NAME volume_sob_hpolytope_cube_overflow COMMAND volume_sob_hpolytope -tc=cube_overflow) +set_property(TEST volume_sob_hpolytope_cube_overflow PROPERTY TIMEOUT 1) + +add_executable (volume_sob_vpolytope volume_sob_vpolytope.cpp $) +add_test(NAME volume_sob_vpolytope_cube COMMAND volume_sob_vpolytope -tc=cube) +add_test(NAME volume_sob_vpolytope_cross COMMAND volume_sob_vpolytope -tc=cross) +add_test(NAME volume_sob_vpolytope_simplex COMMAND volume_sob_vpolytope -tc=simplex) + +add_executable (volume_cg_hpolytope volume_cg_hpolytope.cpp $) +add_test(NAME volume_cg_hpolytope_cube COMMAND volume_cg_hpolytope -tc=cube) +add_test(NAME volume_cg_hpolytope_cross COMMAND volume_cg_hpolytope -tc=cross) +add_test(NAME volume_cg_hpolytope_birkhoff COMMAND volume_cg_hpolytope -tc=birk) +add_test(NAME volume_cg_hpolytope_prod_simplex COMMAND volume_cg_hpolytope -tc=prod_simplex) +add_test(NAME volume_cg_hpolytope_simplex COMMAND volume_cg_hpolytope -tc=simplex) +add_test(NAME volume_cg_hpolytope_skinny_cube COMMAND volume_cg_hpolytope -tc=skinny_cube) + +add_executable (volume_cg_vpolytope volume_cg_vpolytope.cpp $) +add_test(NAME volume_cg_vpolytope_cube COMMAND volume_cg_vpolytope -tc=cube) +add_test(NAME volume_cg_vpolytope_cross COMMAND volume_cg_vpolytope -tc=cross) +add_test(NAME volume_cg_vpolytope_simplex COMMAND volume_cg_vpolytope -tc=simplex) + +add_executable (volume_cb_hpolytope volume_cb_hpolytope.cpp $) +add_test(NAME volume_cb_hpolytope_cube COMMAND volume_cb_hpolytope -tc=cube) +add_test(NAME volume_cb_hpolytope_cross COMMAND volume_cb_hpolytope -tc=cross) +add_test(NAME volume_cb_hpolytope_birkhoff COMMAND volume_cb_hpolytope -tc=birk) +add_test(NAME volume_cb_hpolytope_prod_simplex COMMAND volume_cb_hpolytope -tc=prod_simplex) +add_test(NAME volume_cb_hpolytope_simplex COMMAND volume_cb_hpolytope -tc=simplex) +add_test(NAME volume_cb_hpolytope_skinny_cube COMMAND volume_cb_hpolytope -tc=skinny_cube) + +add_executable (volume_cb_vpolytope volume_cb_vpolytope.cpp $) +add_test(NAME volume_cb_vpolytope_cube COMMAND volume_cb_vpolytope -tc=cube) +add_test(NAME volume_cb_vpolytope_cross COMMAND volume_cb_vpolytope -tc=cross) +add_test(NAME volume_cb_vpolytope_simplex COMMAND volume_cb_vpolytope -tc=simplex) + +add_executable (volume_cb_zonotopes volume_cb_zonotopes.cpp $) +add_test(NAME volume_cb_zonotopes_uniform_zonotopes + COMMAND volume_cb_zonotopes -tc=uniform_zonotopes) + +add_executable (volume_cb_vpoly_intersection_vpoly volume_cb_vpoly_intersection_vpoly.cpp $) +add_test(NAME volume_cb_vpoly_intersection_vpoly_random_vpoly_sphere + COMMAND volume_cb_vpoly_intersection_vpoly -tc=random_vpoly_sphere) + +add_executable (new_rounding_test new_rounding_test.cpp $) +add_test(NAME test_round_min_ellipsoid + COMMAND new_rounding_test -tc=round_min_ellipsoid) +add_test(NAME test_round_max_ellipsoid + COMMAND new_rounding_test -tc=round_max_ellipsoid) +add_test(NAME test_round_svd + COMMAND new_rounding_test -tc=round_svd) + +add_executable (logconcave_sampling_test logconcave_sampling_test.cpp $) +add_test(NAME logconcave_sampling_test_hmc + COMMAND logconcave_sampling_test -tc=hmc) +add_test(NAME logconcave_sampling_test_uld + COMMAND logconcave_sampling_test -tc=uld) +add_test(NAME logconcave_sampling_test_exponential_biomass_sampling + COMMAND logconcave_sampling_test -tc=exponential_biomass_sampling) +add_test(NAME logconcave_sampling_test_nuts_hmc_truncated + COMMAND logconcave_sampling_test -tc=benchmark_nuts_hmc_truncated) +add_test(NAME logconcave_sampling_test_nuts_hmc + COMMAND logconcave_sampling_test -tc=benchmark_nuts_hmc) + + + +add_executable (crhmc_sampling_test crhmc_sampling_test.cpp $) +add_test(NAME crhmc_sampling_test_crhmc + COMMAND crhmc_sampling_test -tc=crhmc) +add_test(NAME crhmc_test_polytope_sampling + COMMAND crhmc_sampling_test -tc=test_polytope_sampling_crhmc) +add_test(NAME crhmc_test_sparse_sampling + COMMAND crhmc_sampling_test -tc=test_sampling_sparse_problem) +add_executable (simple_mc_integration simple_mc_integration.cpp $) +add_test(NAME simple_mc_integration_over_limits + COMMAND simple_mc_integration -tc=rectangle) +add_test(NAME simple_mc_integration_over_cubes + COMMAND simple_mc_integration -tc=cube) +add_test(NAME simple_mc_integration_over_simplices + COMMAND simple_mc_integration -tc=simplex) +add_test(NAME simple_mc_integration_over_product_simplices + COMMAND simple_mc_integration -tc=prod_simplex) +add_test(NAME simple_mc_integration_over_cross_polytopes + COMMAND simple_mc_integration -tc=cross) +add_test(NAME simple_mc_integration_over_birkhoff_polytopes + COMMAND simple_mc_integration -tc=birkhoff) + +add_executable (order_polytope order_polytope.cpp $) +add_test(NAME order_polytope_basics COMMAND order_polytope -tc=basics) +add_test(NAME order_polytope_line_intersect COMMAND order_polytope -tc=line_intersect) +add_test(NAME order_polytope_reflection COMMAND order_polytope -tc=reflection) +add_test(NAME order_polytope_vec_mult COMMAND order_polytope -tc=vec_mult) + +add_executable (matrix_sampling_test sampling_correlation_matrices_test.cpp $) +add_test(NAME test_corre_spectra_classes COMMAND matrix_sampling_test -tc=corre_spectra) +add_test(NAME test_new_ball_uniform COMMAND matrix_sampling_test -tc=new_ball_uniform) +add_test(NAME test_new_billiard_uniform COMMAND matrix_sampling_test -tc=new_billiard_uniform) +add_test(NAME test_new_accelerated_billiard_uniform COMMAND matrix_sampling_test -tc=new_accelerated_billiard_uniform) +add_test(NAME test_new_ball_uniform_MT COMMAND matrix_sampling_test -tc=new_ball_uniform_MT) +add_test(NAME test_new_rdhr_uniform_MT COMMAND matrix_sampling_test -tc=new_rdhr_uniform_MT) +add_test(NAME test_new_billiard_uniform_MT COMMAND matrix_sampling_test -tc=new_billiard_uniform_MT) +add_test(NAME test_new_accelerated_billiard_uniform_MT COMMAND matrix_sampling_test -tc=new_accelerated_billiard_uniform_MT) + +set(ADDITIONAL_FLAGS "-march=native -DSIMD_LEN=0 -DTIME_KEEPING") + +#set_target_properties(benchmarks_crhmc +# PROPERTIES COMPILE_FLAGS ${ADDITIONAL_FLAGS}) +#set_target_properties(benchmarks_crhmc_sampling +# PROPERTIES COMPILE_FLAGS ${ADDITIONAL_FLAGS}) +set_target_properties(crhmc_polytope_preparation_test + PROPERTIES COMPILE_FLAGS ${ADDITIONAL_FLAGS}) +set_target_properties(crhmc_sampling_test + PROPERTIES COMPILE_FLAGS ${ADDITIONAL_FLAGS}) + +TARGET_LINK_LIBRARIES(new_volume_example lp_solve ${MKL_LINK} coverage_config) +TARGET_LINK_LIBRARIES(new_volume_example lp_solve coverage_config) +TARGET_LINK_LIBRARIES(volume_sob_hpolytope lp_solve coverage_config) +TARGET_LINK_LIBRARIES(volume_sob_vpolytope lp_solve coverage_config) +TARGET_LINK_LIBRARIES(volume_cg_hpolytope lp_solve coverage_config) +TARGET_LINK_LIBRARIES(volume_cg_vpolytope lp_solve coverage_config) +TARGET_LINK_LIBRARIES(volume_cb_hpolytope lp_solve coverage_config) +TARGET_LINK_LIBRARIES(volume_cb_vpolytope lp_solve coverage_config) +TARGET_LINK_LIBRARIES(volume_cb_zonotopes lp_solve coverage_config) +TARGET_LINK_LIBRARIES(volume_cb_vpoly_intersection_vpoly lp_solve coverage_config) +TARGET_LINK_LIBRARIES(volume_cb_vpoly_intersection_vpoly lp_solve ${MKL_LINK} coverage_config) +TARGET_LINK_LIBRARIES(new_rounding_test lp_solve ${MKL_LINK} coverage_config) +TARGET_LINK_LIBRARIES(mcmc_diagnostics_test lp_solve ${MKL_LINK} coverage_config) +TARGET_LINK_LIBRARIES(sampling_test lp_solve ${MKL_LINK} coverage_config) +TARGET_LINK_LIBRARIES(mmcs_test lp_solve ${MKL_LINK} coverage_config) +TARGET_LINK_LIBRARIES(benchmarks_sob lp_solve ${MKL_LINK} coverage_config) +TARGET_LINK_LIBRARIES(benchmarks_cg lp_solve ${MKL_LINK} coverage_config) +TARGET_LINK_LIBRARIES(benchmarks_cb lp_solve ${MKL_LINK} coverage_config) +#TARGET_LINK_LIBRARIES(benchmarks_crhmc_sampling lp_solve ${MKL_LINK} QD_LIB coverage_config) +#TARGET_LINK_LIBRARIES(benchmarks_crhmc lp_solve ${MKL_LINK} QD_LIB coverage_config) +TARGET_LINK_LIBRARIES(simple_mc_integration lp_solve ${MKL_LINK} coverage_config) +TARGET_LINK_LIBRARIES(ode_solvers_test lp_solve ${IFOPT} ${IFOPT_IPOPT} ${PTHREAD} ${GMP} ${MPSOLVE} ${FFTW3} ${MKL_LINK} QD_LIB coverage_config) +TARGET_LINK_LIBRARIES(boundary_oracles_test lp_solve ${IFOPT} ${IFOPT_IPOPT} ${PTHREAD} ${GMP} ${MPSOLVE} ${FFTW3} ${MKL_LINK} coverage_config) +TARGET_LINK_LIBRARIES(root_finders_test ${PTHREAD} ${GMP} ${MPSOLVE} ${FFTW3} ${MKL_LINK} coverage_config) +TARGET_LINK_LIBRARIES(crhmc_polytope_preparation_test ${PTHREAD} ${GMP} ${MPSOLVE} ${FFTW3} ${MKL_LINK} QD_LIB coverage_config) +TARGET_LINK_LIBRARIES(logconcave_sampling_test lp_solve ${IFOPT} ${IFOPT_IPOPT} ${PTHREAD} ${GMP} ${MPSOLVE} ${FFTW3} ${MKL_LINK} coverage_config) +TARGET_LINK_LIBRARIES(crhmc_sampling_test lp_solve ${IFOPT} ${IFOPT_IPOPT} ${PTHREAD} ${GMP} ${MPSOLVE} ${FFTW3} ${MKL_LINK} QD_LIB coverage_config) +TARGET_LINK_LIBRARIES(order_polytope lp_solve coverage_config) +TARGET_LINK_LIBRARIES(matrix_sampling_test lp_solve ${MKL_LINK} coverage_config) - message(STATUS "Library lp_solve found: ${LP_SOLVE}") - set(CMAKE_EXPORT_COMPILE_COMMANDS "ON") - - if (USE_MKL) - find_library(BLAS NAMES libblas.so libblas.dylib PATHS /usr/local/Cellar/lapack/3.9.1_1/lib /usr/lib/x86_64-linux-gnu /usr/lib/i386-linux-gnu /usr/local/Cellar/openblas/0.3.15_1/lib /usr/lib) - find_library(GFORTRAN NAME libgfortran.dylib PATHS /usr/local/Cellar/gcc/10.2.0_4/lib/gcc/10) - find_library(LAPACK NAME liblapack.dylib PATHS /usr/lib) - find_library(OPENMP NAME libiomp5.dylib PATHS /opt/intel/oneapi/compiler/2021.1.1/mac/compiler/lib) - - include_directories (BEFORE ${MKLROOT}/include) - set(PROJECT_LIBS ${BLAS_LIBRARIES} ${LAPACK_LIBRARIES} ${GFORTRAN_LIBRARIES}) - set(MKL_LINK "-L${MKLROOT}/lib -Wl,-rpath,${MKLROOT}/lib -lmkl_intel_ilp64 -lmkl_sequential -lmkl_core -lpthread -lm -ldl") - add_definitions(-DEIGEN_USE_MKL_ALL) - else() - set(MKL_LINK "") - endif(USE_MKL) - - include_directories (BEFORE ../external) - include_directories (BEFORE ../external/minimum_ellipsoid) - include_directories (BEFORE ../include/generators) - include_directories (BEFORE ../include/volume) - include_directories (BEFORE ../include) - include_directories (BEFORE ../include/integration) - include_directories (BEFORE ../include/convex_bodies) - include_directories (BEFORE ../include/convex_bodies/spectrahedra) - include_directories (BEFORE ../include/annealing) - include_directories (BEFORE ../include/ode_solvers) - include_directories (BEFORE ../include/root_finders) - include_directories (BEFORE ../include/samplers) - include_directories (BEFORE ../include/lp_oracles) - include_directories (BEFORE ../include/nlp_oracles) - include_directories (BEFORE ../include/misc) - include_directories (BEFORE ../test) - - #for Eigen - if (${CMAKE_VERSION} VERSION_LESS "3.12.0") - add_compile_options(-D "EIGEN_NO_DEBUG") - else () - add_compile_definitions("EIGEN_NO_DEBUG") - endif () - - add_definitions(${CMAKE_CXX_FLAGS} "-std=c++11") # enable C++11 standard - add_definitions(${CMAKE_CXX_FLAGS} "-g") # enable debuger - #add_definitions(${CMAKE_CXX_FLAGS} "-Wint-in-bool-context") - #add_definitions(${CMAKE_CXX_FLAGS} "-Wall") - - add_definitions(${CMAKE_CXX_FLAGS} "-O3") # optimization of the compiler - #add_definitions(${CXX_COVERAGE_COMPILE_FLAGS} "-lgsl") - add_definitions(${CXX_COVERAGE_COMPILE_FLAGS} "-lm") - add_definitions(${CXX_COVERAGE_COMPILE_FLAGS} "-ldl") - add_definitions(${CXX_COVERAGE_COMPILE_FLAGS} "-DBOOST_NO_AUTO_PTR") - add_definitions(${CMAKE_CXX_FLAGS} "-DMKL_ILP64") - #add_definitions(${CXX_COVERAGE_COMPILE_FLAGS} "-lgslcblas") - #add_definitions( "-O3 -lgsl -lm -ldl -lgslcblas" ) - - add_executable (new_volume_example new_volume_example.cpp) - add_executable (benchmarks_sob benchmarks_sob.cpp) - add_executable (benchmarks_cg benchmarks_cg.cpp) - add_executable (benchmarks_cb benchmarks_cb.cpp) - - add_library(test_main OBJECT test_main.cpp) - - add_executable (mcmc_diagnostics_test mcmc_diagnostics_test.cpp $) - add_test(NAME test_psrf COMMAND mcmc_diagnostics_test -tc=psrf) - add_test(NAME test_univariate_psrf COMMAND mcmc_diagnostics_test -tc=univariate_psrf) - add_test(NAME test_interval_psrf COMMAND mcmc_diagnostics_test -tc=interval_psrf) - add_test(NAME test_ess COMMAND mcmc_diagnostics_test -tc=ess) - add_test(NAME test_geweke COMMAND mcmc_diagnostics_test -tc=geweke) - add_test(NAME test_raftery COMMAND mcmc_diagnostics_test -tc=raftery) - - add_executable (sampling_test sampling_test.cpp $) - add_test(NAME test_dikin COMMAND sampling_test -tc=dikin) - add_test(NAME test_john COMMAND sampling_test -tc=john) - add_test(NAME test_vaidya COMMAND sampling_test -tc=vaidya) - add_test(NAME test_brdhr COMMAND sampling_test -tc=brdhr) - add_test(NAME test_bcdhr COMMAND sampling_test -tc=bcdhr) - add_test(NAME test_grdhr COMMAND sampling_test -tc=grdhr) - add_test(NAME test_gbaw COMMAND sampling_test -tc=gbaw) - add_test(NAME test_ghmc COMMAND sampling_test -tc=ghmc) - - add_executable (mmcs_test mmcs_test.cpp $) - add_test(NAME test_mmcs COMMAND mmcs_test -tc=mmcs) - - add_executable (ode_solvers_test ode_solvers_test.cpp $) - add_test(NAME ode_solvers_test_first_order - COMMAND ode_solvers_test -tc=first_order) - add_test(NAME ode_solvers_test_second_order - COMMAND ode_solvers_test -tc=second_order) - - add_executable (root_finders_test root_finders_test.cpp $) - add_test(NAME root_finders_test_root_finders - COMMAND root_finders_test -tc=root_finders) - - #add_executable (benchmarks_crhmc benchmarks_crhmc.cpp ) - #add_executable (benchmarks_crhmc_sampling benchmarks_crhmc_sampling.cpp ) - - add_executable (crhmc_polytope_preparation_test crhmc_polytope_preparation_test.cpp $) - add_test(NAME crhmc_polytope_test_preparation - COMMAND crhmc_polytope_preparation_test -tc=test_preparation_crhmc) - add_test(NAME crhmc_test_fixed_vars - COMMAND crhmc_polytope_preparation_test -tc=test_fixed_vars_crhmc) - add_test(NAME crhmc_test_dep_vars - COMMAND crhmc_polytope_preparation_test -tc=test_dep_vars_crhmc) - add_test(NAME crhmc_test_center_computation - COMMAND crhmc_polytope_preparation_test -tc=test_center_computation) - - add_executable (boundary_oracles_test boundary_oracles_test.cpp $) - add_test(NAME boundary_oracles_test_h_poly_oracles - COMMAND boundary_oracles_test -tc=h_poly_oracles) - - add_executable (volume_sob_hpolytope volume_sob_hpolytope.cpp $) - add_test(NAME volume_sob_hpolytope_cube COMMAND volume_sob_hpolytope -tc=cube) - add_test(NAME volume_sob_hpolytope_cross COMMAND volume_sob_hpolytope -tc=cross) - add_test(NAME volume_sob_hpolytope_birkhoff COMMAND volume_sob_hpolytope -tc=birk) - add_test(NAME volume_sob_hpolytope_prod_simplex COMMAND volume_sob_hpolytope -tc=prod_simplex) - add_test(NAME volume_sob_hpolytope_simplex COMMAND volume_sob_hpolytope -tc=simplex) - add_test(NAME volume_sob_hpolytope_skinny_cube COMMAND volume_sob_hpolytope -tc=skinny_cube) - add_test(NAME volume_sob_hpolytope_cube_overflow COMMAND volume_sob_hpolytope -tc=cube_overflow) - set_property(TEST volume_sob_hpolytope_cube_overflow PROPERTY TIMEOUT 1) - - add_executable (volume_sob_vpolytope volume_sob_vpolytope.cpp $) - add_test(NAME volume_sob_vpolytope_cube COMMAND volume_sob_vpolytope -tc=cube) - add_test(NAME volume_sob_vpolytope_cross COMMAND volume_sob_vpolytope -tc=cross) - add_test(NAME volume_sob_vpolytope_simplex COMMAND volume_sob_vpolytope -tc=simplex) - - add_executable (volume_cg_hpolytope volume_cg_hpolytope.cpp $) - add_test(NAME volume_cg_hpolytope_cube COMMAND volume_cg_hpolytope -tc=cube) - add_test(NAME volume_cg_hpolytope_cross COMMAND volume_cg_hpolytope -tc=cross) - add_test(NAME volume_cg_hpolytope_birkhoff COMMAND volume_cg_hpolytope -tc=birk) - add_test(NAME volume_cg_hpolytope_prod_simplex COMMAND volume_cg_hpolytope -tc=prod_simplex) - add_test(NAME volume_cg_hpolytope_simplex COMMAND volume_cg_hpolytope -tc=simplex) - add_test(NAME volume_cg_hpolytope_skinny_cube COMMAND volume_cg_hpolytope -tc=skinny_cube) - - add_executable (volume_cg_vpolytope volume_cg_vpolytope.cpp $) - add_test(NAME volume_cg_vpolytope_cube COMMAND volume_cg_vpolytope -tc=cube) - add_test(NAME volume_cg_vpolytope_cross COMMAND volume_cg_vpolytope -tc=cross) - add_test(NAME volume_cg_vpolytope_simplex COMMAND volume_cg_vpolytope -tc=simplex) - - add_executable (volume_cb_hpolytope volume_cb_hpolytope.cpp $) - add_test(NAME volume_cb_hpolytope_cube COMMAND volume_cb_hpolytope -tc=cube) - add_test(NAME volume_cb_hpolytope_cross COMMAND volume_cb_hpolytope -tc=cross) - add_test(NAME volume_cb_hpolytope_birkhoff COMMAND volume_cb_hpolytope -tc=birk) - add_test(NAME volume_cb_hpolytope_prod_simplex COMMAND volume_cb_hpolytope -tc=prod_simplex) - add_test(NAME volume_cb_hpolytope_simplex COMMAND volume_cb_hpolytope -tc=simplex) - add_test(NAME volume_cb_hpolytope_skinny_cube COMMAND volume_cb_hpolytope -tc=skinny_cube) - - add_executable (volume_cb_vpolytope volume_cb_vpolytope.cpp $) - add_test(NAME volume_cb_vpolytope_cube COMMAND volume_cb_vpolytope -tc=cube) - add_test(NAME volume_cb_vpolytope_cross COMMAND volume_cb_vpolytope -tc=cross) - add_test(NAME volume_cb_vpolytope_simplex COMMAND volume_cb_vpolytope -tc=simplex) - - add_executable (volume_cb_zonotopes volume_cb_zonotopes.cpp $) - add_test(NAME volume_cb_zonotopes_uniform_zonotopes - COMMAND volume_cb_zonotopes -tc=uniform_zonotopes) - - add_executable (volume_cb_vpoly_intersection_vpoly volume_cb_vpoly_intersection_vpoly.cpp $) - add_test(NAME volume_cb_vpoly_intersection_vpoly_random_vpoly_sphere - COMMAND volume_cb_vpoly_intersection_vpoly -tc=random_vpoly_sphere) - - add_executable (new_rounding_test new_rounding_test.cpp $) - add_test(NAME test_round_min_ellipsoid - COMMAND new_rounding_test -tc=round_min_ellipsoid) - add_test(NAME test_round_max_ellipsoid - COMMAND new_rounding_test -tc=round_max_ellipsoid) - add_test(NAME test_round_svd - COMMAND new_rounding_test -tc=round_svd) - - add_executable (logconcave_sampling_test logconcave_sampling_test.cpp $) - add_test(NAME logconcave_sampling_test_hmc - COMMAND logconcave_sampling_test -tc=hmc) - add_test(NAME logconcave_sampling_test_uld - COMMAND logconcave_sampling_test -tc=uld) - add_test(NAME logconcave_sampling_test_exponential_biomass_sampling - COMMAND logconcave_sampling_test -tc=exponential_biomass_sampling) - add_test(NAME logconcave_sampling_test_nuts_hmc_truncated - COMMAND logconcave_sampling_test -tc=benchmark_nuts_hmc_truncated) - add_test(NAME logconcave_sampling_test_nuts_hmc - COMMAND logconcave_sampling_test -tc=benchmark_nuts_hmc) - - - - add_executable (crhmc_sampling_test crhmc_sampling_test.cpp $) - add_test(NAME crhmc_sampling_test_crhmc - COMMAND crhmc_sampling_test -tc=crhmc) - add_test(NAME crhmc_test_polytope_sampling - COMMAND crhmc_sampling_test -tc=test_polytope_sampling_crhmc) - add_test(NAME crhmc_test_sparse_sampling - COMMAND crhmc_sampling_test -tc=test_sampling_sparse_problem) - add_executable (simple_mc_integration simple_mc_integration.cpp $) - add_test(NAME simple_mc_integration_over_limits - COMMAND simple_mc_integration -tc=rectangle) - add_test(NAME simple_mc_integration_over_cubes - COMMAND simple_mc_integration -tc=cube) - add_test(NAME simple_mc_integration_over_simplices - COMMAND simple_mc_integration -tc=simplex) - add_test(NAME simple_mc_integration_over_product_simplices - COMMAND simple_mc_integration -tc=prod_simplex) - add_test(NAME simple_mc_integration_over_cross_polytopes - COMMAND simple_mc_integration -tc=cross) - add_test(NAME simple_mc_integration_over_birkhoff_polytopes - COMMAND simple_mc_integration -tc=birkhoff) - - add_executable (order_polytope order_polytope.cpp $) - add_test(NAME order_polytope_basics COMMAND order_polytope -tc=basics) - add_test(NAME order_polytope_line_intersect COMMAND order_polytope -tc=line_intersect) - add_test(NAME order_polytope_reflection COMMAND order_polytope -tc=reflection) - add_test(NAME order_polytope_vec_mult COMMAND order_polytope -tc=vec_mult) - - add_executable (matrix_sampling_test sampling_correlation_matrices_test.cpp $) - add_test(NAME test_corre_spectra_classes COMMAND matrix_sampling_test -tc=corre_spectra) - add_test(NAME test_new_ball_uniform COMMAND matrix_sampling_test -tc=new_ball_uniform) - add_test(NAME test_new_billiard_uniform COMMAND matrix_sampling_test -tc=new_billiard_uniform) - add_test(NAME test_new_accelerated_billiard_uniform COMMAND matrix_sampling_test -tc=new_accelerated_billiard_uniform) - add_test(NAME test_new_ball_uniform_MT COMMAND matrix_sampling_test -tc=new_ball_uniform_MT) - add_test(NAME test_new_rdhr_uniform_MT COMMAND matrix_sampling_test -tc=new_rdhr_uniform_MT) - add_test(NAME test_new_billiard_uniform_MT COMMAND matrix_sampling_test -tc=new_billiard_uniform_MT) - add_test(NAME test_new_accelerated_billiard_uniform_MT COMMAND matrix_sampling_test -tc=new_accelerated_billiard_uniform_MT) - - set(ADDITIONAL_FLAGS "-march=native -DSIMD_LEN=0 -DTIME_KEEPING") - - #set_target_properties(benchmarks_crhmc - # PROPERTIES COMPILE_FLAGS ${ADDITIONAL_FLAGS}) - #set_target_properties(benchmarks_crhmc_sampling - # PROPERTIES COMPILE_FLAGS ${ADDITIONAL_FLAGS}) - set_target_properties(crhmc_polytope_preparation_test - PROPERTIES COMPILE_FLAGS ${ADDITIONAL_FLAGS}) - set_target_properties(crhmc_sampling_test - PROPERTIES COMPILE_FLAGS ${ADDITIONAL_FLAGS}) - - TARGET_LINK_LIBRARIES(new_volume_example ${LP_SOLVE} ${MKL_LINK} coverage_config) - TARGET_LINK_LIBRARIES(new_volume_example ${LP_SOLVE} coverage_config) - TARGET_LINK_LIBRARIES(volume_sob_hpolytope ${LP_SOLVE} coverage_config) - TARGET_LINK_LIBRARIES(volume_sob_vpolytope ${LP_SOLVE} coverage_config) - TARGET_LINK_LIBRARIES(volume_cg_hpolytope ${LP_SOLVE} coverage_config) - TARGET_LINK_LIBRARIES(volume_cg_vpolytope ${LP_SOLVE} coverage_config) - TARGET_LINK_LIBRARIES(volume_cb_hpolytope ${LP_SOLVE} coverage_config) - TARGET_LINK_LIBRARIES(volume_cb_vpolytope ${LP_SOLVE} coverage_config) - TARGET_LINK_LIBRARIES(volume_cb_zonotopes ${LP_SOLVE} coverage_config) - TARGET_LINK_LIBRARIES(volume_cb_vpoly_intersection_vpoly ${LP_SOLVE} coverage_config) - TARGET_LINK_LIBRARIES(volume_cb_vpoly_intersection_vpoly ${LP_SOLVE} ${MKL_LINK} coverage_config) - TARGET_LINK_LIBRARIES(new_rounding_test ${LP_SOLVE} ${MKL_LINK} coverage_config) - TARGET_LINK_LIBRARIES(mcmc_diagnostics_test ${LP_SOLVE} ${MKL_LINK} coverage_config) - TARGET_LINK_LIBRARIES(sampling_test ${LP_SOLVE} ${MKL_LINK} coverage_config) - TARGET_LINK_LIBRARIES(mmcs_test ${LP_SOLVE} ${MKL_LINK} coverage_config) - TARGET_LINK_LIBRARIES(benchmarks_sob ${LP_SOLVE} ${MKL_LINK} coverage_config) - TARGET_LINK_LIBRARIES(benchmarks_cg ${LP_SOLVE} ${MKL_LINK} coverage_config) - TARGET_LINK_LIBRARIES(benchmarks_cb ${LP_SOLVE} ${MKL_LINK} coverage_config) - #TARGET_LINK_LIBRARIES(benchmarks_crhmc_sampling ${LP_SOLVE} ${MKL_LINK} QD_LIB coverage_config) - #TARGET_LINK_LIBRARIES(benchmarks_crhmc ${LP_SOLVE} ${MKL_LINK} QD_LIB coverage_config) - TARGET_LINK_LIBRARIES(simple_mc_integration ${LP_SOLVE} ${MKL_LINK} coverage_config) - TARGET_LINK_LIBRARIES(ode_solvers_test ${LP_SOLVE} ${IFOPT} ${IFOPT_IPOPT} ${PTHREAD} ${GMP} ${MPSOLVE} ${FFTW3} ${MKL_LINK} QD_LIB coverage_config) - TARGET_LINK_LIBRARIES(boundary_oracles_test ${LP_SOLVE} ${IFOPT} ${IFOPT_IPOPT} ${PTHREAD} ${GMP} ${MPSOLVE} ${FFTW3} ${MKL_LINK} coverage_config) - TARGET_LINK_LIBRARIES(root_finders_test ${PTHREAD} ${GMP} ${MPSOLVE} ${FFTW3} ${MKL_LINK} coverage_config) - TARGET_LINK_LIBRARIES(crhmc_polytope_preparation_test ${PTHREAD} ${GMP} ${MPSOLVE} ${FFTW3} ${MKL_LINK} QD_LIB coverage_config) - TARGET_LINK_LIBRARIES(logconcave_sampling_test ${LP_SOLVE} ${IFOPT} ${IFOPT_IPOPT} ${PTHREAD} ${GMP} ${MPSOLVE} ${FFTW3} ${MKL_LINK} coverage_config) - TARGET_LINK_LIBRARIES(crhmc_sampling_test ${LP_SOLVE} ${IFOPT} ${IFOPT_IPOPT} ${PTHREAD} ${GMP} ${MPSOLVE} ${FFTW3} ${MKL_LINK} QD_LIB coverage_config) - TARGET_LINK_LIBRARIES(order_polytope ${LP_SOLVE} coverage_config) - TARGET_LINK_LIBRARIES(matrix_sampling_test ${LP_SOLVE} ${MKL_LINK} coverage_config) - -endif() From f8db05ccf6694e1f1246fab730061dee1bce323d Mon Sep 17 00:00:00 2001 From: vfisikop Date: Fri, 16 Feb 2024 12:24:10 +0200 Subject: [PATCH 3/4] Upgrade boost from 1.76 to 1.84 --- external/cmake-files/Boost.cmake | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/external/cmake-files/Boost.cmake b/external/cmake-files/Boost.cmake index 48dad5e6f..4c17f3753 100644 --- a/external/cmake-files/Boost.cmake +++ b/external/cmake-files/Boost.cmake @@ -2,10 +2,10 @@ set(BOOST_CMAKE_DIR ${CMAKE_CURRENT_LIST_DIR}) function(GetBoost) find_path(BOOST_DIR NAMES boost PATHS ${BOOST_CMAKE_DIR}/../_deps/boost-src) - if (NOT BOOST_DIR) - - set(BOOST_URL "https://boostorg.jfrog.io/artifactory/main/release/1.76.0/source/boost_1_76_0.tar.bz2" CACHE STRING "Boost download URL") - set(BOOST_URL_SHA256 "f0397ba6e982c4450f27bf32a2a83292aba035b827a5623a14636ea583318c41" CACHE STRING "Boost download URL SHA256 checksum") + if (NOT BOOST_DIR) + + set(BOOST_URL "https://boostorg.jfrog.io/artifactory/main/release/1.84.0/source/boost_1_84_0.tar.bz2" CACHE STRING "Boost download URL") + set(BOOST_URL_SHA256 "cc4b893acf645c9d4b698e9a0f08ca8846aa5d6c68275c14c3e7949c24109454" CACHE STRING "Boost download URL SHA256 checksum") include(FetchContent) set(FETCHCONTENT_BASE_DIR "${BOOST_CMAKE_DIR}/../_deps") From 1703e69d7d88647a8d35ecef91b71e3a60e48e97 Mon Sep 17 00:00:00 2001 From: vfisikop Date: Fri, 16 Feb 2024 12:44:47 +0200 Subject: [PATCH 4/4] Fix ambiguous call to pow for clang, and disable LoadableBlasLib --- external/cmake-files/LPSolve.cmake | 1 + include/diagnostics/effective_sample_size.hpp | 2 +- include/diagnostics/print_diagnostics.hpp | 2 +- 3 files changed, 3 insertions(+), 2 deletions(-) diff --git a/external/cmake-files/LPSolve.cmake b/external/cmake-files/LPSolve.cmake index 56bf2ebc2..f8779ace3 100644 --- a/external/cmake-files/LPSolve.cmake +++ b/external/cmake-files/LPSolve.cmake @@ -34,6 +34,7 @@ function(GetLPSolve) add_compile_options(-DLoadLanguageLib=0) add_compile_definitions(RoleIsExternalInvEngine) add_compile_definitions(INVERSE_ACTIVE=3) + add_compile_options(-DLoadableBlasLib=0) include_directories (BEFORE ${LP_SOLVE_DIR}) include_directories (BEFORE ${LP_SOLVE_DIR}/bfp) diff --git a/include/diagnostics/effective_sample_size.hpp b/include/diagnostics/effective_sample_size.hpp index aaf418529..c372eb696 100644 --- a/include/diagnostics/effective_sample_size.hpp +++ b/include/diagnostics/effective_sample_size.hpp @@ -68,7 +68,7 @@ VT effective_sample_size(MT const& samples, unsigned int &min_ess) { variance = NT(0); for (int j = 0; j < N; j++) { - variance += pow(normalized_sample_row[j], 2); + variance += std::pow(normalized_sample_row[j], 2); } variance *= (1.0 / N); diff --git a/include/diagnostics/print_diagnostics.hpp b/include/diagnostics/print_diagnostics.hpp index 91bd8b0ed..b009d6d0c 100644 --- a/include/diagnostics/print_diagnostics.hpp +++ b/include/diagnostics/print_diagnostics.hpp @@ -42,7 +42,7 @@ void print_diagnostics(MT const& samples, unsigned int &min_ess, StreamType &str row_mean = samples.row(i).mean(); row_std = NT(0); for (int j = 0; j < N; j++) { - row_std += pow(samples(i, j) - row_mean, 2); + row_std += std::pow(samples(i, j) - row_mean, 2); } row_std = sqrt(row_std / N); vt.addRow(i + 1, row_mean, row_std, ess(i), intv_psrf(i));