当前位置: 首页 > 工具软件 > SuiteSparse > 使用案例 >

关于suitesparse在windows平台下速度极慢以及奇奇怪怪的问题解决

盖晋
2023-12-01

前言

好像suitesparse原本没有windows版本,然后国外一个大佬写了cmake搞出来的。所以可能存在一些奇奇怪怪的问题吧。主要是一下两点

1.windows相比linux环境速度奇慢。

2.新手编译这个库经常会下载suitesparse-metis-for-windows-1.3.0但是1.3.0有一个小问题,就是使用cholmod的时候会报Input Error:Incorrect objective type,我用的时候虽然对结果、性能没有造成任何影响,但是会觉得不爽。

关于如何编译这个库可以去看上面的github链接,里面的readme说的很清楚了,还有这位大佬的博客也有中文版的。

解决方法

关于第一个问题,在windows环境下速度极慢的原因主要是blas的不同实现造成性能差距过大,我们只需要把suitesparse里面的libblas.lib换成OpenBLAS或者其它高性能BLAS实现就ok了
在编译vs环境的OpenBLAS库教程
记得把旧的lib另外保存,新的名字换成libblas.lib

第二个问题的话,用suitesparse-metis-for-windows-1.5.0就可以了,好像1.3.1也解决了。
然后安装官网上的教程编译1.5.0会有一个报错,解决方法就是把gk_arch.h最后一段代码改成下面的代码就可以了

//#ifdef __MSC__
/* MSC does not have rint() function */
#if(_MSC_VER < 1800)
#define rint(x) ((int)((x)+0.5))  
//#endif

/* MSC does not have INFINITY defined */
#ifndef INFINITY
//#if(_MSC_VER < 1900)
#define INFINITY FLT_MAX
//#endif
#endif
#endif

#endif
 类似资料: