0

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

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

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

我们需要使用 GNU GSL 和 MATLAB 实现一些数值运算(如 FFT)。我知道可以在带有 MS VS IDE 的 Windows 操作系统上同时使用 GSL(带有 cygwin)和 MATLAB。

但是,我有以下问题:

  • 在应用程序中使用 MATLAB 库时的许可(对于 GSL 也是如此)
  • MATLAB C++ 代码和 GNU GSL 之间的性能差异(尤其是在计算 FFT 时)
  • 易用性(异常、错误处理、可测试性)

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

另外,提前谢谢

4

2 回答 2

2

如果您只是在做 FFT 和其他类似的事情,您是否考虑过Intel 的 MKLAMD 的 ACML [PDF]?两者都有 FFT。恕我直言,为获得 FFT 例程而支付 Matlab 费用是愚蠢的。只需使用良好的高性能 C++/Fortran 库即可。

话虽如此,这位先生维护了一个与 Visual Studio 一起编译的修补版本的 GSL

如果您使用 GSL,那么您必须在 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 的评估版本不包括再分发权。可重新分发的文件列表在带有产品许可证的英特尔 MKL 分发包中的 redist.txt 中提供。

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

于 2011-08-30T06:20:08.443 回答
1
  1. 你不需要 Cygwin 来使用 GSL,只需要构建它。您需要使用 MinGW GCC 来执行此操作,并使用 Cygwin 或 MSYS 作为 POSIX shell 环境来使用“配置”构建它。或者尝试找到一个预构建的版本。您应该能够使用 gendef 和 MSVC 的 lib.exe 等工具为创建的 DLL 创建导入库。这将允许您将 DLL 与 Visual Studio 编译器链接。

  2. GSL 可以做 FFT,但 FFTW 做得更好。两者都是 GPL(如果我没记错的话),因此它们将要求您的应用程序获得 GPL 兼容许可。

  3. Matlab 比 C 更容易(表面上)。但我很确定,如果使用得当,GSL 尤其是 FFTW 应该在原始性能方面击败 Matlab。

于 2011-08-29T09:57:36.933 回答