Win10 VS2013 suitesparse-metis-for-windows 1.3.1

來源:互聯網
上載者:User

標籤:環境變數   bug   use   stat   一點   rate   gen   lists   message   

suitesparse-metis-for-windows 1.3.1 安裝包內附SuiteSparse 4.5.1, Metis 5.1.0和 lapack 3.4.1

Github上面由整理好的suitesparse包適合在Windows安裝 https://github.com/jlblancoc/suitesparse-metis-for-windows,並附有詳細的安裝指導,但是會有一點bug

問題1:metis/GKlib/gk_arch.h中有個bug,從C++11開始標準庫中已經支援rint函數了,VS 2013開始支援這一函數,修複方式

#ifdef __MSC__/* MSC does not have rint() function */#if (_MSC_VER < 1800)  /*visual studio 2013編譯器版本*/ #define rint(x) ((int)((x)+0.5))  #endif/* MSC does not have INFINITY defined */#ifndef INFINITY#define INFINITY FLT_MAX#endif#endif#endif

安裝後測試方式

1.在環境變數中設定SuiteSparse_DIR位置是SuiteSoarse的安裝位置,例如C:\Program Files (x86)\Suitesparse

2.測試程式

#include <iostream>  #include "Eigen/Eigen"  #include "Eigen/SPQRSupport"  using namespace Eigen;int main() {    SparseMatrix < double > A(4, 4);    std::vector < Triplet < double > > triplets;    // 初始化非零元素      int r[3] = { 0, 1, 2 };    int c[3] = { 1, 2, 2 };    double val[3] = { 6.1, 7.2, 8.3 };    for (int i = 0; i < 3; ++i)        triplets.push_back(Triplet < double >(r[i], c[i], val[i]));    // 初始化疏鬆陣列      A.setFromTriplets(triplets.begin(), triplets.end());    std::cout << "A = \n" << A << std::endl;    // 一個QR分解的執行個體      SPQR < SparseMatrix < double > > qr;    // 計算分解      qr.compute(A);    // 求一個A x = b      Vector4d b(1, 2, 3, 4);    Vector4d x = qr.solve(b);    std::cout << "x = \n" << x;    std::cout << "A x = \n" << A * x;    getchar();    return 0;}

2.相同檔案夾下的CMakeLists.txt

# -----------------------------------------------# Test CMake script for building against SuiteSparse#  http://code.google.com/p/suitesparse-metis-for-windows/# Created by Jose Luis Blanco (University of Almeria) 2013# Updated by jesnault ([email protected]) 2014-01-21# -----------------------------------------------PROJECT(CholmodExample)cmake_minimum_required(VERSION 2.8)# ------------------------------------------------------------------# Detect SuiteSparse libraries:# If not found automatically, set SuiteSparse_DIR in CMake to the # directory where SuiteSparse was built.# ------------------------------------------------------------------LIST(APPEND CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/../../cmakemodule/") # Add the directory where FindSuiteSparse.cmake module can be found.set(SuiteSparse_USE_LAPACK_BLAS ON)find_package(SuiteSparse QUIET NO_MODULE)  # 1st: Try to locate the *config.cmake file.if(NOT SuiteSparse_FOUND)        #set(SuiteSparse_VERBOSE ON)        find_package(SuiteSparse REQUIRED) # 2nd: Use FindSuiteSparse.cmake module        include_directories(${SuiteSparse_INCLUDE_DIRS})else()        message(STATUS "Find SuiteSparse : include(${USE_SuiteSparse})")        include(${USE_SuiteSparse})endif()MESSAGE(STATUS "SuiteSparse_LIBS: ${SuiteSparse_LIBRARIES}")# ------------------------------------------------------------------#   End of SuiteSparse detection# ------------------------------------------------------------------# ------------------------------------------------------------------# Declare an example program:# ------------------------------------------------------------------ADD_EXECUTABLE(cholmod-test cholmod-test.c)TARGET_LINK_LIBRARIES(cholmod-test ${SuiteSparse_LIBRARIES})

3.命名檔案夾src,並將上面兩個檔案放進去,並建立build檔案夾,利用cmake的configure和generate Visual Studio2013工程檔案,直接產生就可以(根據自己的FindSuiteSparse.cmake檔案的位置設定CMakeLists.txt中變數CMAKE_MODULE_PATH的位置)即可

4.如果不使用cmake工具,記得在VS的工程屬性中設定lapack和suitesparse庫的安裝位置,連結如下庫即可

C:\Program Files (x86)\Suitesparse\lib64\metisd.libC:\Program Files (x86)\Suitesparse\lib\suitesparseconfigd.libC:\Program Files (x86)\Suitesparse\lib\libamdd.libC:\Program Files (x86)\Suitesparse\lib\libbtfd.libC:\Program Files (x86)\Suitesparse\lib\libcamdd.libC:\Program Files (x86)\Suitesparse\lib\libccolamdd.libC:\Program Files (x86)\Suitesparse\lib\libcolamdd.libC:\Program Files (x86)\Suitesparse\lib\libcholmodd.libC:\Program Files (x86)\Suitesparse\lib\libcxsparsed.libC:\Program Files (x86)\Suitesparse\lib\libklud.libC:\Program Files (x86)\Suitesparse\lib\libldld.libC:\Program Files (x86)\Suitesparse\lib\libumfpackd.libC:\Program Files (x86)\Suitesparse\lib\libspqrd.libC:\Program Files (x86)\Suitesparse\lib\lapack_blas_windows\libblas.libC:\Program Files (x86)\Suitesparse\lib\lapack_blas_windows\liblapack.libkernel32.libuser32.libgdi32.libwinspool.libshell32.libole32.liboleaut32.libuuid.libcomdlg32.lib

#輸出結果如下b

Win10 VS2013 suitesparse-metis-for-windows 1.3.1

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.