Skip to content

Commit

Permalink
Merge pull request #290 from vfisikop/fix/lpsolve_build_from_source
Browse files Browse the repository at this point in the history
Build only with lp-solve source code, no need for liblpsolve55.so files
  • Loading branch information
vfisikop authored Feb 16, 2024
2 parents ad049d5 + 1703e69 commit 93bbc50
Show file tree
Hide file tree
Showing 10 changed files with 404 additions and 410 deletions.
2 changes: 1 addition & 1 deletion .github/workflows/cmake-clang.yml
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/cmake-gcc.yml
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down
76 changes: 33 additions & 43 deletions examples/crhmc_prepare/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -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()
85 changes: 35 additions & 50 deletions examples/hpolytope-volume/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,6 @@

project( VolEsti )


CMAKE_MINIMUM_REQUIRED(VERSION 3.11)

set(CMAKE_ALLOW_LOOSE_LOOP_CONSTRUCTS true)
Expand All @@ -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()
Expand Down Expand Up @@ -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)
75 changes: 32 additions & 43 deletions examples/vpolytope-volume/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -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)
8 changes: 4 additions & 4 deletions external/cmake-files/Boost.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -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")
Expand Down
44 changes: 42 additions & 2 deletions external/cmake-files/LPSolve.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,47 @@ 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)
add_compile_options(-DLoadableBlasLib=0)

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()
2 changes: 1 addition & 1 deletion include/diagnostics/effective_sample_size.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -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);
Expand Down
2 changes: 1 addition & 1 deletion include/diagnostics/print_diagnostics.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -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));
Expand Down
Loading

0 comments on commit 93bbc50

Please sign in to comment.