问题标签 [intel-mkl]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
6 回答
10252 浏览

c# - 适用于 .NET /C# 和 Java 的高性能数学库

我们目前有一个使用英特尔数学内核库的 C++ 编写的高性能科学应用程序。

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

作为旁注:C++ 有英特尔 TBB库来帮助处理多线程。.NET/C# 和 Java 是否有等价物?

0 投票
1 回答
1478 浏览

eigenvector - Intel Math Kernel 中的特征值和特征向量计算

有谁知道英特尔数学核心库中用于特征值和特征向量计算的算法是什么?从链接中我可以发现,它似乎使用了 pdsyev 算法,它使用 QR 算法,在面对大矩阵​​时会恶化

如果这是真的,那么 mkl 就不是一个适合计算大规模特征值问题的库。

你怎么看?还是我误解了上面的文字?

0 投票
2 回答
1719 浏览

c++ - 英特尔 MKL 内存管理和异常

我正在试用 Intel MKL,它们似乎有自己的内存管理(C 风格)。

他们建议将他们的 MKL_malloc/MKL_free 对用于向量和矩阵,我不知道什么是处理它的好方法。原因之一是建议内存对齐至少为 16 字节,并且通过这些例程明确指定。

我过去常常依赖 auto_ptr 和 boost::smart_ptr 来忘记内存清理。

如何使用 MKL 内存管理编写异常安全程序,或者我应该只使用常规 auto_ptr 而不打扰?

提前致谢。

编辑 http://software.intel.com/sites/products/documentation/hpc/mkl/win/index.htm

这个链接可以解释我为什么提出这个问题

更新

我从下面的答案中使用了分配器的想法。这就是我现在所拥有的:

如果有人有任何建议,请随时改进。

0 投票
3 回答
1696 浏览

java - 适用于 Java 的 MKL 加速数学库

我查看了 StackOverflow 和 Google 上的相关线程,但运气不佳。我对 Java 也很陌生(我来自 C# 和 .NET 背景),所以请多多包涵。Java 世界中可用的东西太多了,令人难以抗拒。

我开始了一个新的 Java-on-Linux 项目,该项目需要一些繁重且高度重复的数值计算(即统计、FFT、线性代数、矩阵等)。因此,最大化数学运算的性能是一项要求,同时确保数学是正确的。因此,我有兴趣找到一个可能利用本机加速(如 MKL)的 Java 库,并且已经过验证(因此这里绝对有可能使用商业选项)。

在 .NET 领域,有高度优化和 MKL 加速的商业数学库,例如 Centerspace NMath 和 Extreme Optimization。Java有什么可比的吗?

我为 Java 找到的大多数数学库要么似乎没有得到积极维护(例如 Colt),要么似乎没有利用 MKL 或其他本机加速(例如 Apache Commons Math)。

我曾考虑尝试自己直接从 Java 中利用 MKL(例如 JNI),但我是 Java 新手(更不用说 Java 和本机库之间的互操作了),找到一个已经正确、有效地完成此任务的 Java 库似乎更聪明,并且是证明。

如果我犯了错误或被误导(即使是关于我提到的任何库)以及我对 Java 产品的无知,我再次道歉。对于来自高度商业化的 Microsoft 堆栈的我来说,这是一个全新的世界,因此我很容易在查看我提到的 Java 库的位置和问题上搞错。我将不胜感激任何帮助或建议。

0 投票
1 回答
1939 浏览

numpy - 多核 ATLAS 线性代数和 openmpi 与 python

我在多 CPU/核心机器上使用mpi4py和 openmpi 来做线性代数。我的 numpy 是使用ATLAS构建的。假设我有一台 4 核机器,我想运行一个 4 节点 python 脚本,它使用 numpy 在每个节点上执行线性代数。

如何确保 ATLAS 在每个节点中进行线性代数时不使用多个内核?当我构建 ATLAS 时,似乎没有选择将其配置为一次仅在一个内核上运行。使用 Intel MKL,我认为您可以设置 OMP_NUM_THREADS=1,并且这种行为是有保证的。有没有办法为此目的构建 ATLAS?似乎没有等效的环境变量。

我猜想在多核 CPU 的每个核心上同时运行多个 BLAS 操作并不是一个好策略。任何人都可以对此发表评论或给出经验法则,这是一个好主意还是坏主意?

0 投票
1 回答
600 浏览

fortran - 英特尔 VML 添加速度很慢

我写了这个比较简单的向量数学函数的小子程序,用循环执行:

或直接:

或使用英特尔 MKL VML:

vdAdd(n,a,b,f)

n=50000000 的时序结果为:

VML 0.9 秒直接 0.4 循环 0.4

而且我不明白,为什么 VML 花费的时间是其他方法的两倍!(循环有时比直接更快)

子程序可以在http://paste.ideaslabs.com/show/L6dVLdAOIf下找到 并通过调用

0 投票
2 回答
2331 浏览

c++ - 矩阵向量倍数与 dgemm

我在我的代码中做了大量的矩阵向量乘法。我发现我的幼稚实现在 MKL10 中击败了 cblas_dgemm。我自己猜测为什么会出现这种情况是 dgemm 执行 alpha*A *B + beta *C 而我只执行 A*B。但是幼稚的实现要好得多(约 3 倍加速)。任何想法为什么会这样?

这是矩阵向量乘数的实现:

0 投票
2 回答
1612 浏览

c++ - C/C++ Matlab 编译器与 MKL

通过 Matlab mcc 公开为 C/C++ dll 的 Matlab 数值例程与数学内核库中的等效例程之间是否存在显着的性能差异?

我对线性最小二乘求解器(例如 ?gels 和傅立叶变换例程)的性能特别感兴趣。

0 投票
2 回答
3159 浏览

fortran - 带有简单 MKL BLAS 例程的 Fortran 双精度程序

在尝试在一个简单的程序中混合精度 - 使用实数和双精度 - 并使用 BLAS 的 ddot 例程,我为双精度部分提出了不正确的输出。这是代码:

我尝试使用 MKL BLAS 库同时编译 gfortran 和 ifort,如下所示:

输出是:

如何让 ddot 例程正确处理双精度值?

此外,添加 -autodouble 标志 (ifort) 或 -fdefault-real-8 (gfortran) 标志会使两个 ddot 例程都工作,但 sdot 例程会失败。

编辑: 我添加了隐式 none 语句,以及 ddot 和 sdot 函数的两个类型语句。如果没有为函数调用指定类型,则 ddot 被隐式键入为单精度实数。

0 投票
1 回答
3162 浏览

blas - 无法链接英特尔 MKL

我无法正确链接我的程序。我使用以下命令行,但出现错误。

输出是这样的:

我还尝试运行一个脚本,该脚本尝试将所有 .a 文件逐一链接,但它们都失败了。任何人都可以提出一个解决方案。谢谢。