6

我即将为实时应用程序编写一个算法,其中涉及一些高维 NLP(非线性规划)。

在实现之前,我需要对我的算法进行计时,看看它是否适用于实时应用程序,因此我使用 Matlab 的内置 fmincons 作为基线。

经验表明,matlab 算法的速度往往比 C++ 算法慢,所以我想估计在这种特殊情况下我可以期待什么样的性能提升?

由于我的工作主要与实时应用程序相关,因此我很少使用 NLP(非线性编程),所以我问了我的同事,他们建议我尝试 ipopt 作为开始,我在其网站上进行了谷歌搜索,那里没有针对 Matlab 的基准,也没有太多关于他们算法细节的话题(至少在Matlab中,不难检查他们的算法细节),所以我基本上对它的准确性/鲁棒性/最优性等知之甚少。

因此,这里有关 NLP 的 C++ 实现的任何帮助都会非常有帮助,在此先感谢。

4

1 回答 1

2

许多这类问题都由大型 O(n^~3) 矩阵乘法支配。如果是这种情况并且两个系统都使用相同的算法,那么性能将相似并且不依赖于语言,因为底层矩​​阵乘法函数无论如何都将在 asm 中本地实现。

如果该算法不是由像这样的简单函数支配,而是需要大量的内存管理,那么 C++ 库将胜出很多(快 3-10 倍)。

(如果性能比许多人使用 OpenCL 将东西移植到专为此类数值计算而设计的 GPU 至关重要,并且价格/性能差异在 20-100 倍范围内。或者您可以将其移植到集群如果您需要更快。)

于 2012-11-10T15:29:15.840 回答