问题标签 [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 投票
1 回答
1924 浏览

c - 使用 mkl_malloc 进行内存对齐

这个问题可能只是表明我不了解 C 中的重要内容:

Intel Math Kernel 库提供了一种在分配内存时设置内存对齐的方法。另一方面,我只是通过引用将数组传递给 mkl lapack 例程。那么 lapack 例程是如何知道数组的对齐的呢?它必须,因为内存对齐决定了哪个内存地址是一个特定的数组值,对吗?

0 投票
3 回答
2365 浏览

c++ - 优化矩阵旋转 - 关于矩阵中心的任意角度

我正在尝试优化非常大图像的旋转,最小的是 4096x4096 或约 1600 万像素。

旋转总是围绕图像的中心,图像不一定总是正方形,但总是 2 的幂。

我可以访问 MKL/TBB,其中 MKL 是针对我的目标平台优化的 BLAS。我不熟悉这个操作是否在 BLAS 中。

到目前为止,我的最佳尝试是 4096x4096 图像的大约 17-25 毫秒(对于相同的图像大小非常不一致,这意味着我可能会在缓存中全部踩踏)。矩阵是 16 字节对齐的。

现在,无法调整目标大小。因此,剪裁应该并且可以发生。例如,一个旋转 45 度的方阵肯定会在角处剪裁,并且该位置的值应该为零。

现在,我最好的尝试是使用平铺方法 - 没有优雅的瓷砖尺寸被放入,也没有循环展开。

这是我的算法,因为它使用 TBB - http://threadingbuildingblocks.org/

我这样调用这个函数:

fcomplex 只是复数的内部表示。它被定义为:

因此,对于非常大的图像,我想尽可能快地以任意角度旋转复杂值矩阵的中心。

更新:

根据精彩的反馈,我更新了这个:大约增加了 40%。我想知道是否可以做其他事情:

更新2:我在下面提出了一个解决方案,考虑到我作为答案得到的建议以及在旋转矩形时修复了一个错误。

0 投票
2 回答
960 浏览

c++ - 用于对 SIMD/SSE 表达式进行惰性求值的 C/C++ 库

诸如 intel-MKL或 amd-之类的库为ACML向量上的 SIMD 操作提供了更简单的接口,但我想将几个函数链接在一起。是否有现成的库,我可以在其中为表达式注册解析树

然后对数组的所有成员进行评估?我要避免的是创建一个临时数组tanh(x),exp(x)tanh(x) + exp(x) 通过调用 mkl 或 acml 函数来tanh(),exp()+.

我可以手动展开循环并直接使用 sse 指令,但想知道是否有 C++ 库可以为您执行此操作,即

我是一个新手,以前从未使用过 SSE 或 MKL/ACML,只是冒险进入新领域。

0 投票
1 回答
654 浏览

integer - 在 C++ 中使用指向无符号长整数而不是长整数的指针

我想将一个无符号整数 * 类型的指针(也定义为 std::size_t)传递给 MKL 函数,该函数期望它是 long long * ,虽然两者都是 64 位整数,但我得到类型不兼容错误。我在 64 位整数模式下使用 MKL。有什么帮助吗?谢谢

0 投票
1 回答
457 浏览

eigenvector - intel MKL:MKL lib(仅用于 C 程序)中用于求解 Ax=lambda*Bx(特征值)的函数

如何使用 MKL 找到 lambda 的值?

0 投票
2 回答
3465 浏览

xcode - 无法将英特尔数学核心函数库链接到 Xcode,因为没有 Intel_MKL.framework 文件夹

我正在尝试在运行 Mac OSX 10.6.6 和 Xcode 3.2.6 的 64 位 Mac 上使用 Intel Math Kernel Library (MKL)。对于 Mac,英特尔 MKL 只能通过安装完整的英特尔 Composer XE 2011 C++ 编译器来使用。我已经这样做了,我运行了 bash 脚本

为 Composer XE 和 MKL 设置环境变量。我能够使用编译器在 Xcode 中构建简单的测试项目。

但是,我无法使用 MKL,因为我无法将其链接到 Xcode中,如此处所述。我没有该超链接中描述的 MKL 框架文件夹

(具体来说,我的系统上的任何地方都没有标题为 Intel_MKL.framework 的文件夹。)英特尔的几本 MKL 参考手册中提到了检查以确保该文件夹存在,但他们没有告诉你如果不存在该怎么做'不存在!如果您已正确安装 MKL,似乎假定它存在,但我有(“Composer XE 安装成功”)并且没有 Intel_MKL.framework。

如果重要的话,我得到的错误是

我理解这与没有正确链接是一致的。

我花了很多时间和精力试图获得帮助,包括英特尔论坛,但无济于事。我怀疑这是一个简单的问题(我只是一个业余爱好者)。

非常感谢您的帮助。


编辑:

在 Paul 的建议下,我重新运行了安装程序,没有任何变化。唯一的 mkl.h 文件位于

以及非 Xcode 安装目录中预期的相同副本

我不知道这是否是我应该在 Xcode 的“标题搜索路径”下列出的内容,但我很久以前就列出了它。我也列出了

作为“库搜索路径”,我根据阅读此2011 指南的最佳尝试添加了这些链接器标志:

什么都没有改变,我得到同样的错误:

他的问题可能出在动态与静态链接上吗?我选择了静态链接(.a 结尾而不是 .dylib),因为它看起来更简单,但我不知道。更改为动态并没有做任何事情。

反正有反馈,在这里?我不知道根据这个错误要改变什么。


编辑2:

我刚刚在 Xcode“项目信息”(可能是 100 个选项之一)中找到了一个我不知道存在的选项“使用英特尔数学内核库”。(我应该在哪里找到这个?)现在事情正在建设中,但是当我运行可执行文件时,我得到了

我已经仔细检查了库搜索目录是否正确。我还尝试切换以 .a 结尾的静态库,但错误完全相同。(仍然有 .dylib 结尾。)这是否意味着我被动态困住了?为什么?我还定义了变量

成为

正如此处旧说明中所建议的那样,但没有任何改变。

哇,这太难了。

0 投票
1 回答
1987 浏览

c++ - 名称修改和垃圾箱

昨天我在帮朋友编译英特尔的 MKL Java 示例。尽管一切看起来都很好(根据示例文件/makefile),但我们遇到了“未解决的外部”问题。

然后我使用 Visual Studio 的dumpbin检查库中是否存在未解析的函数。未解析外部的一个示例是一个名为_cblas_sgemm. 当从库 ( dumpbin /symbols mkl_core.lib) 中转储符号时,我只能cblas_sgemm在库中找到一个函数,它错过了前缀_。然后我发现该函数实际上只被称为 cblas_sgemm,并且编译器添加了_前缀,作为名称修改规则的一部分。

TL;博士

所以,我的问题是:

  1. 是否dumpbin显示库中入口点的全名?或者由于某种原因它实际上“解开”了这个名字?
  2. 这个库是自带安装包的,所以不知道是用哪个编译器编译的。不同的编译器会产生不同的名称吗?

我真的不认为我做对了。我可能在其他地方做错了什么,但我想确定这两个问题。

这里有一个没有答案的类似问题。

0 投票
1 回答
1227 浏览

fortran - 从 COO 转换为 CSR 稀疏矩阵格式时对重复值求和

从 COO 格式转换为 CSR 时,如何有效地总结重复值。是否存在以 fortran 子程序编写的类似于 scipy 实现(http://docs.scipy.org/doc/scipy-0.9.0/reference/sparse.html)的东西?我正在使用英特尔的 MKL 辅助例程从 COO 转换为 CSR,但它似乎不适用于重复值。

0 投票
1 回答
2120 浏览

python - 从 python 调用 MKL 的线程函数:找不到 openmp 库?

我正在使用该ctypes模块将英特尔 MKL 加载到 python 中,然后我想调用一个需要 openmp 并行化的例程(pardiso在我的情况下)

我在详细介绍该过程的英特尔网站上找到了这个有用的链接,我可以运行他们的示例代码,但是当我运行我自己的使用 openmp 线程函数的示例时,程序崩溃并显示消息

我强烈怀疑加载libmkl_rt.so不会正确触发加载libiomp5.so

我尝试将英特尔 MKL 库路径(“正常”英特尔库路径)添加到两者LD_RUN_PATHLD_LIBRARY_PATH但无济于事,尽管在这些路径中同时包含 mkl 库和 openmp 库(英特尔版本)。

这里有什么魔术?

请注意,虽然我也使用numpy,但我没有numpy针对 mkl 构建。但我怀疑这是否重要,因为我应该能够从 mkl 调用东西而无需首先对 numpy 做任何事情。

0 投票
0 回答
1333 浏览

c++ - 英特尔 MKL 函数错误 (C++)

我试图测试英特尔的 MKL 速度,但它给出了一个警告和一个错误,因为,

.cpp 文件:

编辑:

链接器的命令行:

/OUT:"C:\Users\Orxan\videos\documents\visual studio 2010\Projects\arrTut\Release\arrTut.exe" /NOLOGO "kernel32.lib" "user32.lib" "gdi32.lib" "winspool.lib" "comdlg32.lib" "advapi32.lib" "shell32.lib" "ole32.lib" "oleaut32.lib" "uuid.lib" "odbc32.lib" "odbccp32.lib" /MANIFEST /ManifestFile:"Release\arrTut.exe.intermediate.manifest" /ALLOWISOLATION /MANIFESTUAC:"level='asInvoker' uiAccess='false'" /DEBUG /PDB:"C:\Users\Orxan\videos\documents\visual studio 2010\Projects\arrTut\Release\arrTut.pdb" /OPT:REF /OPT:ICF /PGD:"C:\Users\Orxan\videos\documents\visual studio 2010\Projects\arrTut\Release\arrTut.pgd" /LTCG /TLBID:1 /DYNAMICBASE /NXCOMPAT /MACHINE:X86

编译器命令行:

/Zi /nologo /W3 /O2 /Ob2 /Oi /Ot /Oy /Qipo /GA /Qparallel /D "_MBCS" /EHsc /GS /Gy /fp:fast /Zc:wchar_t /Zc:forScope /Fp"Release\arrTut.pch" /Fa"Release\" /Fo"Release\" /Fd"Release\vc100.pdb" /Gr