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

歡迎訪問 生活随笔!

生活随笔

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

windows

windows 安装metis_Eigen+suitesparse for windows 安装

發布時間:2024/1/23 windows 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 windows 安装metis_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項目<>

打開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

#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 ;

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

總結

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

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