GNU GSL & MATLAB on Windows



这个问题实际上是关于GSL和MATLAB之间的权衡。首先,让我定义一些变量:

 - Target OS: Windows XP 
 - Target IDE: MS VS 2005/2008 
 - Software: Commercial 
 - Development Language: C++

此外,我之所以问这个问题,是因为我找不到关于这两种方法的易用性、许可、性能标准的完整答案。

我们需要使用GNU GSL和MATLAB实现一些数值运算(如FFT)。我知道这是可能使用GSL(与cygwin)和MATLAB在Windows操作系统与MS VS ide。

但是,我有以下问题:

  • 许可当我在应用程序中使用MATLAB库时(与GSL相同)
  • 性能 MATLAB c++代码与GNU GSL之间的差异(特别是在计算FFT时)
  • 易用性(异常,错误处理,可测试性)

如果你能阐明实施决策的路径,那就太好了。

还有,提前感谢

如果你只是在做FFT和其他类似的事情,你有没有考虑过英特尔的MKL或AMD的ACML[PDF]?都有FFT。支付Matlab只是为了得到FFT例程是,恕我直言,愚蠢的。只需使用一个好的高性能c++/Fortran库。

话虽如此,这位先生维护了一个GSL的补丁版本,可以用Visual Studio编译

如果您使用GPL,那么您必须根据GPL进行许可

如果我想发布一个使用GSL的应用程序,我需要使用什么许可证?GNU通用公共许可证(GPL)。商业用户的底线:

GSL can be used internally ("in-house") without restriction, but only redistributed in other software that is under the GNU GPL.

英特尔的MKL有一个许可协议,这可能是你正在寻找的。

我可以重新分发英特尔数学内核库与我的应用程序?是的。当您购买英特尔MKL时,您将获得与您的应用程序一起重新分发英特尔MKL计算部分的权利。评估版本的英特尔MKL不包括再分发的权利。可以重新分发的文件列表在redist.txt中提供,该文件包含在带有产品许可证的Intel MKL发行版中。

我不太确定ACML的许可证,但我相信发行它是要花钱的。

  1. 您不需要Cygwin来使用GSL,只需要构建它。您需要使用MinGW GCC来完成此操作,并使用Cygwin或MSYS作为POSIX shell环境来使用"configure"来构建它。或者尝试找到一个预构建的版本。您应该能够使用gendef和MSVC的lib.exe等工具为创建的dll创建一个导入库。这将允许你将DLL与Visual Studio编译器链接。

  2. GSL可以做FFT,但FFTW做得更好。两者都是GPL(如果我没弄错的话),所以他们会要求你的应用程序是GPL兼容许可。

  3. Matlab比c更容易(表面上),但我很肯定,如果使用正确,GSL,特别是FFTW应该在原始性能方面击败Matlab。

最新更新