日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > windows >内容正文

windows

Eigen+suitesparse for windows 安装

發布時間:2023/12/10 windows 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Eigen+suitesparse for windows 安装 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Eigen是著名的C++矩陣運算庫,提供了許多矩陣運算的接口,主要包括兩大部分,一部分是稠密矩陣,另一部分是稀疏矩陣。Eigen以源碼形式提供給大家,用的時候,只要將源碼包含在項目的包含路徑上,具體安裝和使用方法,可以參考如下鏈接:

《C++矩陣處理工具——Eigen》,《Eigen初步1:初步體驗Eigen庫》。

這次我們重點講解一下如何安裝suitesparse庫。

SuiteSparse是世界上最優秀的稀疏矩陣處理工程之一。SuiteSparse是一組C、Fortran和MATLAB函數集,用來生成空間稀疏矩陣數據。在SuiteSparse中幾何多種稀疏矩陣的處理方法,包括矩陣的LU分解,QR分解,Cholesky分解,提供了解非線性方程組、實現最小二乘法等多種函數代碼。

SuitSparse包含了眾多的依賴庫,例如:blas庫、lapack庫、cholmod庫等,所以安裝很復雜。不過值得慶幸的是,國外早有大牛已經實現了在windows,linux或者mac等所平臺上的cmake腳本,具體參考Github項目<<suitesparse-metis-for-windows>>

?打開Github,會發現作者已經寫了詳細的安裝流程,不過經過我親測,還是有很多的陷阱。所以我將一步步地將所有的步驟給大家講清楚,希望大家也能將自己學習歷程中一些重要的知識分享出來,共建我們的開源社區。

先說一下我的配置:

? ? Windows 7 SP1, Visual studio 2008, cmake ?2.8.

下面正式開始:

1. 安裝Cmake

2. ?下載或克隆Gthub上最新的項目版本,本版本為v1.3.0,然后解壓到某個本地文件下,我們暫稱這個路徑為SP_ROOT,我這里是F:\suitsparse\suitesparse-metis-vs2008

我的如圖所示:

? ?


這里注意:我們看到Gtihub上建議我們分別下載?SuiteSparse-X.Y.Z.tar.gz和?metis-X.Y.Z.tar.gz.(建議metis版本在5以下,比如metis-4.0.3,或者不要覆蓋它),然后覆蓋它原來所含的源代碼。這里我覺得有點矛盾,因為我們打開https://github.com/jlblancoc/suitesparse-metis-for-windows/releases,就會看到v1.3.0的更新說明:

  • For the convenience of users, SuiteSparse+METIS souces are now also bundled in this package.
  • Support for CUDA builds (Enable?WITH_CUDA)
所以根本沒有必要下載上面兩個文件,用它的就可以了。當然了,你重新下載兩個文件,并覆蓋原來的文件也是可行的。只要你按照它的說明去做即可。(再說一遍,最好不要覆蓋這兩個文件)

3. ?打開?SP_ROOT/metis/CMakeLists.txt,在行project(METIS)后面加上命令 cmake_policy(SET CMP0022 NEW),

即:

cmake_minimum_required(VERSION 2.8) project(METIS) cmake_policy(SET CMP0022 NEW) set(GKLIB_PATH "GKlib" CACHE PATH "path to GKlib") set(SHARED FALSE CACHE BOOL "build a shared library")if(MSVC)set(METIS_INSTALL FALSE) else()set(METIS_INSTALL TRUE) endif()# Configure libmetis library. if(SHARED)set(METIS_LIBRARY_TYPE SHARED) else()set(METIS_LIBRARY_TYPE STATIC) endif(SHARED)include(${GKLIB_PATH}/GKlibSystem.cmake) # Add include directories. include_directories(${GKLIB_PATH}) include_directories(include) # Recursively look for CMakeLists.txt in subdirs. add_subdirectory("include") add_subdirectory("libmetis") add_subdirectory("programs") 另外,如果你要使用CUDA,注意版本,具體見圖:


4. ?運行?CMake?(cmake-gui),

然后:

  • ? ?設置"Source code"為SP_ROOT
  • ?設置"Build" 路徑為任何空的路徑,一般SP_ROOT/build
  • ??"Configure"。
  • ? ?然后你會發現有很多紅的地方,你可以點擊它們,再"Configure",尤其注意的是為了避免一些編譯器中關于復數可能會出 ? ? ?錯,HAVE_COMPLEX?被關閉。(但是經過我在平臺上再三測試,你最好不要去勾,否則很容易在后面的編譯階段發生錯誤.)
  • ?按?"Generate"?
如圖: 5.編譯和安裝Visual Studio,打開SuiteSparseProject.sln,并且建立Debug 和Release兩種模式下的INSTALL?工程(設為啟動項目)。

可能會出現很多的警告,不過一切都是OK的。 6.注意?SuiteSparseConfig.cmake應該位于install路徑下,它將用于你的項目正確地連接到SuiteSparse 如圖即為cmake的結果:


這樣的話,就安裝好了。我們接下來,就可以使用了。我們是在Eigen中使用這個庫的,因為Eigen已經封裝了它的接口。

舉例:

#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 = bVector4d b ( 1 , 2 , 3 , 4 ) ;Vector4d x = qr . solve ( b ) ;std :: cout << "x = \n" << x ;std :: cout << "A x = \n" << A * x ;return 0 ; }
具體可參考:< Eigen 3.2稀疏矩陣入門>。

使用方法:

?安裝好Eigen,將源程序路徑加入vs2008的C++包含路徑中,如圖:



然后加入剛才編譯的SuiteSparse庫的相關文件。見圖:


在項目-》屬性-》C/c++ -》常規?-》附加包含目錄中,加入SP_ROOT\build\install\include和SP_ROOT\build\install\include\suitesparse

鏈接器-》常規-》附加庫目錄,加入SP_ROOT\build\install\lib,?SP_ROOT\build\install\lib\lapack_blas_windows

,SP_ROOT\build\install\lib64,SP_ROOT\build\lib\Debug

如圖:


鏈接器-》輸入-》附加依賴項,加入:

debug模式下:

libamdd.lib
libbtfd.lib
libcamdd.lib
libccolamdd.lib
libcholmodd.lib
libcolamdd.lib
libcxsparsed.lib
libklud.lib
libldld.lib
libspqrd.lib
libumfpackd.lib
suitesparseconfigd.lib
libblas.lib
liblapack.lib
metisd.lib

注意以上為debug模式下,Release模式下同理加入相對的lib。

Release模式下:

libamd.lib

libbtf.lib

libcamd.lib

libccolamd.lib

libcholmod.lib

libcolamd.lib

libcxsparse.lib

libklu.lib

libldl.lib

libspqr.lib

metis.lib

suitesparseconfig.lib

libblas.lib

liblapack.lib


最后在生成的debug文件下加入如下dll,

libblas.dll

libgcc_s_dw2-1.dll

libgfortran-3.dll

liblapack.dll

libquadmath-0.dll

可以在SP_ROOT\build\install\lib\lapack_blas_windows中找到,復制即可。

這樣就可以運行了,結果為:



附:
我編譯的庫:

  • vs2008:?http://pan.baidu.com/s/1bnme4Rd
  • vs2010: ??http://pan.baidu.com/s/1dDr0bj7
  • vs2008測試例子:http://pan.baidu.com/s/1jGCU6lK
  • vs2010測試例子:http://pan.baidu.com/s/1qWL5MW0


總結

以上是生活随笔為你收集整理的Eigen+suitesparse for windows 安装的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。