问题标签 [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.
c++ - SGEMM 结果不一致
我正在使用英特尔 MKL 库中的 sgemm 函数来乘以英特尔 CPU 上的大型矩阵。
我有一个单元测试,它需要一组数据并通过各种算法运行数据。已经证明,在使用这组数据的传递之间,如果不使用 sgemm (使用非优化算法而不是有人在我公司编写的算法),结果是完全相同的。
我们得到的结果与函数返回的矩阵中的最低有效数字不一致。然后,我们使用的算法类型可能会加剧此错误。
我通过切换到 dgemm 并使用双精度值而不是单精度值来避免效果的重要性。但是,我仍然对可能导致这种不一致的原因以及为什么乘以矩阵(使用我们自己的未优化算法)不会导致此问题感兴趣。
我目前的想法是在矩阵相乘时,浮点乘法可能会乱序执行,并且因为这些浮点运算不是关联的,所以我们得到的值略有不同。
c++ - mkl_free() 的问题
我正在编写一个图像注册程序,我发现使用 mkl_free() 时出现一个奇怪的错误。我使用 MKL 函数从 MATLAB 编写了矩阵指数函数的实现 - expm()。我已经单独对其进行了测试,它可以正常工作而不会遇到任何错误。
代码可以在这里找到:https ://github.com/poliu2s/MKL/blob/master/matrix_exponential.cpp
当我从需要它进行计算的其他函数调用它时,就会出现问题。我的程序目前在我调用第一个 mkl_free() 之前就崩溃了,所以我怀疑这是某种形式的内存泄漏。但是函数中使用的矩阵不应该是自包含的吗?我看不出释放它们会如何导致我的整个程序崩溃。
调用 mkl_free_buffers(); 和 mkl_thread_free_buffers(); 没有产生我可以观察到的效果。我曾尝试在程序执行开始时以速度为代价使用 mkl_disable_fast_mm() 关闭英特尔内存管理器,但也无济于事。
我已经检查了进入函数本身的输入,并且矩阵完全有效 - 就像我在测试期间使用的一样。
当我在某些循环中调用 mkl_free(array) 时,为什么我的程序会崩溃?
c++ - Running intel mkl sample program - No such file
I am trying to run a sample file from Intel on using its mkl software with C++. However, I am unable to get it to run. As I have never used C++, I assume I am making a simple error.
Here is the Intel document instructions I followed along with the sample code. It starts on page 11.
I am running this in my terminal:
And this is my error:
I should note I am running this on my mid-2012 macbook retina.
python-2.7 - Numpy 和 Numpy-MKL 之间的区别?
我想使用 SciPy 测试一些信号处理和统计数据。所以我不得不使用scipy.signal
and scipy.stats
,但我总是得到一个错误:
ImportError: DLL load failed: The specified module could not be found.
我使用的是 Numpy 1.7.1、scipy 0.12 和 Python 2.7.3。我在网上查了一下,也在其他论坛上问过!当用 Numpy-MKL 分布切换我的 Numpy 分布时,这个问题得到了解决。
我想知道这两个库之间的区别?
python - MATLAB 的速度是 Numpy 的两倍
我是一名工程研究生,目前正在从 MATLAB 过渡到 Python,以进行数值模拟。我的印象是,对于基本的数组操作,Numpy 会和 MATLAB 一样快。但是,对于我编写的两个不同的程序,MATLAB 的速度似乎比 Numpy 快两倍。我用于 Numpy (Python 3.3) 的测试代码是:
而对于 MATLAB 2012a,我正在使用:
我使用的算法是在 NASA网站上使用的比较 Numpy 和 MATLAB 的算法。该网站显示 Numpy 在该算法的速度方面超过了 MATLAB。然而,我的结果显示 Numpy 的仿真时间为 0.49 秒,MATLAB 的仿真时间为 0.29 秒。我还在 Numpy 和 Matlab 上运行了 Gauss-Seidel 求解器,得到了类似的结果(16.5 s vs. 9.5 s)
我是 Python 的新手,在编程方面并不是非常有文化。我正在使用 WinPython 64 位 Python 发行版,但也尝试过 Pythonxy 无济于事。
我读过的应该提高性能的一件事是使用 MKL 构建 Numpy。不幸的是,我不知道如何在 Windows 上执行此操作。我什至需要这样做吗?
有什么建议么?
c++ - 如何同时使用 MKL 的并行和串行版本?
MKL 的串行和并行版本在两个不同的库中实现。库的功能具有相同的名称。所以你不能直接加载两个库并分别调用每个函数,而不会在编译时发生冲突。
我想开发一个函数的包装器(例如 OpenGL Extension Wrangler Library (GLEW)),它将为每个相同的函数提供相应的扩展,并且扩展函数将从适当的库中加载并行或顺序函数。这是一个好主意吗?你能建议点别的吗?
非常感谢。
linker - 可执行文件找不到动态链接的 mkl 库,但 ldd 可以
我有一个与 mkl 库动态链接的代码。运行代码时,它报告找不到 mkl。
但是当我使用 ldd 检查可执行文件中的动态链接库时,它显示找到了 mkl 库
知道有什么问题吗?
输出自readelf -l ./bmdl
更多调试
似乎对一个人LD_DEBUG
跑步没有影响./bmdl
。
我刚刚意识到旧的bmdl
有一个“setgid”标志,而我的新版本没有。也许这就是原因?
我setgid
从旧的bmdl
和运行中删除了该位./bmdl
并没有抱怨找不到库。现在的问题是为什么 setgid 会干扰动态链接库?
碰巧带有动态链接可执行文件的 setgid 可能会导致安全问题,并且受到 GNU glibc 的极大限制。例如,LD_LIBRARY_PATH 将被忽略。也许旧建筑以前从未工作过?!
c++ - CBLAS_ORDER 不是 gcc 的类或命名空间,但在 VS2010 (Intel C++) 中编译良好
我对 C++ 比较陌生(我主要有 C# 背景)。我已经获得了一些要从 Windows 移植到 Linux 的代码,但是虽然我可以让 Visual Studio 2010 编译它(使用 Intel C++ 编译器),但我无法让它在 linux 中与 gcc 一起工作,或 Intel C++ Linux 编译器(都给出相同的错误)。我不认为这是一个不起作用的英特尔特定功能,这就是为什么我在这里而不是在英特尔论坛上提问的原因。
我试图编译的文件 DoubleMatrixOperations.cpp 是:
编译器的输出是:
如果这是一个愚蠢的问题,请提前道歉!
谢谢,托马斯
c - 在 mkl_dss_solve 的多个实例中使用一个 LU 分解
我正在使用英特尔 MKL 库来求解(A*x = b)
具有多个右侧 (rhs) 向量的线性方程组。rhs 向量是通过单独的程序异步生成的,因此不可能一次解决所有问题。
为了加快程序速度,使用了多线程程序,其中每个线程负责求解单个 rhs 向量。由于矩阵A
总是恒定的,LU 分解应该执行一次,然后在所有线程中使用这些因子。所以,我考虑A
使用以下命令
并使用以下命令将句柄传递给线程以解决问题:
但是,我发现handle
在多个dss_solve_real
. 显然,出于某种原因,MKL 库在每个创建竞争条件的实例中更改句柄。我阅读了 MKL 手册,但找不到任何相关内容。由于对每个线程进行因式分解是不合逻辑的A
,我想知道是否有任何方法可以克服这个问题并在handle
任何地方使用相同的方法。
在此先感谢您的帮助