您的位置:首页 > 其它

sparseLM在VS2010 win7-x64 环境下配置

2017-02-23 10:18 162 查看
sparseLM  稀疏矩阵的非线性最小二乘 LM算法。

第一步,sparseLM首先需要安装suitesparse库。参考链接:
http://blog.csdn.net/xiamentingtao/article/details/50100549#reply
这次我们重点讲解一下如何安装suitesparse库。

SuiteSparse是世界上最优秀的稀疏矩阵处理工程之一。SuiteSparse是一组C、Fortran和MATLAB函数集,用来生成空间稀疏矩阵数据。在SuiteSparse中几何多种稀疏矩阵的处理方法,包括矩阵的LU分解,QR分解,Cholesky分解,提供了解非线性方程组、实现最小二乘法等多种函数代码。

SuitSparse包含了众多的依赖库,例如:blas库、lapack库、cholmod库等,所以安装很复杂。不过值得庆幸的是,国外早有大牛已经实现了在windows,Linux或者mac等所平台上的cmake脚本,具体参考Github项目<<suitesparse-metis-for-windows>>
https://github.com/jlblancoc/suitesparse-metis-for-windows/tree/v1.3.0
打开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),

即:

[cpp] view plain copy

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的结果:



 

这样的话,就安装好了

第二步,安装sparseLM,在用CMAKE编译SparseLM的时候,需要修改一些库的名称,截图如下: 



修改后,使用VS打开,先编译splm;不要编译demo,不知为何,系统提供的demo环境有问题,后来我手动重新创建了一个工程,导入各种库,

INCLUDE:





  

LIBRARY




splm.lib

libcholmod.lib

libamd.lib

libcamd.lib

libcolamd.lib

libccolamd.lib

libcxsparse.lib

libklu.lib

libldl.lib

libspqr.lib

libumfpack.lib

metis.lib

suitesparseconfig.lib

liblapack.lib

libblas.lib

把。dll文件复制到debug路径下,完成了demo的运行。



例程解析参考:http://blog.csdn.net/u012348774/article/details/51106287
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: