【问题标题】:High-performance Math library for .NET /C# and Java [closed].NET/C# 和 Java 的高性能数学库 [关闭]
【发布时间】:2010-12-13 03:24:16
【问题描述】:

我们目前有一个用 C++ 编写的高性能科学应用程序,它使用了Intel Math Kernel Library

我们正在考虑编写一个用 Java 和 .NET/C# 编写的基准应用程序来比较性能差异。为此,我们还需要一个好的(首选商业的)数学库。有人知道 Java/C# 的任何数学等效库吗?

附带说明:C++ 有 Intel TBB 库来帮助处理多线程。 .NET/C# 和 Java 有什么等价的吗?

【问题讨论】:

  • 您是否考虑过为 C# 和 Java 的 C++ 库编写一个包装器?
  • Java 有 java.util.concurrent 和子包。我对 TBB 不太熟悉,但这是 Sun 的线程处理方式。
  • @Aaron:是的..我也想过这个问题。谢谢你的评论。

标签: c# java c++ tbb intel-mkl


【解决方案1】:

我可以在 C# 方面提供帮助:

这是另一个讨论 various C# math libraries 的 SO 问题

您可以查看PLINQ 以获得 C# 多线程帮助。

【讨论】:

  • 嘿..谢谢你的链接。顺便说一句..你在科学界吗?如果是这样,你在工作中使用 C# 吗?你有任何 C#(高性能)数学库的经验吗?
  • 我编写了一个名为 Micro Saint Sharp 的离散事件模拟应用程序。 7 年前,我们从 C 切换到 C#。表演很棒。我不使用任何外部数学库。我们唯一使用的特殊数学类是用于计算各种随机分布,它的性能从来都不是模拟瓶颈。
  • 我很惊讶 C# 的性能与 C 不相上下。很高兴听到这个消息!
  • 我们之前的引擎是用C编写的,但是模拟脚本引擎是被解释的。现在仿真是用C#编译的,所以性能是旧系统的1000倍左右。我怀疑经过仔细调整的 C 会在很多非常繁重的数学运算上击败 C#。
  • 是的,我发现线性代数的 C# 和手动调整的 SIMDified 微优化 C 之间的差异大约是 10 倍。但这是特例。
【解决方案2】:

对于java:

http://acs.lbl.gov/~hoschek/colt/

希望对你有帮助。

【讨论】:

  • 那个项目好像很久没有更新了(从2004年开始?)
【解决方案3】:

Math.NET Numerics 支持单声道

【讨论】:

    【解决方案4】:

    大声笑..为什么我以前没有想到这个?

    只需在 Java 和 .NET 中使用英特尔 MKL 数学库!

    查看以下链接:

    【讨论】:

    • 主要论点是生成的 C# 代码不再可移植到例如mono/linux 因为它依赖于在 CLR 之外运行的 API/DLL。
    • 感谢您的好主意。我在英特尔 MKL 论坛上发布了一个问题,以查看 MKL linux 版本是否适用于 Mono 实现。如果没有,他们的计划是什么。再次感谢。
    • @the-locster:英特尔回应说不支持 Mono。所以男人..太糟糕了。
    【解决方案5】:

    ALGLIB是一个跨平台的数值分析和数据处理库。而且它是免费的——ALGLIB 是在 GPL 许可(版本 2 或更高版本)下分发的。它包含:

    微分方程

    线性方程

    矩阵和向量运算,特征值和特征向量

    数值积分、插值与拟合、优化

    FFT、卷积、相关

    统计:通用算法、假设检验

    数据分析:分类、回归、其他任务

    特殊功能

    【讨论】:

      【解决方案6】:

      SuanShu 是大量数值算法的集合。它得到了很好的支持。它有 Java 和免费的 C# 版本。

      【讨论】:

        猜你喜欢
        • 2010-10-06
        • 2015-07-08
        • 1970-01-01
        • 1970-01-01
        • 2011-08-04
        • 1970-01-01
        • 2010-12-06
        • 2021-01-04
        • 1970-01-01
        相关资源
        最近更新 更多