问题标签 [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 - 使用 mkl_malloc 进行内存对齐
这个问题可能只是表明我不了解 C 中的重要内容:
Intel Math Kernel 库提供了一种在分配内存时设置内存对齐的方法。另一方面,我只是通过引用将数组传递给 mkl lapack 例程。那么 lapack 例程是如何知道数组的对齐的呢?它必须,因为内存对齐决定了哪个内存地址是一个特定的数组值,对吗?
c++ - 优化矩阵旋转 - 关于矩阵中心的任意角度
我正在尝试优化非常大图像的旋转,最小的是 4096x4096 或约 1600 万像素。
旋转总是围绕图像的中心,图像不一定总是正方形,但总是 2 的幂。
我可以访问 MKL/TBB,其中 MKL 是针对我的目标平台优化的 BLAS。我不熟悉这个操作是否在 BLAS 中。
到目前为止,我的最佳尝试是 4096x4096 图像的大约 17-25 毫秒(对于相同的图像大小非常不一致,这意味着我可能会在缓存中全部踩踏)。矩阵是 16 字节对齐的。
现在,无法调整目标大小。因此,剪裁应该并且可以发生。例如,一个旋转 45 度的方阵肯定会在角处剪裁,并且该位置的值应该为零。
现在,我最好的尝试是使用平铺方法 - 没有优雅的瓷砖尺寸被放入,也没有循环展开。
这是我的算法,因为它使用 TBB - http://threadingbuildingblocks.org/:
我这样调用这个函数:
fcomplex 只是复数的内部表示。它被定义为:
因此,对于非常大的图像,我想尽可能快地以任意角度旋转复杂值矩阵的中心。
更新:
根据精彩的反馈,我更新了这个:大约增加了 40%。我想知道是否可以做其他事情:
更新2:我在下面提出了一个解决方案,考虑到我作为答案得到的建议以及在旋转矩形时修复了一个错误。
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,只是冒险进入新领域。
integer - 在 C++ 中使用指向无符号长整数而不是长整数的指针
我想将一个无符号整数 * 类型的指针(也定义为 std::size_t)传递给 MKL 函数,该函数期望它是 long long * ,虽然两者都是 64 位整数,但我得到类型不兼容错误。我在 64 位整数模式下使用 MKL。有什么帮助吗?谢谢
eigenvector - intel MKL:MKL lib(仅用于 C 程序)中用于求解 Ax=lambda*Bx(特征值)的函数
如何使用 MKL 找到 lambda 的值?
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 结尾。)这是否意味着我被动态困住了?为什么?我还定义了变量
成为
正如此处旧说明中所建议的那样,但没有任何改变。
哇,这太难了。
c++ - 名称修改和垃圾箱
昨天我在帮朋友编译英特尔的 MKL Java 示例。尽管一切看起来都很好(根据示例文件/makefile),但我们遇到了“未解决的外部”问题。
然后我使用 Visual Studio 的dumpbin检查库中是否存在未解析的函数。未解析外部的一个示例是一个名为_cblas_sgemm
. 当从库 ( dumpbin /symbols mkl_core.lib
) 中转储符号时,我只能cblas_sgemm
在库中找到一个函数,它错过了前缀_
。然后我发现该函数实际上只被称为 cblas_sgemm,并且编译器添加了_
前缀,作为名称修改规则的一部分。
TL;博士
所以,我的问题是:
- 是否
dumpbin
显示库中入口点的全名?或者由于某种原因它实际上“解开”了这个名字? - 这个库是自带安装包的,所以不知道是用哪个编译器编译的。不同的编译器会产生不同的名称吗?
我真的不认为我做对了。我可能在其他地方做错了什么,但我想确定这两个问题。
这里有一个没有答案的类似问题。
fortran - 从 COO 转换为 CSR 稀疏矩阵格式时对重复值求和
从 COO 格式转换为 CSR 时,如何有效地总结重复值。是否存在以 fortran 子程序编写的类似于 scipy 实现(http://docs.scipy.org/doc/scipy-0.9.0/reference/sparse.html)的东西?我正在使用英特尔的 MKL 辅助例程从 COO 转换为 CSR,但它似乎不适用于重复值。
python - 从 python 调用 MKL 的线程函数:找不到 openmp 库?
我正在使用该ctypes
模块将英特尔 MKL 加载到 python 中,然后我想调用一个需要 openmp 并行化的例程(pardiso
在我的情况下)
我在详细介绍该过程的英特尔网站上找到了这个有用的链接,我可以运行他们的示例代码,但是当我运行我自己的使用 openmp 线程函数的示例时,程序崩溃并显示消息
我强烈怀疑加载libmkl_rt.so
不会正确触发加载libiomp5.so
我尝试将英特尔 MKL 库路径(和“正常”英特尔库路径)添加到两者LD_RUN_PATH
,LD_LIBRARY_PATH
但无济于事,尽管在这些路径中同时包含 mkl 库和 openmp 库(英特尔版本)。
这里有什么魔术?
请注意,虽然我也使用numpy
,但我没有numpy
针对 mkl 构建。但我怀疑这是否重要,因为我应该能够从 mkl 调用东西而无需首先对 numpy 做任何事情。
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